ETH Price: $2,932.03 (+1.03%)
Gas: 5 Gwei

Token

Gelato Network Token (GEL)
 

Overview

Max Total Supply

420,690,000 GEL

Holders

3,581 ( -0.056%)

Total Transfers

-

Market

Price

$0.27 @ 0.000091 ETH (+1.02%)

Onchain Market Cap

$112,031,850.45

Circulating Supply Market Cap

$64,204,847.00

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Automated smart contract executions on Ethereum.

Market

Volume (24H):$223,933.00
Market Capitalization:$64,204,847.00
Circulating Supply:241,269,990.00 GEL
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Gel

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-09-06
*/

// GEL token forked from Uniswap UNI Token contract: https://etherscan.io/address/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984#code
pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Gel {
    /// @notice EIP-20 token name for this token
    string public constant name = "Gelato Network Token";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "GEL";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 420_690_000e18; // 420,690,000.00 Gel

    /// @notice Address which may mint new tokens
    address public minter;

    /// @notice The timestamp after which minting may occur
    uint public mintingAllowedAfter;

    /// @notice Minimum time between mints
    uint32 public constant minimumTimeBetweenMints = 1 days * 365;

    /// @notice Cap on the percentage of totalSupply that can be minted at each mint
    uint8 public mintCap = 100;

    bool public isMintCapImmutable = false;

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when the minter address is changed
    event MinterChanged(address minter, address newMinter);

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new Gel token
     * @param account The initial account to grant all the tokens
     * @param minter_ The account with minting ability
     * @param mintingAllowedAfter_ The timestamp after which minting may occur
     */
    constructor(address account, address minter_, uint mintingAllowedAfter_) public {
        require(mintingAllowedAfter_ >= block.timestamp, "Gel::constructor: minting can only begin after deployment");

        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
        minter = minter_;
        emit MinterChanged(address(0), minter);
        mintingAllowedAfter = mintingAllowedAfter_;
    }

    /**
     * @notice Change the minter address
     * @param minter_ The address of the new minter
     */
    function setMinter(address minter_) external {
        require(msg.sender == minter, "Gel::setMinter: only the minter can change the minter address");
        emit MinterChanged(minter, minter_);
        minter = minter_;
    }

    /**
     * @notice Change mintCap property to immutable, can be called once.
     * @param _mintCap final minCap
     */
    function setImmutableMintCap(uint8 _mintCap) external {
        require(msg.sender == minter, "Gel::setImmutableMintCap: only the minter can change mintCap to immutable");
        require(!isMintCapImmutable, "Gel::setImmutableMintCap: minCap is immutable");
        isMintCapImmutable = true;
        mintCap = _mintCap;
    }

    /**
     * @notice Mint new tokens
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to be minted
     */
    function mint(address dst, uint rawAmount) external {
        require(msg.sender == minter, "Gel::mint: only the minter can mint");
        require(block.timestamp >= mintingAllowedAfter, "Gel::mint: minting not allowed yet");
        require(dst != address(0), "Gel::mint: cannot transfer to the zero address");

        // record the mint
        mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints);

        // mint the amount
        uint96 amount = safe96(rawAmount, "Gel::mint: amount exceeds 96 bits");
        require(amount <= SafeMath.div(SafeMath.mul(totalSupply, mintCap), 100), "Gel::mint: exceeded mint cap");
        totalSupply = safe96(SafeMath.add(totalSupply, amount), "Gel::mint: totalSupply exceeds 96 bits");

        // transfer the amount to the recipient
        balances[dst] = add96(balances[dst], amount, "Gel::mint: transfer amount overflows");
        emit Transfer(address(0), dst, amount);

        // move delegates
        _moveDelegates(address(0), delegates[dst], amount);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Gel::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Gel::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Gel::permit: invalid signature");
        require(signatory == owner, "Gel::permit: unauthorized");
        require(now <= deadline, "Gel::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "Gel::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "Gel::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Gel::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Gel::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Gel::delegateBySig: invalid nonce");
        require(now <= expiry, "Gel::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "Gel::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "Gel::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Gel::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Gel::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Gel::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "Gel::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "Gel::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "Gel::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMintCapImmutable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintCap","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"_mintCap","type":"uint8"}],"name":"setImmutableMintCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526b015bfc9298de952e2f4000006000556003805461ff001960ff199091166064171690553480156200003557600080fd5b506040516200368038038062003680833981016040819052620000589162000185565b42811015620000845760405162461bcd60e51b81526004016200007b9062000287565b60405180910390fd5b600080546001600160a01b0385168083526005602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000f2919062000299565b60405180910390a3600180546001600160a01b0319166001600160a01b0384811691909117918290556040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f692620001519260009291169062000261565b60405180910390a160025550620003009050565b80516200017281620002db565b92915050565b80516200017281620002f5565b6000806000606084860312156200019b57600080fd5b6000620001a9868662000165565b9350506020620001bc8682870162000165565b9250506040620001cf8682870162000178565b9150509250925092565b620001e481620002c7565b82525050565b620001e481620002b2565b600062000204603983620002a9565b7f47656c3a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e81527f6c7920626567696e206166746572206465706c6f796d656e7400000000000000602082015260400192915050565b620001e481620002c4565b60408101620002718285620001d9565b620002806020830184620001ea565b9392505050565b602080825281016200017281620001f5565b6020810162000172828462000256565b90815260200190565b60006001600160a01b03821662000172565b90565b6000620001728260006200017282620002b2565b620002e681620002b2565b8114620002f257600080fd5b50565b620002e681620002c4565b61337080620003106000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636fcfff4511610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461039c578063e7a324dc146103af578063f1127ed8146103b7578063fca3b5aa146103d8576101cf565b8063a9059cbb14610350578063b4b5ea5714610363578063c3cda52014610376578063d505accf14610389576101cf565b8063782d6fe1116100de578063782d6fe11461030d5780637ecebe001461032d5780638fabec231461034057806395d89b4114610348576101cf565b80636fcfff45146102df57806370a08231146102f257806376c71ca114610305576101cf565b806330adf81f1161017157806340c10f191161014b57806340c10f1914610291578063587cde1e146102a45780635c11d62f146102b75780635c19a95c146102cc576101cf565b806330adf81f1461026c57806330b36cef14610274578063313ce5671461027c576101cf565b80630d379aef116101ad5780630d379aef1461022757806318160ddd1461023c57806320606b701461025157806323b872dd14610259576101cf565b806306fdde03146101d457806307546172146101f2578063095ea7b314610207575b600080fd5b6101dc6103eb565b6040516101e99190612eab565b60405180910390f35b6101fa610424565b6040516101e99190612d7e565b61021a6102153660046123e1565b610440565b6040516101e99190612da7565b61023a6102353660046124c8565b610565565b005b61024461065d565b6040516101e99190612db5565b610244610663565b61021a6102673660046122f8565b61067a565b61024461081e565b61024461082a565b610284610830565b6040516101e99190613005565b61023a61029f3660046123e1565b610835565b6101fa6102b2366004612298565b610b21565b6102bf610b49565b6040516101e99190612fdc565b61023a6102da366004612298565b610b51565b6102bf6102ed366004612298565b610b5e565b610244610300366004612298565b610b76565b610284610bac565b61032061031b3660046123e1565b610bb5565b6040516101e99190613021565b61024461033b366004612298565b610e97565b61021a610ea9565b6101dc610eb7565b61021a61035e3660046123e1565b610ef0565b610320610371366004612298565b610f2c565b61023a610384366004612411565b610fda565b61023a610397366004612345565b61125f565b6102446103aa3660046122be565b611694565b6102446116da565b6103ca6103c5366004612498565b6116e6565b6040516101e9929190612fea565b61023a6103e6366004612298565b611721565b6040518060400160405280601481526020017f47656c61746f204e6574776f726b20546f6b656e00000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561049257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104b7565b6104b4836040518060600160405280602481526020016132e96024913961180d565b90505b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610551908590613013565b60405180910390a360019150505b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612fbc565b60405180910390fd5b600354610100900460ff1615610601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f6c565b600380546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b60005481565b60405161066f90612d68565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926106e492889291906132e99083013961180d565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561073057506bffffffffffffffffffffffff82811614155b1561080457600061075a83836040518060600160405280603c8152602001613287603c913961185f565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600460209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107fa908590613013565b60405180910390a3505b61080f8787836118c2565b600193505050505b9392505050565b60405161066f90612d5d565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f3c565b6002544210156108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f7c565b73ffffffffffffffffffffffffffffffffffffffff821661090f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612ecc565b61091d426301e13380611b29565b60028190555060006109478260405180606001604052806021815260200161330d6021913961180d565b60005460035491925061096891610961919060ff16611b68565b6064611bbc565b816bffffffffffffffffffffffff1611156109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f9c565b6109ea6109cc600054836bffffffffffffffffffffffff16611b29565b6040518060600160405280602681526020016132c36026913961180d565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff8516815260056020908152604091829020548251606081019093526024808452610a4e949190911692859290919061319090830139611bfe565b73ffffffffffffffffffffffffffffffffffffffff841660008181526005602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae2908590613013565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040812054610b1c921683611c59565b505050565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610b5b3382611ea0565b50565b60086020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600560205260409020546bffffffffffffffffffffffff1690565b60035460ff1681565b6000438210610bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612ebc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205463ffffffff1680610c2b57600091505061055f565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610d035773ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061055f565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832083805290915290205463ffffffff16831015610d4b57600091505061055f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610e3f57600282820363ffffffff16048103610d9b612255565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260076020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610e1a5760200151945061055f9350505050565b805163ffffffff16871115610e3157819350610e38565b6001820392505b5050610d71565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60096020526000908152604090205481565b600354610100900460ff1681565b6040518060400160405280600381526020017f47454c000000000000000000000000000000000000000000000000000000000081525081565b600080610f15836040518060600160405280602581526020016131b46025913961180d565b9050610f223385836118c2565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205463ffffffff1680610f64576000610817565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610fe890612d68565b60408051918290038220828201909152601482527f47656c61746f204e6574776f726b20546f6b656e0000000000000000000000006020909201919091527ff480d52212479be4b1ab62c80890c86523d3ff35a766ffea594c6b9e3a49b43761104f611f54565b306040516020016110639493929190612e5b565b604051602081830303815290604052805190602001209050600060405161108990612d73565b6040519081900381206110a4918a908a908a90602001612e1d565b604051602081830303815290604052805190602001209050600082826040516020016110d1929190612d2c565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161110e9493929190612e90565b6020604051602081039080840390855afa158015611130573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166111a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f2c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600960205260409020805460018101909155891461120e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612eec565b87421115611248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612fcc565b611252818b611ea0565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156112b057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6112d5565b6112d28660405180606001604052806023815260200161322f6023913961180d565b90505b60006040516112e390612d68565b60408051918290038220828201909152601482527f47656c61746f204e6574776f726b20546f6b656e0000000000000000000000006020909201919091527ff480d52212479be4b1ab62c80890c86523d3ff35a766ffea594c6b9e3a49b43761134a611f54565b3060405160200161135e9493929190612e5b565b604051602081830303815290604052805190602001209050600060405161138490612d5d565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d166000908152600960209081529290208054600181019091556113d39391928e928e928e9290918e9101612dc3565b60405160208183030381529060405280519060200120905060008282604051602001611400929190612d2c565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161143d9493929190612e90565b6020604051602081039080840390855afa15801561145f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f1c565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461153c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f8c565b88421115611576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612fac565b84600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161167e9190613013565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526004602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161066f90612d73565b600760209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff163314611772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f4c565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916117be9173ffffffffffffffffffffffffffffffffffffffff909116908490612d8c565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff831661190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f0c565b73ffffffffffffffffffffffffffffffffffffffff821661195c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612efc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600560209081526040918290205482516060810190935260358084526119b9936bffffffffffffffffffffffff90921692859291906132529083013961185f565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f808452611a4b949190911692859290919061320090830139611bfe565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ae2908590613013565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040808220548584168352912054610b1c92918216911683611c59565b600082820183811015610817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612edc565b600082611b775750600061055f565b82820282848281611b8457fe5b0414610817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f5c565b600061081783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f58565b6000838301826bffffffffffffffffffffffff8087169083161015611c50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ca357506000816bffffffffffffffffffffffff16115b15610b1c5773ffffffffffffffffffffffffffffffffffffffff831615611da65773ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205463ffffffff169081611cfd576000611d6d565b73ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d9482856040518060600160405280602781526020016131d96027913961185f565b9050611da286848484611fa9565b5050505b73ffffffffffffffffffffffffffffffffffffffff821615610b1c5773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081205463ffffffff169081611dfb576000611e6b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611e92828560405180606001604052806026815260200161316a60269139611bfe565b905061125785848484611fa9565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260066020818152604080842080546005845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611f4e828483611c59565b50505050565b4690565b60008183611f93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b506000838581611f9f57fe5b0495945050505050565b6000611fcd4360405180606001604052806033815260200161313760339139612213565b905060008463ffffffff16118015612041575073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156120e05773ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff8516021790556121bc565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600783528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600890935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161220492919061302f565b60405180910390a25050505050565b6000816401000000008410611857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b604080518082019091526000808252602082015290565b803561055f81613107565b803561055f8161311b565b803561055f81613124565b803561055f8161312d565b6000602082840312156122aa57600080fd5b60006122b6848461226c565b949350505050565b600080604083850312156122d157600080fd5b60006122dd858561226c565b92505060206122ee8582860161226c565b9150509250929050565b60008060006060848603121561230d57600080fd5b6000612319868661226c565b935050602061232a8682870161226c565b925050604061233b86828701612277565b9150509250925092565b600080600080600080600060e0888a03121561236057600080fd5b600061236c8a8a61226c565b975050602061237d8a828b0161226c565b965050604061238e8a828b01612277565b955050606061239f8a828b01612277565b94505060806123b08a828b0161228d565b93505060a06123c18a828b01612277565b92505060c06123d28a828b01612277565b91505092959891949750929550565b600080604083850312156123f457600080fd5b6000612400858561226c565b92505060206122ee85828601612277565b60008060008060008060c0878903121561242a57600080fd5b6000612436898961226c565b965050602061244789828a01612277565b955050604061245889828a01612277565b945050606061246989828a0161228d565b935050608061247a89828a01612277565b92505060a061248b89828a01612277565b9150509295509295509295565b600080604083850312156124ab57600080fd5b60006124b7858561226c565b92505060206122ee85828601612282565b6000602082840312156124da57600080fd5b60006122b6848461228d565b6124ef8161305c565b82525050565b6124ef81613067565b6124ef8161306c565b6124ef6125138261306c565b61306c565b60006125238261304a565b61252d818561304e565b935061253d8185602086016130b3565b612546816130df565b9093019392505050565b600061255d60268361304e565b7f47656c3a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b60006125bc602e8361304e565b7f47656c3a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b600061261b600283613057565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612654601b8361304e565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061268d60218361304e565b7f47656c3a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126ec60398361304e565b7f47656c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b600061274b603b8361304e565b7f47656c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006127aa601e8361304e565b7f47656c3a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b60006127e360258361304e565b7f47656c3a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612842605283613057565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b60006128c760238361304e565b7f47656c3a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612926603d8361304e565b7f47656c3a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612985604383613057565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612a0a60218361304e565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612a69602d8361304e565b7f47656c3a3a736574496d6d757461626c654d696e744361703a206d696e43617081527f20697320696d6d757461626c6500000000000000000000000000000000000000602082015260400192915050565b6000612ac860228361304e565b7f47656c3a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612b2760198361304e565b7f47656c3a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b6000612b60601c8361304e565b7f47656c3a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612b99601e8361304e565b7f47656c3a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612bd260498361304e565b7f47656c3a3a736574496d6d757461626c654d696e744361703a206f6e6c79207481527f6865206d696e7465722063616e206368616e6765206d696e7443617020746f2060208201527f696d6d757461626c650000000000000000000000000000000000000000000000604082015260600192915050565b6000612c57603a83613057565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612cb660258361304e565b7f47656c3a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6124ef81613088565b6124ef81613091565b6124ef816130a8565b6124ef81613097565b6000612d378261260e565b9150612d438285612507565b602082019150612d538284612507565b5060200192915050565b600061055f82612835565b600061055f82612978565b600061055f82612c4a565b6020810161055f82846124e6565b60408101612d9a82856124e6565b61081760208301846124e6565b6020810161055f82846124f5565b6020810161055f82846124fe565b60c08101612dd182896124fe565b612dde60208301886124e6565b612deb60408301876124e6565b612df860608301866124fe565b612e0560808301856124fe565b612e1260a08301846124fe565b979650505050505050565b60808101612e2b82876124fe565b612e3860208301866124e6565b612e4560408301856124fe565b612e5260608301846124fe565b95945050505050565b60808101612e6982876124fe565b612e7660208301866124fe565b612e8360408301856124fe565b612e5260608301846124e6565b60808101612e9e82876124fe565b612e386020830186612d11565b602080825281016108178184612518565b6020808252810161055f81612550565b6020808252810161055f816125af565b6020808252810161055f81612647565b6020808252810161055f81612680565b6020808252810161055f816126df565b6020808252810161055f8161273e565b6020808252810161055f8161279d565b6020808252810161055f816127d6565b6020808252810161055f816128ba565b6020808252810161055f81612919565b6020808252810161055f816129fd565b6020808252810161055f81612a5c565b6020808252810161055f81612abb565b6020808252810161055f81612b1a565b6020808252810161055f81612b53565b6020808252810161055f81612b8c565b6020808252810161055f81612bc5565b6020808252810161055f81612ca9565b6020810161055f8284612d08565b60408101612ff88285612d08565b6108176020830184612d23565b6020810161055f8284612d11565b6020810161055f8284612d1a565b6020810161055f8284612d23565b6040810161303d8285612d1a565b6108176020830184612d1a565b5190565b90815260200190565b919050565b600061055f8261306f565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061055f82613097565b60005b838110156130ce5781810151838201526020016130b6565b83811115611f4e5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6131108161305c565b8114610b5b57600080fd5b6131108161306c565b61311081613088565b6131108161309156fe47656c3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747347656c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777347656c3a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f777347656c3a3a7472616e736665723a20616d6f756e742065786365656473203936206269747347656c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777347656c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777347656c3a3a7065726d69743a20616d6f756e742065786365656473203936206269747347656c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636547656c3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636547656c3a3a6d696e743a20746f74616c537570706c792065786365656473203936206269747347656c3a3a617070726f76653a20616d6f756e742065786365656473203936206269747347656c3a3a6d696e743a20616d6f756e7420657863656564732039362062697473a365627a7a72315820ae3be6162d2054573dccc375b0b450b5b83cf372927a9fe3c1e4fc7e596963b06c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000163407fda1a93941358c1bfda39a868599553b6d000000000000000000000000163407fda1a93941358c1bfda39a868599553b6d000000000000000000000000000000000000000000000000000000006501dc80

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636fcfff4511610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461039c578063e7a324dc146103af578063f1127ed8146103b7578063fca3b5aa146103d8576101cf565b8063a9059cbb14610350578063b4b5ea5714610363578063c3cda52014610376578063d505accf14610389576101cf565b8063782d6fe1116100de578063782d6fe11461030d5780637ecebe001461032d5780638fabec231461034057806395d89b4114610348576101cf565b80636fcfff45146102df57806370a08231146102f257806376c71ca114610305576101cf565b806330adf81f1161017157806340c10f191161014b57806340c10f1914610291578063587cde1e146102a45780635c11d62f146102b75780635c19a95c146102cc576101cf565b806330adf81f1461026c57806330b36cef14610274578063313ce5671461027c576101cf565b80630d379aef116101ad5780630d379aef1461022757806318160ddd1461023c57806320606b701461025157806323b872dd14610259576101cf565b806306fdde03146101d457806307546172146101f2578063095ea7b314610207575b600080fd5b6101dc6103eb565b6040516101e99190612eab565b60405180910390f35b6101fa610424565b6040516101e99190612d7e565b61021a6102153660046123e1565b610440565b6040516101e99190612da7565b61023a6102353660046124c8565b610565565b005b61024461065d565b6040516101e99190612db5565b610244610663565b61021a6102673660046122f8565b61067a565b61024461081e565b61024461082a565b610284610830565b6040516101e99190613005565b61023a61029f3660046123e1565b610835565b6101fa6102b2366004612298565b610b21565b6102bf610b49565b6040516101e99190612fdc565b61023a6102da366004612298565b610b51565b6102bf6102ed366004612298565b610b5e565b610244610300366004612298565b610b76565b610284610bac565b61032061031b3660046123e1565b610bb5565b6040516101e99190613021565b61024461033b366004612298565b610e97565b61021a610ea9565b6101dc610eb7565b61021a61035e3660046123e1565b610ef0565b610320610371366004612298565b610f2c565b61023a610384366004612411565b610fda565b61023a610397366004612345565b61125f565b6102446103aa3660046122be565b611694565b6102446116da565b6103ca6103c5366004612498565b6116e6565b6040516101e9929190612fea565b61023a6103e6366004612298565b611721565b6040518060400160405280601481526020017f47656c61746f204e6574776f726b20546f6b656e00000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561049257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104b7565b6104b4836040518060600160405280602481526020016132e96024913961180d565b90505b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610551908590613013565b60405180910390a360019150505b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612fbc565b60405180910390fd5b600354610100900460ff1615610601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f6c565b600380546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b60005481565b60405161066f90612d68565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926106e492889291906132e99083013961180d565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561073057506bffffffffffffffffffffffff82811614155b1561080457600061075a83836040518060600160405280603c8152602001613287603c913961185f565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600460209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107fa908590613013565b60405180910390a3505b61080f8787836118c2565b600193505050505b9392505050565b60405161066f90612d5d565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f3c565b6002544210156108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f7c565b73ffffffffffffffffffffffffffffffffffffffff821661090f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612ecc565b61091d426301e13380611b29565b60028190555060006109478260405180606001604052806021815260200161330d6021913961180d565b60005460035491925061096891610961919060ff16611b68565b6064611bbc565b816bffffffffffffffffffffffff1611156109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f9c565b6109ea6109cc600054836bffffffffffffffffffffffff16611b29565b6040518060600160405280602681526020016132c36026913961180d565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff8516815260056020908152604091829020548251606081019093526024808452610a4e949190911692859290919061319090830139611bfe565b73ffffffffffffffffffffffffffffffffffffffff841660008181526005602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ae2908590613013565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040812054610b1c921683611c59565b505050565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610b5b3382611ea0565b50565b60086020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600560205260409020546bffffffffffffffffffffffff1690565b60035460ff1681565b6000438210610bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612ebc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205463ffffffff1680610c2b57600091505061055f565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610d035773ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061055f565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832083805290915290205463ffffffff16831015610d4b57600091505061055f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610e3f57600282820363ffffffff16048103610d9b612255565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260076020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610e1a5760200151945061055f9350505050565b805163ffffffff16871115610e3157819350610e38565b6001820392505b5050610d71565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60096020526000908152604090205481565b600354610100900460ff1681565b6040518060400160405280600381526020017f47454c000000000000000000000000000000000000000000000000000000000081525081565b600080610f15836040518060600160405280602581526020016131b46025913961180d565b9050610f223385836118c2565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205463ffffffff1680610f64576000610817565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610fe890612d68565b60408051918290038220828201909152601482527f47656c61746f204e6574776f726b20546f6b656e0000000000000000000000006020909201919091527ff480d52212479be4b1ab62c80890c86523d3ff35a766ffea594c6b9e3a49b43761104f611f54565b306040516020016110639493929190612e5b565b604051602081830303815290604052805190602001209050600060405161108990612d73565b6040519081900381206110a4918a908a908a90602001612e1d565b604051602081830303815290604052805190602001209050600082826040516020016110d1929190612d2c565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161110e9493929190612e90565b6020604051602081039080840390855afa158015611130573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166111a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f2c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600960205260409020805460018101909155891461120e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612eec565b87421115611248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612fcc565b611252818b611ea0565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156112b057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6112d5565b6112d28660405180606001604052806023815260200161322f6023913961180d565b90505b60006040516112e390612d68565b60408051918290038220828201909152601482527f47656c61746f204e6574776f726b20546f6b656e0000000000000000000000006020909201919091527ff480d52212479be4b1ab62c80890c86523d3ff35a766ffea594c6b9e3a49b43761134a611f54565b3060405160200161135e9493929190612e5b565b604051602081830303815290604052805190602001209050600060405161138490612d5d565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d166000908152600960209081529290208054600181019091556113d39391928e928e928e9290918e9101612dc3565b60405160208183030381529060405280519060200120905060008282604051602001611400929190612d2c565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161143d9493929190612e90565b6020604051602081039080840390855afa15801561145f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f1c565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461153c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f8c565b88421115611576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612fac565b84600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161167e9190613013565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526004602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161066f90612d73565b600760209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff163314611772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f4c565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916117be9173ffffffffffffffffffffffffffffffffffffffff909116908490612d8c565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff831661190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f0c565b73ffffffffffffffffffffffffffffffffffffffff821661195c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612efc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600560209081526040918290205482516060810190935260358084526119b9936bffffffffffffffffffffffff90921692859291906132529083013961185f565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f808452611a4b949190911692859290919061320090830139611bfe565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ae2908590613013565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040808220548584168352912054610b1c92918216911683611c59565b600082820183811015610817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612edc565b600082611b775750600061055f565b82820282848281611b8457fe5b0414610817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612f5c565b600061081783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f58565b6000838301826bffffffffffffffffffffffff8087169083161015611c50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ca357506000816bffffffffffffffffffffffff16115b15610b1c5773ffffffffffffffffffffffffffffffffffffffff831615611da65773ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205463ffffffff169081611cfd576000611d6d565b73ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d9482856040518060600160405280602781526020016131d96027913961185f565b9050611da286848484611fa9565b5050505b73ffffffffffffffffffffffffffffffffffffffff821615610b1c5773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081205463ffffffff169081611dfb576000611e6b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611e92828560405180606001604052806026815260200161316a60269139611bfe565b905061125785848484611fa9565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260066020818152604080842080546005845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611f4e828483611c59565b50505050565b4690565b60008183611f93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b506000838581611f9f57fe5b0495945050505050565b6000611fcd4360405180606001604052806033815260200161313760339139612213565b905060008463ffffffff16118015612041575073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156120e05773ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff8516021790556121bc565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600783528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600890935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161220492919061302f565b60405180910390a25050505050565b6000816401000000008410611857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69190612eab565b604080518082019091526000808252602082015290565b803561055f81613107565b803561055f8161311b565b803561055f81613124565b803561055f8161312d565b6000602082840312156122aa57600080fd5b60006122b6848461226c565b949350505050565b600080604083850312156122d157600080fd5b60006122dd858561226c565b92505060206122ee8582860161226c565b9150509250929050565b60008060006060848603121561230d57600080fd5b6000612319868661226c565b935050602061232a8682870161226c565b925050604061233b86828701612277565b9150509250925092565b600080600080600080600060e0888a03121561236057600080fd5b600061236c8a8a61226c565b975050602061237d8a828b0161226c565b965050604061238e8a828b01612277565b955050606061239f8a828b01612277565b94505060806123b08a828b0161228d565b93505060a06123c18a828b01612277565b92505060c06123d28a828b01612277565b91505092959891949750929550565b600080604083850312156123f457600080fd5b6000612400858561226c565b92505060206122ee85828601612277565b60008060008060008060c0878903121561242a57600080fd5b6000612436898961226c565b965050602061244789828a01612277565b955050604061245889828a01612277565b945050606061246989828a0161228d565b935050608061247a89828a01612277565b92505060a061248b89828a01612277565b9150509295509295509295565b600080604083850312156124ab57600080fd5b60006124b7858561226c565b92505060206122ee85828601612282565b6000602082840312156124da57600080fd5b60006122b6848461228d565b6124ef8161305c565b82525050565b6124ef81613067565b6124ef8161306c565b6124ef6125138261306c565b61306c565b60006125238261304a565b61252d818561304e565b935061253d8185602086016130b3565b612546816130df565b9093019392505050565b600061255d60268361304e565b7f47656c3a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b60006125bc602e8361304e565b7f47656c3a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b600061261b600283613057565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612654601b8361304e565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061268d60218361304e565b7f47656c3a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126ec60398361304e565b7f47656c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b600061274b603b8361304e565b7f47656c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006127aa601e8361304e565b7f47656c3a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b60006127e360258361304e565b7f47656c3a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612842605283613057565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b60006128c760238361304e565b7f47656c3a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612926603d8361304e565b7f47656c3a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612985604383613057565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612a0a60218361304e565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612a69602d8361304e565b7f47656c3a3a736574496d6d757461626c654d696e744361703a206d696e43617081527f20697320696d6d757461626c6500000000000000000000000000000000000000602082015260400192915050565b6000612ac860228361304e565b7f47656c3a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612b2760198361304e565b7f47656c3a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b6000612b60601c8361304e565b7f47656c3a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612b99601e8361304e565b7f47656c3a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612bd260498361304e565b7f47656c3a3a736574496d6d757461626c654d696e744361703a206f6e6c79207481527f6865206d696e7465722063616e206368616e6765206d696e7443617020746f2060208201527f696d6d757461626c650000000000000000000000000000000000000000000000604082015260600192915050565b6000612c57603a83613057565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612cb660258361304e565b7f47656c3a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6124ef81613088565b6124ef81613091565b6124ef816130a8565b6124ef81613097565b6000612d378261260e565b9150612d438285612507565b602082019150612d538284612507565b5060200192915050565b600061055f82612835565b600061055f82612978565b600061055f82612c4a565b6020810161055f82846124e6565b60408101612d9a82856124e6565b61081760208301846124e6565b6020810161055f82846124f5565b6020810161055f82846124fe565b60c08101612dd182896124fe565b612dde60208301886124e6565b612deb60408301876124e6565b612df860608301866124fe565b612e0560808301856124fe565b612e1260a08301846124fe565b979650505050505050565b60808101612e2b82876124fe565b612e3860208301866124e6565b612e4560408301856124fe565b612e5260608301846124fe565b95945050505050565b60808101612e6982876124fe565b612e7660208301866124fe565b612e8360408301856124fe565b612e5260608301846124e6565b60808101612e9e82876124fe565b612e386020830186612d11565b602080825281016108178184612518565b6020808252810161055f81612550565b6020808252810161055f816125af565b6020808252810161055f81612647565b6020808252810161055f81612680565b6020808252810161055f816126df565b6020808252810161055f8161273e565b6020808252810161055f8161279d565b6020808252810161055f816127d6565b6020808252810161055f816128ba565b6020808252810161055f81612919565b6020808252810161055f816129fd565b6020808252810161055f81612a5c565b6020808252810161055f81612abb565b6020808252810161055f81612b1a565b6020808252810161055f81612b53565b6020808252810161055f81612b8c565b6020808252810161055f81612bc5565b6020808252810161055f81612ca9565b6020810161055f8284612d08565b60408101612ff88285612d08565b6108176020830184612d23565b6020810161055f8284612d11565b6020810161055f8284612d1a565b6020810161055f8284612d23565b6040810161303d8285612d1a565b6108176020830184612d1a565b5190565b90815260200190565b919050565b600061055f8261306f565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061055f82613097565b60005b838110156130ce5781810151838201526020016130b6565b83811115611f4e5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6131108161305c565b8114610b5b57600080fd5b6131108161306c565b61311081613088565b6131108161309156fe47656c3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747347656c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777347656c3a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f777347656c3a3a7472616e736665723a20616d6f756e742065786365656473203936206269747347656c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777347656c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777347656c3a3a7065726d69743a20616d6f756e742065786365656473203936206269747347656c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636547656c3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636547656c3a3a6d696e743a20746f74616c537570706c792065786365656473203936206269747347656c3a3a617070726f76653a20616d6f756e742065786365656473203936206269747347656c3a3a6d696e743a20616d6f756e7420657863656564732039362062697473a365627a7a72315820ae3be6162d2054573dccc375b0b450b5b83cf372927a9fe3c1e4fc7e596963b06c6578706572696d656e74616cf564736f6c63430005100040

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000163407fda1a93941358c1bfda39a868599553b6d000000000000000000000000163407fda1a93941358c1bfda39a868599553b6d000000000000000000000000000000000000000000000000000000006501dc80

-----Decoded View---------------
Arg [0] : account (address): 0x163407FDA1a93941358c1bfda39a868599553b6D
Arg [1] : minter_ (address): 0x163407FDA1a93941358c1bfda39a868599553b6D
Arg [2] : mintingAllowedAfter_ (uint256): 1694620800

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000163407fda1a93941358c1bfda39a868599553b6d
Arg [1] : 000000000000000000000000163407fda1a93941358c1bfda39a868599553b6d
Arg [2] : 000000000000000000000000000000000000000000000000000000006501dc80


Deployed Bytecode Sourcemap

6766:17677:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6766:17677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6836:52;;;:::i;:::-;;;;;;;;;;;;;;;;7270:21;;;:::i;:::-;;;;;;;;13699:418;;;;;;;;;:::i;:::-;;;;;;;;11216:332;;;;;;;;;:::i;:::-;;7148:40;;;:::i;:::-;;;;;;;;8539:122;;;:::i;16779:670::-;;;;;;;;;:::i;8962:137::-;;;:::i;7361:31::-;;;:::i;7049:35::-;;;:::i;:::-;;;;;;;;11723:1058;;;;;;;;;:::i;7989:45::-;;;;;;;;;:::i;7445:61::-;;;:::i;:::-;;;;;;;;17597:102;;;;;;;;;:::i;8417:49::-;;;;;;;;;:::i;15860:108::-;;;;;;;;;:::i;7601:26::-;;;:::i;19773:1217::-;;;;;;;;;:::i;:::-;;;;;;;;9180:39;;;;;;;;;:::i;7636:38::-;;;:::i;6949:37::-;;;:::i;16232:237::-;;;;;;;;;:::i;19120:222::-;;;;;;;;;:::i;18133:786::-;;;;;;;;;:::i;14607:1050::-;;;;;;;;;:::i;13085:136::-;;;;;;;;;:::i;8755:117::-;;;:::i;8278:70::-;;;;;;;;;:::i;:::-;;;;;;;;;10848:231;;;;;;;;;:::i;6836:52::-;;;;;;;;;;;;;;;;;;;:::o;7270:21::-;;;;;;:::o;13699:418::-;13767:4;13784:13;13830:2;13812:9;:21;13808:172;;;-1:-1:-1;13866:2:0;13808:172;;;13911:57;13918:9;13911:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;13902:66;;13808:172;14003:10;13992:22;;;;:10;:22;;;;;;;;;:31;;;;;;;;;;;:40;;;;;;;;;;14050:37;;13992:31;;14003:10;14050:37;;;;13992:40;;14050:37;;;;;;;;;;14105:4;14098:11;;;13699:418;;;;;:::o;11216:332::-;11303:6;;;;11289:10;:20;11281:106;;;;;;;;;;;;;;;;;;;;;;11407:18;;;;;;;11406:19;11398:77;;;;;;;;;;;;;;11486:18;:25;;;;;;;;11522:18;;11486:25;11522:18;;;;;;;;;;11216:332::o;7148:40::-;;;;:::o;8539:122::-;8581:80;;;;;;;;;;;;;;8539:122;:::o;16779:670::-;16943:15;;;16861:4;16943:15;;;:10;:15;;;;;;;;16896:10;16943:24;;;;;;;;;;16994:57;;;;;;;;;;;;16896:10;;16943:24;;;;;16861:4;;16994:57;;17001:9;;16994:57;;;;;;;:6;:57::i;:::-;16978:73;;17079:3;17068:14;;:7;:14;;;;:48;;;;-1:-1:-1;17086:30:0;;;;;;17068:48;17064:310;;;17133:19;17155:95;17161:16;17179:6;17155:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;17265:15;;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;;;;;;;;17326:36;17265:39;;-1:-1:-1;17265:24:0;;17326:36;;;;17265:39;;17326:36;;;;;;;;;;17064:310;;17386:33;17402:3;17407;17412:6;17386:15;:33::i;:::-;17437:4;17430:11;;;;;16779:670;;;;;;:::o;8962:137::-;9004:95;;;;;;7361:31;;;;:::o;7049:35::-;7082:2;7049:35;:::o;11723:1058::-;11808:6;;;;11794:10;:20;11786:68;;;;;;;;;;;;;;11892:19;;11873:15;:38;;11865:85;;;;;;;;;;;;;;11969:17;;;11961:76;;;;;;;;;;;;;;12100:54;12113:15;7494:12;12100;:54::i;:::-;12078:19;:76;;;;12195:13;12211:54;12218:9;12211:54;;;;;;;;;;;;;;;;;:6;:54::i;:::-;12320:11;;12333:7;;12195:70;;-1:-1:-1;12294:53:0;;12307:34;;12320:11;12333:7;;12307:12;:34::i;:::-;12343:3;12294:12;:53::i;:::-;12284:6;:63;;;;12276:104;;;;;;;;;;;;;;12405:83;12412:33;12425:11;;12438:6;12412:33;;:12;:33::i;:::-;12405:83;;;;;;;;;;;;;;;;;:6;:83::i;:::-;12391:97;;;;:11;:97;;;12572:13;;;;;:8;:13;;;;;;;;;;12566:68;;;;;;;;;;;;;;12572:13;;;;;12587:6;;12566:68;;;;;;;;:5;:68::i;:::-;12550:13;;;;;;;:8;:13;;;;;;:84;;;;;;;;;;;;;;;;12650:33;;12550:13;;;12650:33;;;;12676:6;;12650:33;;;;;;;;;;12750:14;;;;12746:1;12750:14;;;:9;:14;;;;;;12723:50;;12750:14;12766:6;12723:14;:50::i;:::-;11723:1058;;;:::o;7989:45::-;;;;;;;;;;;;;;;:::o;7445:61::-;7494:12;7445:61;:::o;17597:102::-;17659:32;17669:10;17681:9;17659;:32::i;:::-;17597:102;:::o;8417:49::-;;;;;;;;;;;;;;;:::o;15860:108::-;15943:17;;15919:4;15943:17;;;:8;:17;;;;;;;;;15860:108::o;7601:26::-;;;;;;:::o;19773:1217::-;19852:6;19893:12;19879:11;:26;19871:77;;;;;;;;;;;;;;19983:23;;;19961:19;19983:23;;;:14;:23;;;;;;;;20021:17;20017:58;;20062:1;20055:8;;;;;20017:58;20135:20;;;;;;;:11;:20;;;;;;;;:38;20156:16;;;20135:38;;;;;;;;;:48;;:63;-1:-1:-1;20131:147:0;;20222:20;;;;;;;:11;:20;;;;;;;;20243:16;;;;;20222:38;;;;;;;;:44;;;;;;;-1:-1:-1;20215:51:0;;20131:147;20339:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;20335:88:0;;;20410:1;20403:8;;;;;20335:88;20435:12;20477:16;;;20504:428;20519:5;20511:13;;:5;:13;;;20504:428;;;20583:1;20566:13;;;20565:19;;;20557:27;;20626:20;;:::i;:::-;-1:-1:-1;20649:20:0;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;20626:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20696:27;;20692:229;;;20751:8;;;;-1:-1:-1;20744:15:0;;-1:-1:-1;;;;20744:15:0;20692:229;20785:12;;:26;;;-1:-1:-1;20781:140:0;;;20840:6;20832:14;;20781:140;;;20904:1;20895:6;:10;20887:18;;20781:140;20504:428;;;;;-1:-1:-1;20949:20:0;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;19773:1217:0;;;;:::o;9180:39::-;;;;;;;;;;;;;:::o;7636:38::-;;;;;;;;;:::o;6949:37::-;;;;;;;;;;;;;;;;;;;:::o;16232:237::-;16297:4;16314:13;16330:58;16337:9;16330:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;16314:74;;16399:40;16415:10;16427:3;16432:6;16399:15;:40::i;:::-;-1:-1:-1;16457:4:0;;16232:237;-1:-1:-1;;;16232:237:0:o;19120:222::-;19226:23;;;19185:6;19226:23;;;:14;:23;;;;;;;;19267:16;:67;;19333:1;19267:67;;;19286:20;;;;;;;:11;:20;;;;;;;;19307:16;;;19286:38;;;;;;;;;:44;;;;;;19260:74;19120:222;-1:-1:-1;;;19120:222:0:o;18133:786::-;18249:23;8581:80;;;;;;;;;;;;;;;;18329:4;;;;;;;;;;;;;;;;;;18313:22;18337:12;:10;:12::i;:::-;18359:4;18285:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18285:80:0;;;18275:91;;;;;;18249:117;;18377:18;8801:71;;;;;;;;;;;;;;;18408:57;;18440:9;;18451:5;;18458:6;;18408:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18408:57:0;;;18398:68;;;;;;18377:89;;18477:14;18533:15;18550:10;18504:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18504:57:0;;;18494:68;;;;;;18477:85;;18573:17;18593:26;18603:6;18611:1;18614;18617;18593:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;18593:26:0;;;;;;-1:-1:-1;;18638:23:0;;;18630:73;;;;;;;;;;;;;;18731:17;;;;;;;:6;:17;;;;;:19;;;;;;;;18722:28;;18714:74;;;;;;;;;;;;;;18814:6;18807:3;:13;;18799:63;;;;;;;;;;;;;;18880:31;18890:9;18901;18880;:31::i;:::-;18873:38;;;;18133:786;;;;;;;:::o;14607:1050::-;14737:13;14783:2;14765:9;:21;14761:171;;;-1:-1:-1;14819:2:0;14761:171;;;14864:56;14871:9;14864:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;14855:65;;14761:171;14944:23;8581:80;;;;;;;;;;;;;;;;15024:4;;;;;;;;;;;;;;;;;;15008:22;15032:12;:10;:12::i;:::-;15054:4;14980:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14980:80:0;;;14970:91;;;;;;14944:117;;15072:18;9004:95;;;;;;;;;;;;;;;;15158:13;;;;;;;:6;:13;;;;;;;:15;;;;;;;;15103:81;;9004:95;;15131:5;;15138:7;;15147:9;;15158:15;;15175:8;;15103:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15103:81:0;;;15093:92;;;;;;15072:113;;15196:14;15252:15;15269:10;15223:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15223:57:0;;;15213:68;;;;;;15196:85;;15292:17;15312:26;15322:6;15330:1;15333;15336;15312:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15312:26:0;;;;;;-1:-1:-1;;15357:23:0;;;15349:66;;;;;;;;;;;;;;15447:5;15434:18;;:9;:18;;;15426:56;;;;;;;;;;;;;;15508:8;15501:3;:15;;15493:58;;;;;;;;;;;;;;15593:6;15564:10;:17;15575:5;15564:17;;;;;;;;;;;;;;;:26;15582:7;15564:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15633:7;15617:32;;15626:5;15617:32;;;15642:6;15617:32;;;;;;;;;;;;;;;14607:1050;;;;;;;;;;;;:::o;13085:136::-;13185:19;;;;13161:4;13185:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;13085:136::o;8755:117::-;8801:71;;;;;;8278:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10848:231::-;10926:6;;;;10912:10;:20;10904:94;;;;;;;;;;;;;;11028:6;;11014:30;;;;;;11028:6;;;;;11036:7;;11014:30;;;;;;;;;;11055:6;:16;;;;;;;;;;;;;;;10848:231::o;23749:161::-;23824:6;23862:12;23855:5;23851:9;;23843:32;;;;;;;;;;;;;;;-1:-1:-1;23900:1:0;;23749:161;-1:-1:-1;;23749:161:0:o;24114:165::-;24200:6;24232:1;24227:6;;:1;:6;;;;24235:12;24219:29;;;;;;;;;;;;;;;;-1:-1:-1;;;24266:5:0;;;24114:165::o;21381:610::-;21475:17;;;21467:89;;;;;;;;;;;;;;21575:17;;;21567:87;;;;;;;;;;;;;;21689:13;;;;;;;:8;:13;;;;;;;;;;21683:85;;;;;;;;;;;;;;21689:13;;;;;21704:6;;21683:85;;;;;;;:5;:85::i;:::-;21667:13;;;;;;;;:8;:13;;;;;;;;:101;;;;;;;;;;;21801:13;;;;;;;;;;21795:79;;;;;;;;;;;;;;21801:13;;;;;21816:6;;21795:79;;;;;;;;:5;:79::i;:::-;21779:13;;;;;;;;:8;:13;;;;;;;:95;;;;;;;;;;;;;;;;21890:26;;;;;;;;;;21909:6;;21890:26;;;;;;;;;;21944:14;;;;;;;;:9;:14;;;;;;;21960;;;;;;;;21929:54;;21944:14;;;;21960;21976:6;21929:14;:54::i;1152:181::-;1210:7;1242:5;;;1266:6;;;;1258:46;;;;;;;;;;;;;2906:471;2964:7;3209:6;3205:47;;-1:-1:-1;3239:1:0;3232:8;;3205:47;3276:5;;;3280:1;3276;:5;:1;3300:5;;;;;:10;3292:56;;;;;;;;;;;;;4564:132;4622:7;4649:39;4653:1;4656;4649:39;;;;;;;;;;;;;;;;;:3;:39::i;23918:188::-;24004:6;24034:5;;;24066:12;24058:6;;;;;;;;;24050:29;;;;;;;;;;;;;;;-1:-1:-1;24097:1:0;23918:188;-1:-1:-1;;;;23918:188:0:o;21999:937::-;22104:6;22094:16;;:6;:16;;;;:30;;;;;22123:1;22114:6;:10;;;22094:30;22090:839;;;22145:20;;;;22141:381;;22205:22;;;22186:16;22205:22;;;:14;:22;;;;;;;;;22265:13;:60;;22324:1;22265:60;;;22281:19;;;;;;;:11;:19;;;;;;;;22301:13;;;22281:34;;;;;;;;;:40;;;;;;22265:60;22246:79;;22344:16;22363:67;22369:9;22380:6;22363:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;22344:86;;22449:57;22466:6;22474:9;22485;22496;22449:16;:57::i;:::-;22141:381;;;;22542:20;;;;22538:380;;22602:22;;;22583:16;22602:22;;;:14;:22;;;;;;;;;22662:13;:60;;22721:1;22662:60;;;22678:19;;;;;;;:11;:19;;;;;;;;22698:13;;;22678:34;;;;;;;;;:40;;;;;;22662:60;22643:79;;22741:16;22760:66;22766:9;22777:6;22760:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;22741:85;;22845:57;22862:6;22870:9;22881;22892;22845:16;:57::i;20998:375::-;21101:20;;;;21075:23;21101:20;;;:9;:20;;;;;;;;;;21158:8;:19;;;;;;21188:20;;;;:32;;;;;;;;;;;21238:54;;21101:20;;;;;21158:19;;;;;21188:32;;21101:20;;;21238:54;;21075:23;21238:54;21305:60;21320:15;21337:9;21348:16;21305:14;:60::i;:::-;20998:375;;;;:::o;24287:153::-;24397:9;24287:153;:::o;5184:345::-;5270:7;5372:12;5365:5;5357:28;;;;;;;;;;;;;;;;5396:9;5412:1;5408;:5;;;;;;;5184:345;-1:-1:-1;;;;;5184:345:0:o;22944:628::-;23062:18;23083:75;23090:12;23083:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;23062:96;;23188:1;23173:12;:16;;;:85;;;;-1:-1:-1;23193:22:0;;;;;;;:11;:22;;;;;;;;:65;23216:16;;;23193:40;;;;;;;;;:50;:65;;;:50;;:65;23173:85;23169:329;;;23273:22;;;;;;;:11;:22;;;;;;;;23296:16;;;23273:40;;;;;;;;;:57;;;;;;;;;;;;23169:329;;;23398:33;;;;;;;;;;;;;;;;;;;;;;;;;23359:22;;;-1:-1:-1;23359:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23444:25;;;:14;:25;;;;;;;:44;;23359:72;23472:16;;23444:44;;;;;;;;;;;;;23169:329;23534:9;23513:51;;;23545:8;23555;23513:51;;;;;;;;;;;;;;;;22944:628;;;;;:::o;23580:161::-;23655:6;23693:12;23686:5;23682:9;;23674:32;;;;;;;;;;;;;;6766:17677;;;;;;;;;;-1:-1:-1;6766:17677:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:237;;4519:2;4507:9;4498:7;4494:23;4490:32;4487:2;;;4535:1;4532;4525:12;4487:2;4570:1;4587:51;4630:7;4610:9;4587:51;;4661:113;4744:24;4762:5;4744:24;;;4739:3;4732:37;4726:48;;;4781:104;4858:21;4873:5;4858:21;;4892:113;4975:24;4993:5;4975:24;;5012:152;5113:45;5133:24;5151:5;5133:24;;;5113:45;;5171:347;;5283:39;5316:5;5283:39;;;5334:71;5398:6;5393:3;5334:71;;;5327:78;;5410:52;5455:6;5450:3;5443:4;5436:5;5432:16;5410:52;;;5483:29;5505:6;5483:29;;;5474:39;;;;5263:255;-1:-1;;;5263:255;5872:375;;6032:67;6096:2;6091:3;6032:67;;;6132:34;6112:55;;6201:8;6196:2;6187:12;;6180:30;6238:2;6229:12;;6018:229;-1:-1;;6018:229;6256:383;;6416:67;6480:2;6475:3;6416:67;;;6516:34;6496:55;;6585:16;6580:2;6571:12;;6564:38;6630:2;6621:12;;6402:237;-1:-1;;6402:237;6648:398;;6826:84;6908:1;6903:3;6826:84;;;6943:66;6923:87;;7038:1;7029:11;;6812:234;-1:-1;;6812:234;7055:327;;7215:67;7279:2;7274:3;7215:67;;;7315:29;7295:50;;7373:2;7364:12;;7201:181;-1:-1;;7201:181;7391:370;;7551:67;7615:2;7610:3;7551:67;;;7651:34;7631:55;;7720:3;7715:2;7706:12;;7699:25;7752:2;7743:12;;7537:224;-1:-1;;7537:224;7770:394;;7930:67;7994:2;7989:3;7930:67;;;8030:34;8010:55;;8099:27;8094:2;8085:12;;8078:49;8155:2;8146:12;;7916:248;-1:-1;;7916:248;8173:396;;8333:67;8397:2;8392:3;8333:67;;;8433:34;8413:55;;8502:29;8497:2;8488:12;;8481:51;8560:2;8551:12;;8319:250;-1:-1;;8319:250;8578:330;;8738:67;8802:2;8797:3;8738:67;;;8838:32;8818:53;;8899:2;8890:12;;8724:184;-1:-1;;8724:184;8917:374;;9077:67;9141:2;9136:3;9077:67;;;9177:34;9157:55;;9246:7;9241:2;9232:12;;9225:29;9282:2;9273:12;;9063:228;-1:-1;;9063:228;9300:492;;9478:85;9560:2;9555:3;9478:85;;;9596:34;9576:55;;9665:34;9660:2;9651:12;;9644:56;9734:20;9729:2;9720:12;;9713:42;9783:2;9774:12;;9464:328;-1:-1;;9464:328;9801:372;;9961:67;10025:2;10020:3;9961:67;;;10061:34;10041:55;;10130:5;10125:2;10116:12;;10109:27;10164:2;10155:12;;9947:226;-1:-1;;9947:226;10182:398;;10342:67;10406:2;10401:3;10342:67;;;10442:34;10422:55;;10511:31;10506:2;10497:12;;10490:53;10571:2;10562:12;;10328:252;-1:-1;;10328:252;10589:477;;10767:85;10849:2;10844:3;10767:85;;;10885:34;10865:55;;10954:34;10949:2;10940:12;;10933:56;11023:5;11018:2;11009:12;;11002:27;11057:2;11048:12;;10753:313;-1:-1;;10753:313;11075:370;;11235:67;11299:2;11294:3;11235:67;;;11335:34;11315:55;;11404:3;11399:2;11390:12;;11383:25;11436:2;11427:12;;11221:224;-1:-1;;11221:224;11454:382;;11614:67;11678:2;11673:3;11614:67;;;11714:34;11694:55;;11783:15;11778:2;11769:12;;11762:37;11827:2;11818:12;;11600:236;-1:-1;;11600:236;11845:371;;12005:67;12069:2;12064:3;12005:67;;;12105:34;12085:55;;12174:4;12169:2;12160:12;;12153:26;12207:2;12198:12;;11991:225;-1:-1;;11991:225;12225:325;;12385:67;12449:2;12444:3;12385:67;;;12485:27;12465:48;;12541:2;12532:12;;12371:179;-1:-1;;12371:179;12559:328;;12719:67;12783:2;12778:3;12719:67;;;12819:30;12799:51;;12878:2;12869:12;;12705:182;-1:-1;;12705:182;12896:330;;13056:67;13120:2;13115:3;13056:67;;;13156:32;13136:53;;13217:2;13208:12;;13042:184;-1:-1;;13042:184;13235:447;;13395:67;13459:2;13454:3;13395:67;;;13495:34;13475:55;;13564:34;13559:2;13550:12;;13543:56;13633:11;13628:2;13619:12;;13612:33;13673:2;13664:12;;13381:301;-1:-1;;13381:301;13691:431;;13869:85;13951:2;13946:3;13869:85;;;13987:34;13967:55;;14056:28;14051:2;14042:12;;14035:50;14113:2;14104:12;;13855:267;-1:-1;;13855:267;14131:374;;14291:67;14355:2;14350:3;14291:67;;;14391:34;14371:55;;14460:7;14455:2;14446:12;;14439:29;14496:2;14487:12;;14277:228;-1:-1;;14277:228;14633:110;14714:23;14731:5;14714:23;;14750:107;14829:22;14845:5;14829:22;;14864:124;14946:36;14976:5;14946:36;;14995:110;15076:23;15093:5;15076:23;;15112:650;;15367:148;15511:3;15367:148;;;15360:155;;15526:75;15597:3;15588:6;15526:75;;;15623:2;15618:3;15614:12;15607:19;;15637:75;15708:3;15699:6;15637:75;;;-1:-1;15734:2;15725:12;;15348:414;-1:-1;;15348:414;15769:372;;15968:148;16112:3;15968:148;;16148:372;;16347:148;16491:3;16347:148;;16527:372;;16726:148;16870:3;16726:148;;16906:213;17024:2;17009:18;;17038:71;17013:9;17082:6;17038:71;;17126:324;17272:2;17257:18;;17286:71;17261:9;17330:6;17286:71;;;17368:72;17436:2;17425:9;17421:18;17412:6;17368:72;;17457:201;17569:2;17554:18;;17583:65;17558:9;17621:6;17583:65;;17665:213;17783:2;17768:18;;17797:71;17772:9;17841:6;17797:71;;17885:771;18143:3;18128:19;;18158:71;18132:9;18202:6;18158:71;;;18240:72;18308:2;18297:9;18293:18;18284:6;18240:72;;;18323;18391:2;18380:9;18376:18;18367:6;18323:72;;;18406;18474:2;18463:9;18459:18;18450:6;18406:72;;;18489:73;18557:3;18546:9;18542:19;18533:6;18489:73;;;18573;18641:3;18630:9;18626:19;18617:6;18573:73;;;18114:542;;;;;;;;;;18663:547;18865:3;18850:19;;18880:71;18854:9;18924:6;18880:71;;;18962:72;19030:2;19019:9;19015:18;19006:6;18962:72;;;19045;19113:2;19102:9;19098:18;19089:6;19045:72;;;19128;19196:2;19185:9;19181:18;19172:6;19128:72;;;18836:374;;;;;;;;19217:547;19419:3;19404:19;;19434:71;19408:9;19478:6;19434:71;;;19516:72;19584:2;19573:9;19569:18;19560:6;19516:72;;;19599;19667:2;19656:9;19652:18;19643:6;19599:72;;;19682;19750:2;19739:9;19735:18;19726:6;19682:72;;19771:539;19969:3;19954:19;;19984:71;19958:9;20028:6;19984:71;;;20066:68;20130:2;20119:9;20115:18;20106:6;20066:68;;20317:293;20451:2;20465:47;;;20436:18;;20526:74;20436:18;20586:6;20526:74;;20925:407;21116:2;21130:47;;;21101:18;;21191:131;21101:18;21191:131;;21339:407;21530:2;21544:47;;;21515:18;;21605:131;21515:18;21605:131;;21753:407;21944:2;21958:47;;;21929:18;;22019:131;21929:18;22019:131;;22167:407;22358:2;22372:47;;;22343:18;;22433:131;22343:18;22433:131;;22581:407;22772:2;22786:47;;;22757:18;;22847:131;22757:18;22847:131;;22995:407;23186:2;23200:47;;;23171:18;;23261:131;23171:18;23261:131;;23409:407;23600:2;23614:47;;;23585:18;;23675:131;23585:18;23675:131;;23823:407;24014:2;24028:47;;;23999:18;;24089:131;23999:18;24089:131;;24237:407;24428:2;24442:47;;;24413:18;;24503:131;24413:18;24503:131;;24651:407;24842:2;24856:47;;;24827:18;;24917:131;24827:18;24917:131;;25065:407;25256:2;25270:47;;;25241:18;;25331:131;25241:18;25331:131;;25479:407;25670:2;25684:47;;;25655:18;;25745:131;25655:18;25745:131;;25893:407;26084:2;26098:47;;;26069:18;;26159:131;26069:18;26159:131;;26307:407;26498:2;26512:47;;;26483:18;;26573:131;26483:18;26573:131;;26721:407;26912:2;26926:47;;;26897:18;;26987:131;26897:18;26987:131;;27135:407;27326:2;27340:47;;;27311:18;;27401:131;27311:18;27401:131;;27549:407;27740:2;27754:47;;;27725:18;;27815:131;27725:18;27815:131;;27963:407;28154:2;28168:47;;;28139:18;;28229:131;28139:18;28229:131;;28597:209;28713:2;28698:18;;28727:69;28702:9;28769:6;28727:69;;28813:316;28955:2;28940:18;;28969:69;28944:9;29011:6;28969:69;;;29049:70;29115:2;29104:9;29100:18;29091:6;29049:70;;29136:205;29250:2;29235:18;;29264:67;29239:9;29304:6;29264:67;;29348:211;29465:2;29450:18;;29479:70;29454:9;29522:6;29479:70;;29566:209;29682:2;29667:18;;29696:69;29671:9;29738:6;29696:69;;29782:320;29926:2;29911:18;;29940:70;29915:9;29983:6;29940:70;;;30021:71;30088:2;30077:9;30073:18;30064:6;30021:71;;30109:118;30193:12;;30164:63;30364:163;30467:19;;;30516:4;30507:14;;30460:67;30536:145;30672:3;30650:31;-1:-1;30650:31;30689:91;;30751:24;30769:5;30751:24;;30787:85;30853:13;30846:21;;30829:43;30879:72;30941:5;30924:27;30958:121;31031:42;31020:54;;31003:76;31165:88;31237:10;31226:22;;31209:44;31260:81;31331:4;31320:16;;31303:38;31348:104;31420:26;31409:38;;31392:60;31459:106;;31537:23;31554:5;31537:23;;31573:268;31638:1;31645:101;31659:6;31656:1;31653:13;31645:101;;;31726:11;;;31720:18;31707:11;;;31700:39;31681:2;31674:10;31645:101;;;31761:6;31758:1;31755:13;31752:2;;;-1:-1;;31826:1;31808:16;;31801:27;31622:219;31930:97;32018:2;31998:14;32014:7;31994:28;;31978:49;32035:117;32104:24;32122:5;32104:24;;;32097:5;32094:35;32084:2;;32143:1;32140;32133:12;32159:117;32228:24;32246:5;32228:24;;32407:115;32475:23;32492:5;32475:23;;32529:113;32596:22;32612:5;32596:22;

Swarm Source

bzzr://ae3be6162d2054573dccc375b0b450b5b83cf372927a9fe3c1e4fc7e596963b0
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.