Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
76,600,833.773345388881309132 SHARD
Holders
280 (0.00%)
Market
Price
$0.00 @ 0.000001 ETH (-1.07%)
Onchain Market Cap
$369,270.36
Circulating Supply Market Cap
$82,434.13
Other Info
Token Contract (WITH 18 Decimals)
Balance
320.352657789771044386 SHARDValue
$1.54 ( ~0.000420325614024782 Eth) [0.0004%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Shard
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-07 */ pragma solidity ^0.6.7; contract Shard { /// @notice EIP-20 token name for this token string public constant name = "Shard"; /// @notice EIP-20 token symbol for this token string public constant symbol = "SHARD"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Total number of tokens in circulation uint public totalSupply = 80_000_000e18; // 80 million Shard /// @notice Limit on the totalSupply that can be minted uint96 public constant maxSupply = 210_000_000e18; // 210 million Shard /// @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 = 183 days; /// @dev Allowance amounts on behalf of others mapping (address => mapping (address => uint96)) internal allowances; /// @dev 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 The EIP-712 typehash for the transfer struct used by the contract bytes32 public constant TRANSFER_TYPEHASH = keccak256("Transfer(address to,uint256 value,uint256 nonce,uint256 expiry)"); /// @notice The EIP-712 typehash for the transferWithFee struct used by the contract bytes32 public constant TRANSFER_WITH_FEE_TYPEHASH = keccak256("TransferWithFee(address to,uint256 value,uint256 fee,uint256 nonce,uint256 expiry)"); /// @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 Shard 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, "Shard::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, "Shard::setMinter: only the minter can change the minter address"); require(minter_ != address(0), "Shard::setMinter: cannot set minter to the zero address"); emit MinterChanged(minter, minter_); minter = minter_; } /** * @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, "Shard::mint: only the minter can mint"); require(block.timestamp >= mintingAllowedAfter, "Shard::mint: minting not allowed yet"); require(dst != address(0), "Shard::mint: cannot transfer to the zero address"); // record the mint mintingAllowedAfter = add256(block.timestamp, minimumTimeBetweenMints, "Shard::mint: mintingAllowedAfter overflows"); // mint the amount uint96 amount = safe96(rawAmount, "Shard::mint: amount exceeds 96 bits"); uint _totalSupply = totalSupply; require(amount <= _totalSupply / 100, "Shard::mint: amount exceeds mint allowance"); _totalSupply = add256(_totalSupply, amount, "Shard::mint: totalSupply overflows"); require(_totalSupply <= maxSupply, "Shard::mint: totalSupply exceeds maxSupply"); totalSupply = _totalSupply; // transfer the amount to the recipient balances[dst] = add96(balances[dst], amount, "Shard::mint: transfer amount overflows"); emit Transfer(address(0), dst, amount); // move delegates _moveDelegates(address(0), delegates[dst], amount); } /** * @notice Burn `amount` tokens from `msg.sender` * @param rawAmount The number of tokens to burn * @return Whether or not the burn succeeded */ function burn(uint rawAmount) external returns (bool) { uint96 amount = safe96(rawAmount, "Shard::burn: amount exceeds 96 bits"); _burnTokens(msg.sender, amount); return true; } /** * @notice Burn `amount` tokens from `src` * @param src The address of the source account * @param rawAmount The number of tokens to burn * @return Whether or not the burn succeeded */ function burnFrom(address src, uint rawAmount) external returns (bool) { uint96 amount = safe96(rawAmount, "Shard::burnFrom: amount exceeds 96 bits"); address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96(spenderAllowance, amount, "Shard::burnFrom: amount exceeds spender allowance"); _approve(src, spender, newAllowance); } _burnTokens(src, amount); return true; } /** * @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, "Shard::approve: amount exceeds 96 bits"); } _approve(msg.sender, spender, amount); return true; } /** * @notice Approve `spender` to transfer `amount` extra from `src` * @param spender The address of the account which may transfer tokens * @param rawAmount The number of tokens to increase the approval by * @return Whether or not the approval succeeded */ function increaseAllowance(address spender, uint rawAmount) external returns (bool) { uint96 amount = safe96(rawAmount, "Shard::increaseAllowance: amount exceeds 96 bits"); uint96 newAllowance = add96(allowances[msg.sender][spender], amount, "Shard::increaseAllowance: allowance overflows"); _approve(msg.sender, spender, newAllowance); return true; } /** * @notice Approve `spender` to transfer `amount` less from `src` * @param spender The address of the account which may transfer tokens * @param rawAmount The number of tokens to decrease the approval by * @return Whether or not the approval succeeded */ function decreaseAllowance(address spender, uint rawAmount) external returns (bool) { uint96 amount = safe96(rawAmount, "Shard::decreaseAllowance: amount exceeds 96 bits"); uint96 newAllowance = sub96(allowances[msg.sender][spender], amount, "Shard::decreaseAllowance: allowance underflows"); _approve(msg.sender, spender, newAllowance); return true; } /** * @notice Triggers an approval from owner to spender * @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, "Shard::permit: amount exceeds 96 bits"); } require(block.timestamp <= deadline, "Shard::permit: signature expired"); bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline)); address signatory = ecrecover(getDigest(structHash), v, r, s); require(signatory != address(0), "Shard::permit: invalid signature"); require(signatory == owner, "Shard::permit: unauthorized"); return _approve(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, "Shard::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) { uint96 amount = safe96(rawAmount, "Shard::transferFrom: amount exceeds 96 bits"); address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96(spenderAllowance, amount, "Shard::transferFrom: amount exceeds spender allowance"); _approve(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } /** * @notice Transfer various `amount` tokens from `msg.sender` to `dsts` * @param dsts The addresses of the destination accounts * @param rawAmounts The numbers of tokens to transfer * @return Whether or not the transfers succeeded */ function transferBatch(address[] calldata dsts, uint[] calldata rawAmounts) external returns (bool) { uint length = dsts.length; require(length == rawAmounts.length, "Shard::transferBatch: calldata arrays must have the same length"); for (uint i = 0; i < length; i++) { uint96 amount = safe96(rawAmounts[i], "Shard::transferBatch: amount exceeds 96 bits"); _transferTokens(msg.sender, dsts[i], amount); } return true; } /** * @notice Transfer `amount` tokens from signatory to `dst` * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @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 transferBySig(address dst, uint rawAmount, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) external { uint96 amount = safe96(rawAmount, "Shard::transferBySig: amount exceeds 96 bits"); require(block.timestamp <= expiry, "Shard::transferBySig: signature expired"); bytes32 structHash = keccak256(abi.encode(TRANSFER_TYPEHASH, dst, rawAmount, nonce, expiry)); address signatory = ecrecover(getDigest(structHash), v, r, s); require(signatory != address(0), "Shard::transferBySig: invalid signature"); require(nonce == nonces[signatory]++, "Shard::transferBySig: invalid nonce"); return _transferTokens(signatory, dst, amount); } /** * @notice Transfer `amount` tokens from signatory to `dst` with 'fee' tokens to 'feeTo' * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @param rawFee The number of tokens to transfer as fee * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param feeTo The address of the fee recipient account chosen by the msg.sender * @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 transferWithFeeBySig(address dst, uint rawAmount, uint rawFee, uint nonce, uint expiry, address feeTo, uint8 v, bytes32 r, bytes32 s) external { uint96 amount = safe96(rawAmount, "Shard::transferWithFeeBySig: amount exceeds 96 bits"); uint96 fee = safe96(rawFee, "Shard::transferWithFeeBySig: fee exceeds 96 bits"); require(block.timestamp <= expiry, "Shard::transferWithFeeBySig: signature expired"); bytes32 structHash = keccak256(abi.encode(TRANSFER_WITH_FEE_TYPEHASH, dst, rawAmount, rawFee, nonce, expiry)); address signatory = ecrecover(getDigest(structHash), v, r, s); require(signatory != address(0), "Shard::transferWithFeeBySig: invalid signature"); require(nonce == nonces[signatory]++, "Shard::transferWithFeeBySig: invalid nonce"); _transferTokens(signatory, feeTo, fee); return _transferTokens(signatory, dst, amount); } /** * @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 { require(block.timestamp <= expiry, "Shard::delegateBySig: signature expired"); bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); address signatory = ecrecover(getDigest(structHash), v, r, s); require(signatory != address(0), "Shard::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "Shard::delegateBySig: invalid nonce"); 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, "Shard::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 _approve(address owner, address spender, uint96 amount) internal { allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _burnTokens(address src, uint96 amount) internal { require(src != address(0), "Shard::_burnTokens: cannot transfer from the zero address"); balances[src] = sub96(balances[src], amount, "Shard::_burnTokens: transfer amount exceeds balance"); totalSupply -= amount; // no case where balance exceeds totalSupply emit Transfer(src, address(0), amount); _moveDelegates(delegates[src], address(0), amount); } 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), "Shard::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "Shard::_transferTokens: cannot transfer to the zero address"); balances[src] = sub96(balances[src], amount, "Shard::_transferTokens: transfer amount exceeds balance"); balances[dst] = add96(balances[dst], amount, "Shard::_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, "Shard::_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, "Shard::_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, "Shard::_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 c) { require((c = a + b) >= a, errorMessage); } function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { require(b <= a, errorMessage); return a - b; } function add256(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256 c) { require((c = a + b) >= a, errorMessage); } function getDigest(bytes32 structHash) internal view returns (bytes32) { uint256 chainId; assembly { chainId := chainid() } bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), chainId, address(this))); return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"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"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_WITH_FEE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"dsts","type":"address[]"},{"internalType":"uint256[]","name":"rawAmounts","type":"uint256[]"}],"name":"transferBatch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"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":"transferBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"rawFee","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"feeTo","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithFeeBySig","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526a422ca8b0a00a42500000006000553480156200002057600080fd5b5060405162003d4438038062003d44833981810160405260608110156200004657600080fd5b508051602082015160409092015190919042811015620000985760405162461bcd60e51b815260040180806020018281038252603b81526020018062003d09603b913960400191505060405180910390fd5b600080546001600160a01b03851680835260046020908152604080852080546001600160601b0319166001600160601b03909516949094179093558354835190815292519193927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3600180546001600160a01b0319166001600160a01b0384169081179091556040805160008152602081019290925280517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f69281900390910190a16002555050613b9080620001796000396000f3fe608060405234801561001057600080fd5b506004361061025b5760003560e01c806370a0823111610145578063d505accf116100bd578063dd62ed3e1161008c578063f1127ed811610071578063f1127ed81461096c578063f568beff146109d8578063fca3b5aa146109e05761025b565b8063dd62ed3e14610929578063e7a324dc146109645761025b565b8063d505accf146107fd578063d5abeb011461085b578063d7f6e62b14610863578063dd558dd1146108cf5761025b565b806395d89b4111610114578063a9059cbb116100f9578063a9059cbb1461073d578063b4b5ea5714610776578063c3cda520146107a95761025b565b806395d89b41146106fc578063a457c2d7146107045761025b565b806370a0823114610603578063782d6fe11461063657806379cc6790146106905780637ecebe00146106c95761025b565b8063313ce567116101d857806342966c68116101a75780635c11d62f1161018c5780635c11d62f1461057c5780635c19a95c1461059d5780636fcfff45146105d05761025b565b806342966c681461052c578063587cde1e146105495761025b565b8063313ce567146103d857806339509351146103f65780633b3e672f1461042f57806340c10f19146104f15761025b565b806318160ddd1161022f57806323b872dd1161021457806323b872dd1461038557806330adf81f146103c857806330b36cef146103d05761025b565b806318160ddd1461037557806320606b701461037d5761025b565b8062bf26f41461026057806306fdde031461027a57806307546172146102f7578063095ea7b314610328575b600080fd5b610268610a13565b60408051918252519081900360200190f35b610282610a37565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102bc5781810151838201526020016102a4565b50505050905090810190601f1680156102e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ff610a70565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103616004803603604081101561033e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a8c565b604080519115158252519081900360200190f35b610268610b1a565b610268610b20565b6103616004803603606081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610b44565b610268610c1c565b610268610c40565b6103e0610c46565b6040805160ff9092168252519081900360200190f35b6103616004803603604081101561040c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c4b565b6103616004803603604081101561044557600080fd5b81019060208101813564010000000081111561046057600080fd5b82018360208201111561047257600080fd5b8035906020019184602083028401116401000000008311171561049457600080fd5b9193909290916020810190356401000000008111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460208302840111640100000000831117156104e657600080fd5b509092509050610cef565b61052a6004803603604081101561050757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dc9565b005b6103616004803603602081101561054257600080fd5b5035611189565b6102ff6004803603602081101561055f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c3565b6105846111eb565b6040805163ffffffff9092168252519081900360200190f35b61052a600480360360208110156105b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111f2565b610584600480360360208110156105e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111ff565b6102686004803603602081101561061957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611217565b61066f6004803603604081101561064c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561124d565b604080516bffffffffffffffffffffffff9092168252519081900360200190f35b610361600480360360408110156106a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561154e565b610268600480360360208110156106df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611624565b610282611636565b6103616004803603604081101561071a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561166f565b6103616004803603604081101561075357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356116fb565b61066f6004803603602081101561078c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661172d565b61052a600480360360c08110156107bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a001356117dc565b61052a600480360360e081101561081357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a39565b61066f611d76565b61052a600480360361012081101561087a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201359160608101359160808201359160a08101359091169060ff60c0820135169060e0810135906101000135611d85565b61052a600480360360e08110156108e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060608101359060ff6080820135169060a08101359060c0013561204c565b6102686004803603604081101561093f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166122cc565b610268612312565b6109ab6004803603604081101561098257600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612336565b6040805163ffffffff90931683526bffffffffffffffffffffffff90911660208301528051918290030190f35b610268612371565b61052a600480360360208110156109f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612395565b7f962bd922c545d0eeadd0bffa7dfc20e9311026bb052ef42462d77f71ae15f0ae81565b6040518060400160405280600581526020017f536861726400000000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610ade57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b03565b610b00836040518060600160405280602681526020016134de6026913961250d565b90505b610b0e3385836125ca565b60019150505b92915050565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600080610b69836040518060600160405280602b8152602001613504602b913961250d565b73ffffffffffffffffffffffffffffffffffffffff8616600081815260036020908152604080832033808552925290912054929350916bffffffffffffffffffffffff16908214801590610bcb57506bffffffffffffffffffffffff81811614155b15610c04576000610bf582856040518060600160405280603581526020016133f36035913961266f565b9050610c028884836125ca565b505b610c0f878785612700565b5060019695505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025481565b601281565b600080610c70836040518060600160405280603081526020016133486030913961250d565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825280832054815160608101909252602d8083529495509293610cd7936bffffffffffffffffffffffff169286929190613715908301396129a6565b9050610ce43386836125ca565b506001949350505050565b600083828114610d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806136af603f913960400191505060405180910390fd5b60005b81811015610c0f576000610d8b868684818110610d6657fe5b905060200201356040518060600160405280602c8152602001613769602c913961250d565b9050610dc033898985818110610d9d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1683612700565b50600101610d4d565b60015473ffffffffffffffffffffffffffffffffffffffff163314610e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061352f6025913960400191505060405180910390fd5b600254421015610e94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137bd6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135e16030913960400191505060405180910390fd5b610f2c4262f1428063ffffffff166040518060600160405280602a8152602001613902602a9139612a2c565b6002819055506000610f56826040518060600160405280602381526020016139566023913961250d565b60005490915060648104826bffffffffffffffffffffffff161115610fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061392c602a913960400191505060405180910390fd5b610ff781836bffffffffffffffffffffffff1660405180606001604052806022815260200161368d60229139612a2c565b90506aadb53acfa41aee1200000081111561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061339b602a913960400191505060405180910390fd5b600081815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260268084526110bc936bffffffffffffffffffffffff90921692869291906139a3908301396129a6565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9687161790558051948716855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a373ffffffffffffffffffffffffffffffffffffffff808516600090815260056020526040812054611183921684612a99565b50505050565b6000806111ae836040518060600160405280602381526020016139c96023913961250d565b90506111ba3382612ce0565b50600192915050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b62f1428081565b6111fc3382612e7d565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b60004382106112a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806135b96028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff16806112e2576000915050610b14565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601811685529252909120541683106113ba5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff169050610b14565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015611402576000915050610b14565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156114f657600282820363ffffffff16048103611452613307565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152908714156114d157602001519450610b149350505050565b805163ffffffff168711156114e8578193506114ef565b6001820392505b5050611428565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b600080611573836040518060600160405280602781526020016136666027913961250d565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260036020908152604080832033808552925290912054929350916bffffffffffffffffffffffff169082148015906115d557506bffffffffffffffffffffffff81811614155b1561160e5760006115ff82856040518060600160405280603181526020016138d16031913961266f565b905061160c8784836125ca565b505b6116188684612ce0565b50600195945050505050565b60086020526000908152604090205481565b6040518060400160405280600581526020017f534841524400000000000000000000000000000000000000000000000000000081525081565b600080611694836040518060600160405280603081526020016134286030913961250d565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825280832054815160608101909252602e8083529495509293610cd7936bffffffffffffffffffffffff1692869291906135549083013961266f565b600080611720836040518060600160405280602781526020016137e16027913961250d565b9050610b0e338583612700565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff16806117655760006117d5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b9392505050565b83421115611835576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806136ee6027913960400191505060405180910390fd5b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208083019190915273ffffffffffffffffffffffffffffffffffffffff8916828401526060820188905260808083018890528351808403909101815260a09092019092528051910120600060016118b183612f2b565b86868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061387a6027913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090208054600181019091558714611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613a296023913960400191505060405180910390fd5b611a2e8189612e7d565b50505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611a8a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611aaf565b611aac866040518060600160405280602581526020016134586025913961250d565b90505b84421115611b1e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53686172643a3a7065726d69743a207369676e61747572652065787069726564604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80891660008181526008602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e09094019052825192019190912091611bc183612f2b565b87878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611c18573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611cc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53686172643a3a7065726d69743a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b8973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f53686172643a3a7065726d69743a20756e617574686f72697a65640000000000604482015290519081900360640190fd5b611d6a8a8a856125ca565b50505050505050505050565b6aadb53acfa41aee1200000081565b6000611da9896040518060600160405280603381526020016138476033913961250d565b90506000611dcf896040518060600160405280603081526020016138a16030913961250d565b905086421115611e2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806133c5602e913960400191505060405180910390fd5b604080517f09aa587eddbedbe2986e33366dbc3d87c00136a27315a549511145ad4ac9f02060208083019190915273ffffffffffffffffffffffffffffffffffffffff8e1682840152606082018d9052608082018c905260a082018b905260c08083018b90528351808403909101815260e0909201909252805191012060006001611eb483612f2b565b88888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611f0b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611fa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613611602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090208054600181019091558a14612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613979602a913960400191505060405180910390fd5b612032818985612700565b61203d818e86612700565b50505050505050505050505050565b6000612070876040518060600160405280602c81526020016134b2602c913961250d565b9050844211156120cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061363f6027913960400191505060405180910390fd5b604080517f962bd922c545d0eeadd0bffa7dfc20e9311026bb052ef42462d77f71ae15f0ae60208083019190915273ffffffffffffffffffffffffffffffffffffffff8b1682840152606082018a90526080820189905260a08083018990528351808403909101815260c090920190925280519101206000600161214e83612f2b565b87878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156121a5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661223c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806137426027913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915588146122c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806133786023913960400191505060405180910390fd5b611d6a818b85612700565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b7f09aa587eddbedbe2986e33366dbc3d87c00136a27315a549511145ad4ac9f02081565b60015473ffffffffffffffffffffffffffffffffffffffff163314612405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180613808603f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613af16037913960400191505060405180910390fd5b6001546040805173ffffffffffffffffffffffffffffffffffffffff9283168152918316602083015280517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f69281900390910190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c0100000000000000000000000084106125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561258757818101518382015260200161256f565b50505050905090810190601f1680156125b45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff8716908117909155825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906126f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff831661276c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806139ec603d913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166127d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613a85603b913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526037808452612835936bffffffffffffffffffffffff90921692859291906135829083013961266f565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9687161790559286168252908290205482516060810190935260318084526128c79491909116928592909190613ac0908301396129a6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9687161790558151948616855290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546129a192918216911683612a99565b505050565b818301816bffffffffffffffffffffffff8086169083161015612a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b509392505050565b8183018184821015612a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ae357506000816bffffffffffffffffffffffff16115b156129a15773ffffffffffffffffffffffffffffffffffffffff831615612be65773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081612b3d576000612bad565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000612bd4828560405180606001604052806029815260200161331f6029913961266f565b9050612be28684848461301e565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156129a15773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081612c3b576000612cab565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000612cd28285604051806060016040528060288152602001613795602891396129a6565b9050611a318584848461301e565b73ffffffffffffffffffffffffffffffffffffffff8216612d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180613a4c6039913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604091829020548251606081019093526033808452612da9936bffffffffffffffffffffffff9092169285929190613b289083013961266f565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055825494861694859003835580519485525191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a373ffffffffffffffffffffffffffffffffffffffff808316600090815260056020526040812054612e7992169083612a99565b5050565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611183828483612a99565b604080518082018252600581527f536861726400000000000000000000000000000000000000000000000000000060209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f4d90e6dd2d225e15a0ea5c90bcb09baeaba0d3ff4604520d3610c06ff7f55ad981840152466060820152306080808301919091528351808303909101815260a0820184528051908301207f190100000000000000000000000000000000000000000000000000000000000060c083015260c282015260e2808201949094528251808203909401845261010201909152815191012090565b60006130424360405180606001604052806035815260200161347d60359139613297565b905060008463ffffffff161180156130b6575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156131555773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055613231565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b604080516bffffffffffffffffffffffff808616825284166020820152815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b60008164010000000084106125c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b60408051808201909152600080825260208201529056fe53686172643a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777353686172643a3a696e637265617365416c6c6f77616e63653a20616d6f756e742065786365656473203936206269747353686172643a3a7472616e7366657242795369673a20696e76616c6964206e6f6e636553686172643a3a6d696e743a20746f74616c537570706c792065786365656473206d6178537570706c7953686172643a3a7472616e736665725769746846656542795369673a207369676e6174757265206578706972656453686172643a3a7472616e7366657246726f6d3a20616d6f756e742065786365656473207370656e64657220616c6c6f77616e636553686172643a3a6465637265617365416c6c6f77616e63653a20616d6f756e742065786365656473203936206269747353686172643a3a7065726d69743a20616d6f756e742065786365656473203936206269747353686172643a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747353686172643a3a7472616e7366657242795369673a20616d6f756e742065786365656473203936206269747353686172643a3a617070726f76653a20616d6f756e742065786365656473203936206269747353686172643a3a7472616e7366657246726f6d3a20616d6f756e742065786365656473203936206269747353686172643a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d696e7453686172643a3a6465637265617365416c6c6f77616e63653a20616c6c6f77616e636520756e646572666c6f777353686172643a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636553686172643a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656453686172643a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737353686172643a3a7472616e736665725769746846656542795369673a20696e76616c6964207369676e617475726553686172643a3a7472616e7366657242795369673a207369676e6174757265206578706972656453686172643a3a6275726e46726f6d3a20616d6f756e742065786365656473203936206269747353686172643a3a6d696e743a20746f74616c537570706c79206f766572666c6f777353686172643a3a7472616e7366657242617463683a2063616c6c6461746120617272617973206d7573742068617665207468652073616d65206c656e67746853686172643a3a64656c656761746542795369673a207369676e6174757265206578706972656453686172643a3a696e637265617365416c6c6f77616e63653a20616c6c6f77616e6365206f766572666c6f777353686172643a3a7472616e7366657242795369673a20696e76616c6964207369676e617475726553686172643a3a7472616e7366657242617463683a20616d6f756e742065786365656473203936206269747353686172643a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777353686172643a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642079657453686172643a3a7472616e736665723a20616d6f756e742065786365656473203936206269747353686172643a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722063616e206368616e676520746865206d696e746572206164647265737353686172643a3a7472616e736665725769746846656542795369673a20616d6f756e742065786365656473203936206269747353686172643a3a64656c656761746542795369673a20696e76616c6964207369676e617475726553686172643a3a7472616e736665725769746846656542795369673a206665652065786365656473203936206269747353686172643a3a6275726e46726f6d3a20616d6f756e742065786365656473207370656e64657220616c6c6f77616e636553686172643a3a6d696e743a206d696e74696e67416c6c6f7765644166746572206f766572666c6f777353686172643a3a6d696e743a20616d6f756e742065786365656473206d696e7420616c6c6f77616e636553686172643a3a6d696e743a20616d6f756e742065786365656473203936206269747353686172643a3a7472616e736665725769746846656542795369673a20696e76616c6964206e6f6e636553686172643a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f777353686172643a3a6275726e3a20616d6f756e742065786365656473203936206269747353686172643a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f206164647265737353686172643a3a64656c656761746542795369673a20696e76616c6964206e6f6e636553686172643a3a5f6275726e546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f206164647265737353686172643a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737353686172643a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777353686172643a3a7365744d696e7465723a2063616e6e6f7420736574206d696e74657220746f20746865207a65726f206164647265737353686172643a3a5f6275726e546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220e89d9355747e824d8a17a69696306ff0c3f943ab91c86a9052e927a1b829b58a64736f6c634300060c003353686172643a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e6c7920626567696e206166746572206465706c6f796d656e74000000000000000000000000d68f36eda870687bc3e901fda4fd55d803f15024000000000000000000000000d68f36eda870687bc3e901fda4fd55d803f150240000000000000000000000000000000000000000000000000000000060b5787e
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061025b5760003560e01c806370a0823111610145578063d505accf116100bd578063dd62ed3e1161008c578063f1127ed811610071578063f1127ed81461096c578063f568beff146109d8578063fca3b5aa146109e05761025b565b8063dd62ed3e14610929578063e7a324dc146109645761025b565b8063d505accf146107fd578063d5abeb011461085b578063d7f6e62b14610863578063dd558dd1146108cf5761025b565b806395d89b4111610114578063a9059cbb116100f9578063a9059cbb1461073d578063b4b5ea5714610776578063c3cda520146107a95761025b565b806395d89b41146106fc578063a457c2d7146107045761025b565b806370a0823114610603578063782d6fe11461063657806379cc6790146106905780637ecebe00146106c95761025b565b8063313ce567116101d857806342966c68116101a75780635c11d62f1161018c5780635c11d62f1461057c5780635c19a95c1461059d5780636fcfff45146105d05761025b565b806342966c681461052c578063587cde1e146105495761025b565b8063313ce567146103d857806339509351146103f65780633b3e672f1461042f57806340c10f19146104f15761025b565b806318160ddd1161022f57806323b872dd1161021457806323b872dd1461038557806330adf81f146103c857806330b36cef146103d05761025b565b806318160ddd1461037557806320606b701461037d5761025b565b8062bf26f41461026057806306fdde031461027a57806307546172146102f7578063095ea7b314610328575b600080fd5b610268610a13565b60408051918252519081900360200190f35b610282610a37565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102bc5781810151838201526020016102a4565b50505050905090810190601f1680156102e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ff610a70565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103616004803603604081101561033e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a8c565b604080519115158252519081900360200190f35b610268610b1a565b610268610b20565b6103616004803603606081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610b44565b610268610c1c565b610268610c40565b6103e0610c46565b6040805160ff9092168252519081900360200190f35b6103616004803603604081101561040c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c4b565b6103616004803603604081101561044557600080fd5b81019060208101813564010000000081111561046057600080fd5b82018360208201111561047257600080fd5b8035906020019184602083028401116401000000008311171561049457600080fd5b9193909290916020810190356401000000008111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460208302840111640100000000831117156104e657600080fd5b509092509050610cef565b61052a6004803603604081101561050757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dc9565b005b6103616004803603602081101561054257600080fd5b5035611189565b6102ff6004803603602081101561055f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c3565b6105846111eb565b6040805163ffffffff9092168252519081900360200190f35b61052a600480360360208110156105b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111f2565b610584600480360360208110156105e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111ff565b6102686004803603602081101561061957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611217565b61066f6004803603604081101561064c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561124d565b604080516bffffffffffffffffffffffff9092168252519081900360200190f35b610361600480360360408110156106a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561154e565b610268600480360360208110156106df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611624565b610282611636565b6103616004803603604081101561071a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561166f565b6103616004803603604081101561075357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356116fb565b61066f6004803603602081101561078c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661172d565b61052a600480360360c08110156107bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a001356117dc565b61052a600480360360e081101561081357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a39565b61066f611d76565b61052a600480360361012081101561087a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359160408201359160608101359160808201359160a08101359091169060ff60c0820135169060e0810135906101000135611d85565b61052a600480360360e08110156108e557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060608101359060ff6080820135169060a08101359060c0013561204c565b6102686004803603604081101561093f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166122cc565b610268612312565b6109ab6004803603604081101561098257600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612336565b6040805163ffffffff90931683526bffffffffffffffffffffffff90911660208301528051918290030190f35b610268612371565b61052a600480360360208110156109f657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612395565b7f962bd922c545d0eeadd0bffa7dfc20e9311026bb052ef42462d77f71ae15f0ae81565b6040518060400160405280600581526020017f536861726400000000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610ade57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b03565b610b00836040518060600160405280602681526020016134de6026913961250d565b90505b610b0e3385836125ca565b60019150505b92915050565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600080610b69836040518060600160405280602b8152602001613504602b913961250d565b73ffffffffffffffffffffffffffffffffffffffff8616600081815260036020908152604080832033808552925290912054929350916bffffffffffffffffffffffff16908214801590610bcb57506bffffffffffffffffffffffff81811614155b15610c04576000610bf582856040518060600160405280603581526020016133f36035913961266f565b9050610c028884836125ca565b505b610c0f878785612700565b5060019695505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025481565b601281565b600080610c70836040518060600160405280603081526020016133486030913961250d565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825280832054815160608101909252602d8083529495509293610cd7936bffffffffffffffffffffffff169286929190613715908301396129a6565b9050610ce43386836125ca565b506001949350505050565b600083828114610d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806136af603f913960400191505060405180910390fd5b60005b81811015610c0f576000610d8b868684818110610d6657fe5b905060200201356040518060600160405280602c8152602001613769602c913961250d565b9050610dc033898985818110610d9d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1683612700565b50600101610d4d565b60015473ffffffffffffffffffffffffffffffffffffffff163314610e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061352f6025913960400191505060405180910390fd5b600254421015610e94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137bd6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806135e16030913960400191505060405180910390fd5b610f2c4262f1428063ffffffff166040518060600160405280602a8152602001613902602a9139612a2c565b6002819055506000610f56826040518060600160405280602381526020016139566023913961250d565b60005490915060648104826bffffffffffffffffffffffff161115610fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061392c602a913960400191505060405180910390fd5b610ff781836bffffffffffffffffffffffff1660405180606001604052806022815260200161368d60229139612a2c565b90506aadb53acfa41aee1200000081111561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061339b602a913960400191505060405180910390fd5b600081815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260268084526110bc936bffffffffffffffffffffffff90921692869291906139a3908301396129a6565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9687161790558051948716855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a373ffffffffffffffffffffffffffffffffffffffff808516600090815260056020526040812054611183921684612a99565b50505050565b6000806111ae836040518060600160405280602381526020016139c96023913961250d565b90506111ba3382612ce0565b50600192915050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b62f1428081565b6111fc3382612e7d565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b60004382106112a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806135b96028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff16806112e2576000915050610b14565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601811685529252909120541683106113ba5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff169050610b14565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015611402576000915050610b14565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156114f657600282820363ffffffff16048103611452613307565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152908714156114d157602001519450610b149350505050565b805163ffffffff168711156114e8578193506114ef565b6001820392505b5050611428565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b600080611573836040518060600160405280602781526020016136666027913961250d565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260036020908152604080832033808552925290912054929350916bffffffffffffffffffffffff169082148015906115d557506bffffffffffffffffffffffff81811614155b1561160e5760006115ff82856040518060600160405280603181526020016138d16031913961266f565b905061160c8784836125ca565b505b6116188684612ce0565b50600195945050505050565b60086020526000908152604090205481565b6040518060400160405280600581526020017f534841524400000000000000000000000000000000000000000000000000000081525081565b600080611694836040518060600160405280603081526020016134286030913961250d565b33600090815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168452825280832054815160608101909252602e8083529495509293610cd7936bffffffffffffffffffffffff1692869291906135549083013961266f565b600080611720836040518060600160405280602781526020016137e16027913961250d565b9050610b0e338583612700565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff16806117655760006117d5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b9392505050565b83421115611835576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806136ee6027913960400191505060405180910390fd5b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208083019190915273ffffffffffffffffffffffffffffffffffffffff8916828401526060820188905260808083018890528351808403909101815260a09092019092528051910120600060016118b183612f2b565b86868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061387a6027913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090208054600181019091558714611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613a296023913960400191505060405180910390fd5b611a2e8189612e7d565b50505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611a8a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611aaf565b611aac866040518060600160405280602581526020016134586025913961250d565b90505b84421115611b1e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53686172643a3a7065726d69743a207369676e61747572652065787069726564604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80891660008181526008602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e09094019052825192019190912091611bc183612f2b565b87878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611c18573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611cc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53686172643a3a7065726d69743a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b8973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f53686172643a3a7065726d69743a20756e617574686f72697a65640000000000604482015290519081900360640190fd5b611d6a8a8a856125ca565b50505050505050505050565b6aadb53acfa41aee1200000081565b6000611da9896040518060600160405280603381526020016138476033913961250d565b90506000611dcf896040518060600160405280603081526020016138a16030913961250d565b905086421115611e2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806133c5602e913960400191505060405180910390fd5b604080517f09aa587eddbedbe2986e33366dbc3d87c00136a27315a549511145ad4ac9f02060208083019190915273ffffffffffffffffffffffffffffffffffffffff8e1682840152606082018d9052608082018c905260a082018b905260c08083018b90528351808403909101815260e0909201909252805191012060006001611eb483612f2b565b88888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611f0b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611fa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613611602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090208054600181019091558a14612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613979602a913960400191505060405180910390fd5b612032818985612700565b61203d818e86612700565b50505050505050505050505050565b6000612070876040518060600160405280602c81526020016134b2602c913961250d565b9050844211156120cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061363f6027913960400191505060405180910390fd5b604080517f962bd922c545d0eeadd0bffa7dfc20e9311026bb052ef42462d77f71ae15f0ae60208083019190915273ffffffffffffffffffffffffffffffffffffffff8b1682840152606082018a90526080820189905260a08083018990528351808403909101815260c090920190925280519101206000600161214e83612f2b565b87878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156121a5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661223c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806137426027913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915588146122c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806133786023913960400191505060405180910390fd5b611d6a818b85612700565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b7f09aa587eddbedbe2986e33366dbc3d87c00136a27315a549511145ad4ac9f02081565b60015473ffffffffffffffffffffffffffffffffffffffff163314612405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180613808603f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613af16037913960400191505060405180910390fd5b6001546040805173ffffffffffffffffffffffffffffffffffffffff9283168152918316602083015280517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f69281900390910190a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c0100000000000000000000000084106125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561258757818101518382015260200161256f565b50505050905090810190601f1680156125b45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff8716908117909155825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906126f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff831661276c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806139ec603d913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166127d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613a85603b913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526037808452612835936bffffffffffffffffffffffff90921692859291906135829083013961266f565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9687161790559286168252908290205482516060810190935260318084526128c79491909116928592909190613ac0908301396129a6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9687161790558151948616855290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546129a192918216911683612a99565b505050565b818301816bffffffffffffffffffffffff8086169083161015612a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b509392505050565b8183018184821015612a24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ae357506000816bffffffffffffffffffffffff16115b156129a15773ffffffffffffffffffffffffffffffffffffffff831615612be65773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081612b3d576000612bad565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000612bd4828560405180606001604052806029815260200161331f6029913961266f565b9050612be28684848461301e565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156129a15773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081612c3b576000612cab565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000612cd28285604051806060016040528060288152602001613795602891396129a6565b9050611a318584848461301e565b73ffffffffffffffffffffffffffffffffffffffff8216612d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180613a4c6039913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604091829020548251606081019093526033808452612da9936bffffffffffffffffffffffff9092169285929190613b289083013961266f565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055825494861694859003835580519485525191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a373ffffffffffffffffffffffffffffffffffffffff808316600090815260056020526040812054612e7992169083612a99565b5050565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611183828483612a99565b604080518082018252600581527f536861726400000000000000000000000000000000000000000000000000000060209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f4d90e6dd2d225e15a0ea5c90bcb09baeaba0d3ff4604520d3610c06ff7f55ad981840152466060820152306080808301919091528351808303909101815260a0820184528051908301207f190100000000000000000000000000000000000000000000000000000000000060c083015260c282015260e2808201949094528251808203909401845261010201909152815191012090565b60006130424360405180606001604052806035815260200161347d60359139613297565b905060008463ffffffff161180156130b6575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156131555773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055613231565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b604080516bffffffffffffffffffffffff808616825284166020820152815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b60008164010000000084106125c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561258757818101518382015260200161256f565b60408051808201909152600080825260208201529056fe53686172643a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777353686172643a3a696e637265617365416c6c6f77616e63653a20616d6f756e742065786365656473203936206269747353686172643a3a7472616e7366657242795369673a20696e76616c6964206e6f6e636553686172643a3a6d696e743a20746f74616c537570706c792065786365656473206d6178537570706c7953686172643a3a7472616e736665725769746846656542795369673a207369676e6174757265206578706972656453686172643a3a7472616e7366657246726f6d3a20616d6f756e742065786365656473207370656e64657220616c6c6f77616e636553686172643a3a6465637265617365416c6c6f77616e63653a20616d6f756e742065786365656473203936206269747353686172643a3a7065726d69743a20616d6f756e742065786365656473203936206269747353686172643a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747353686172643a3a7472616e7366657242795369673a20616d6f756e742065786365656473203936206269747353686172643a3a617070726f76653a20616d6f756e742065786365656473203936206269747353686172643a3a7472616e7366657246726f6d3a20616d6f756e742065786365656473203936206269747353686172643a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d696e7453686172643a3a6465637265617365416c6c6f77616e63653a20616c6c6f77616e636520756e646572666c6f777353686172643a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636553686172643a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656453686172643a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737353686172643a3a7472616e736665725769746846656542795369673a20696e76616c6964207369676e617475726553686172643a3a7472616e7366657242795369673a207369676e6174757265206578706972656453686172643a3a6275726e46726f6d3a20616d6f756e742065786365656473203936206269747353686172643a3a6d696e743a20746f74616c537570706c79206f766572666c6f777353686172643a3a7472616e7366657242617463683a2063616c6c6461746120617272617973206d7573742068617665207468652073616d65206c656e67746853686172643a3a64656c656761746542795369673a207369676e6174757265206578706972656453686172643a3a696e637265617365416c6c6f77616e63653a20616c6c6f77616e6365206f766572666c6f777353686172643a3a7472616e7366657242795369673a20696e76616c6964207369676e617475726553686172643a3a7472616e7366657242617463683a20616d6f756e742065786365656473203936206269747353686172643a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777353686172643a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642079657453686172643a3a7472616e736665723a20616d6f756e742065786365656473203936206269747353686172643a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722063616e206368616e676520746865206d696e746572206164647265737353686172643a3a7472616e736665725769746846656542795369673a20616d6f756e742065786365656473203936206269747353686172643a3a64656c656761746542795369673a20696e76616c6964207369676e617475726553686172643a3a7472616e736665725769746846656542795369673a206665652065786365656473203936206269747353686172643a3a6275726e46726f6d3a20616d6f756e742065786365656473207370656e64657220616c6c6f77616e636553686172643a3a6d696e743a206d696e74696e67416c6c6f7765644166746572206f766572666c6f777353686172643a3a6d696e743a20616d6f756e742065786365656473206d696e7420616c6c6f77616e636553686172643a3a6d696e743a20616d6f756e742065786365656473203936206269747353686172643a3a7472616e736665725769746846656542795369673a20696e76616c6964206e6f6e636553686172643a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f777353686172643a3a6275726e3a20616d6f756e742065786365656473203936206269747353686172643a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f206164647265737353686172643a3a64656c656761746542795369673a20696e76616c6964206e6f6e636553686172643a3a5f6275726e546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f206164647265737353686172643a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737353686172643a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777353686172643a3a7365744d696e7465723a2063616e6e6f7420736574206d696e74657220746f20746865207a65726f206164647265737353686172643a3a5f6275726e546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220e89d9355747e824d8a17a69696306ff0c3f943ab91c86a9052e927a1b829b58a64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d68f36eda870687bc3e901fda4fd55d803f15024000000000000000000000000d68f36eda870687bc3e901fda4fd55d803f150240000000000000000000000000000000000000000000000000000000060b5787e
-----Decoded View---------------
Arg [0] : account (address): 0xD68F36EDA870687BC3E901FDA4FD55d803F15024
Arg [1] : minter_ (address): 0xD68F36EDA870687BC3E901FDA4FD55d803F15024
Arg [2] : mintingAllowedAfter_ (uint256): 1622505598
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d68f36eda870687bc3e901fda4fd55d803f15024
Arg [1] : 000000000000000000000000d68f36eda870687bc3e901fda4fd55d803f15024
Arg [2] : 0000000000000000000000000000000000000000000000000000000060b5787e
Deployed Bytecode Sourcemap
27:24553:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:120;;;:::i;:::-;;;;;;;;;;;;;;;;99:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;657:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8388:362;;;;;;;;;;;;;;;;-1:-1:-1;8388:362:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;398:39;;;:::i;1748:122::-;;;:::i;12568:609::-;;;;;;;;;;;;;;;;-1:-1:-1;12568:609:0;;;;;;;;;;;;;;;;;;:::i;2171:137::-;;;:::i;748:31::-;;;:::i;299:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9052:392;;;;;;;;;;;;;;;;-1:-1:-1;9052:392:0;;;;;;;;;:::i;13457:495::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13457:495:0;;-1:-1:-1;13457:495:0;-1:-1:-1;13457:495:0;:::i;5029:1241::-;;;;;;;;;;;;;;;;-1:-1:-1;5029:1241:0;;;;;;;;;:::i;:::-;;6455:209;;;;;;;;;;;;;;;;-1:-1:-1;6455:209:0;;:::i;1198:45::-;;;;;;;;;;;;;;;;-1:-1:-1;1198:45:0;;;;:::i;832:57::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16915:102;;;;;;;;;;;;;;;;-1:-1:-1;16915:102:0;;;;:::i;1626:49::-;;;;;;;;;;;;;;;;-1:-1:-1;1626:49:0;;;;:::i;11647:108::-;;;;;;;;;;;;;;;;-1:-1:-1;11647:108:0;;;;:::i;18900:1219::-;;;;;;;;;;;;;;;;-1:-1:-1;18900:1219:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6895:575;;;;;;;;;;;;;;;;-1:-1:-1;6895:575:0;;;;;;;;;:::i;2848:39::-;;;;;;;;;;;;;;;;-1:-1:-1;2848:39:0;;;;:::i;197:::-;;;:::i;9745:393::-;;;;;;;;;;;;;;;;-1:-1:-1;9745:393:0;;;;;;;;;:::i;12019:239::-;;;;;;;;;;;;;;;;-1:-1:-1;12019:239:0;;;;;;;;;:::i;18247:222::-;;;;;;;;;;;;;;;;-1:-1:-1;18247:222:0;;;;:::i;17451:595::-;;;;;;;;;;;;;;;;-1:-1:-1;17451:595:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10629:815::-;;;;;;;;;;;;;;;;-1:-1:-1;10629:815:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;527:49::-;;;:::i;15834:933::-;;;;;;;;;;;;;;;;-1:-1:-1;15834:933:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14447:714::-;;;;;;;;;;;;;;;;-1:-1:-1;14447:714:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7774:136::-;;;;;;;;;;;;;;;;-1:-1:-1;7774:136:0;;;;;;;;;;;:::i;1964:117::-;;;:::i;1487:70::-;;;;;;;;;;;;;;;;-1:-1:-1;1487:70:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2619:148;;;:::i;4521:333::-;;;;;;;;;;;;;;;;-1:-1:-1;4521:333:0;;;;:::i;2400:120::-;2444:76;2400:120;:::o;99:37::-;;;;;;;;;;;;;;;;;;;:::o;657:21::-;;;;;;:::o;8388:362::-;8456:4;8473:13;8519:2;8501:9;:21;8497:174;;;-1:-1:-1;8555:2:0;8497:174;;;8600:59;8607:9;8600:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;8591:68;;8497:174;8683:37;8692:10;8704:7;8713:6;8683:8;:37::i;:::-;8738:4;8731:11;;;8388:362;;;;;:::o;398:39::-;;;;:::o;1748:122::-;1790:80;1748:122;:::o;12568:609::-;12650:4;12667:13;12683:64;12690:9;12683:64;;;;;;;;;;;;;;;;;:6;:64::i;:::-;12823:15;;;12758;12823;;;:10;:15;;;;;;;;12776:10;12823:24;;;;;;;;;12667:80;;-1:-1:-1;12776:10:0;12823:24;;;12864:14;;;;;:48;;-1:-1:-1;12882:30:0;;;;;;12864:48;12860:242;;;12929:19;12951:88;12957:16;12975:6;12951:88;;;;;;;;;;;;;;;;;:5;:88::i;:::-;12929:110;;13054:36;13063:3;13068:7;13077:12;13054:8;:36::i;:::-;12860:242;;13114:33;13130:3;13135;13140:6;13114:15;:33::i;:::-;-1:-1:-1;13165:4:0;;12568:609;-1:-1:-1;;;;;;12568:609:0:o;2171:137::-;2213:95;2171:137;:::o;748:31::-;;;;:::o;299:35::-;332:2;299:35;:::o;9052:392::-;9130:4;9147:13;9163:69;9170:9;9163:69;;;;;;;;;;;;;;;;;:6;:69::i;:::-;9282:10;9243:19;9271:22;;;:10;:22;;;;;;;;;:31;;;;;;;;;;9265:95;;;;;;;;;;;;9147:85;;-1:-1:-1;9243:19:0;;9265:95;;9271:31;;;9147:85;;9265:95;;;;;;;:5;:95::i;:::-;9243:117;;9371:43;9380:10;9392:7;9401:12;9371:8;:43::i;:::-;-1:-1:-1;9432:4:0;;9052:392;-1:-1:-1;;;;9052:392:0:o;13457:495::-;13551:4;13582;13612:27;;;13604:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13723:6;13718:205;13739:6;13735:1;:10;13718:205;;;13767:13;13783:69;13790:10;;13801:1;13790:13;;;;;;;;;;;;;13783:69;;;;;;;;;;;;;;;;;:6;:69::i;:::-;13767:85;;13867:44;13883:10;13895:4;;13900:1;13895:7;;;;;;;;;;;;;;;13904:6;13867:15;:44::i;:::-;-1:-1:-1;13747:3:0;;13718:205;;5029:1241;5114:6;;;;5100:10;:20;5092:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5200:19;;5181:15;:38;;5173:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5279:17;;;5271:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5412:94;5419:15;881:8;5412:94;;;;;;;;;;;;;;;;;;;:6;:94::i;:::-;5390:19;:116;;;;5547:13;5563:56;5570:9;5563:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;5630:17;5650:11;5547:72;;-1:-1:-1;5705:3:0;5650:11;5690:18;5680:6;:28;;;;5672:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5781:66;5788:12;5802:6;5781:66;;;;;;;;;;;;;;;;;;;:6;:66::i;:::-;5766:81;-1:-1:-1;562:14:0;5866:25;;;5858:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5949:11;:26;;;6059:13;;;;;:8;:13;;;;;;;;;;6053:70;;;;;;;;;;;;;;6059:13;;;;;6074:6;;6053:70;;;;;;;:5;:70::i;:::-;6037:13;;;;;;;:8;:13;;;;;;;;:86;;;;;;;;;;;6139:33;;;;;;;;6037:13;;;;6139:33;;;;;;;;;;6239:14;;;;6235:1;6239:14;;;:9;:14;;;;;;6212:50;;6239:14;6255:6;6212:14;:50::i;:::-;5029:1241;;;;:::o;6455:209::-;6503:4;6520:13;6536:56;6543:9;6536:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;6520:72;;6603:31;6615:10;6627:6;6603:11;:31::i;:::-;-1:-1:-1;6652:4:0;;6455:209;-1:-1:-1;;6455:209:0:o;1198:45::-;;;;;;;;;;;;;;;:::o;832:57::-;881:8;832:57;:::o;16915:102::-;16977:32;16987:10;16999:9;16977;:32::i;:::-;16915:102;:::o;1626:49::-;;;;;;;;;;;;;;;:::o;11647:108::-;11730:17;;11706:4;11730:17;;;:8;:17;;;;;;;;;11647:108::o;18900:1219::-;18979:6;19020:12;19006:11;:26;18998:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19112:23;;;19090:19;19112:23;;;:14;:23;;;;;;;;19150:17;19146:58;;19191:1;19184:8;;;;;19146:58;19264:20;;;;;;;:11;:20;;;;;;;;:38;19285:16;;;19264:38;;;;;;;;;:48;;:63;-1:-1:-1;19260:147:0;;19351:20;;;;;;;:11;:20;;;;;;;;19372:16;;;;;19351:38;;;;;;;;:44;;;;;;;-1:-1:-1;19344:51:0;;19260:147;19468:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;19464:88:0;;;19539:1;19532:8;;;;;19464:88;19564:12;19606:16;;;19633:428;19648:5;19640:13;;:5;:13;;;19633:428;;;19712:1;19695:13;;;19694:19;;;19686:27;;19755:20;;:::i;:::-;-1:-1:-1;19778:20:0;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;19755:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19825:27;;19821:229;;;19880:8;;;;-1:-1:-1;19873:15:0;;-1:-1:-1;;;;19873:15:0;19821:229;19914:12;;:26;;;-1:-1:-1;19910:140:0;;;19969:6;19961:14;;19910:140;;;20033:1;20024:6;:10;20016:18;;19910:140;19633:428;;;;;-1:-1:-1;20078:20:0;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;18900:1219:0;;;;:::o;6895:575::-;6960:4;6977:13;6993:60;7000:9;6993:60;;;;;;;;;;;;;;;;;:6;:60::i;:::-;7129:15;;;7064;7129;;;:10;:15;;;;;;;;7082:10;7129:24;;;;;;;;;6977:76;;-1:-1:-1;7082:10:0;7129:24;;;7170:14;;;;;:48;;-1:-1:-1;7188:30:0;;;;;;7170:48;7166:238;;;7235:19;7257:84;7263:16;7281:6;7257:84;;;;;;;;;;;;;;;;;:5;:84::i;:::-;7235:106;;7356:36;7365:3;7370:7;7379:12;7356:8;:36::i;:::-;7166:238;;7416:24;7428:3;7433:6;7416:11;:24::i;:::-;-1:-1:-1;7458:4:0;;6895:575;-1:-1:-1;;;;;6895:575:0:o;2848:39::-;;;;;;;;;;;;;:::o;197:::-;;;;;;;;;;;;;;;;;;;:::o;9745:393::-;9823:4;9840:13;9856:69;9863:9;9856:69;;;;;;;;;;;;;;;;;:6;:69::i;:::-;9975:10;9936:19;9964:22;;;:10;:22;;;;;;;;;:31;;;;;;;;;;9958:96;;;;;;;;;;;;9840:85;;-1:-1:-1;9936:19:0;;9958:96;;9964:31;;;9840:85;;9958:96;;;;;;;:5;:96::i;12019:239::-;12084:4;12101:13;12117:60;12124:9;12117:60;;;;;;;;;;;;;;;;;:6;:60::i;:::-;12101:76;;12188:40;12204:10;12216:3;12221:6;12188:15;:40::i;18247:222::-;18353:23;;;18312:6;18353:23;;;:14;:23;;;;;;;;18394:16;:67;;18460:1;18394:67;;;18413:20;;;;;;;:11;:20;;;;;;;;18434:16;;;18413:38;;;;;;;;;:44;;;;;;18394:67;18387:74;18247:222;-1:-1:-1;;;18247:222:0:o;17451:595::-;17594:6;17575:15;:25;;17567:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17686:57;;;2010:71;17686:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17676:68;;;;;17655:18;17775:41;17785:21;17676:68;17785:9;:21::i;:::-;17808:1;17811;17814;17775:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17775:41:0;;;;;;-1:-1:-1;;17835:23:0;;;17827:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17930:17;;;;;;;:6;:17;;;;;:19;;;;;;;;17921:28;;17913:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18007:31;18017:9;18028;18007;:31::i;:::-;18000:38;;17451:595;;;;;;;:::o;10629:815::-;10759:13;10805:2;10787:9;:21;10783:173;;;-1:-1:-1;10841:2:0;10783:173;;;10886:58;10893:9;10886:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;10877:67;;10783:173;10995:8;10976:15;:27;;10968:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11137:13;;;;11051:18;11137:13;;;:6;:13;;;;;;;;:15;;;;;;;;;11082:81;;2213:95;11082:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11072:92;;;;;;;;;11205:21;11072:92;11205:9;:21::i;:::-;11228:1;11231;11234;11195:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11195:41:0;;;;;;-1:-1:-1;;11255:23:0;;;11247:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11347:5;11334:18;;:9;:18;;;11326:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11404:32;11413:5;11420:7;11429:6;11404:8;:32::i;:::-;11397:39;;;10629:815;;;;;;;:::o;527:49::-;562:14;527:49;:::o;15834:933::-;15997:13;16013:72;16020:9;16013:72;;;;;;;;;;;;;;;;;:6;:72::i;:::-;15997:88;;16096:10;16109:66;16116:6;16109:66;;;;;;;;;;;;;;;;;:6;:66::i;:::-;16096:79;;16215:6;16196:15;:25;;16188:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16314:77;;;2672:95;16314:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16304:88;;;;;16283:18;16423:41;16433:21;16304:88;16433:9;:21::i;:::-;16456:1;16459;16462;16423:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16423:41:0;;;;;;-1:-1:-1;;16483:23:0;;;16475:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16585:17;;;;;;;:6;:17;;;;;:19;;;;;;;;16576:28;;16568:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16664:38;16680:9;16691:5;16698:3;16664:15;:38::i;:::-;16720:39;16736:9;16747:3;16752:6;16720:15;:39::i;:::-;16713:46;;;;15834:933;;;;;;;;;:::o;14447:714::-;14575:13;14591:65;14598:9;14591:65;;;;;;;;;;;;;;;;;:6;:65::i;:::-;14575:81;;14696:6;14677:15;:25;;14669:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14788:60;;;2444:76;14788:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14778:71;;;;;14757:18;14880:41;14890:21;14778:71;14890:9;:21::i;:::-;14913:1;14916;14919;14880:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14880:41:0;;;;;;-1:-1:-1;;14940:23:0;;;14932:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15035:17;;;;;;;:6;:17;;;;;:19;;;;;;;;15026:28;;15018:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15114:39;15130:9;15141:3;15146:6;15114:15;:39::i;7774:136::-;7874:19;;;;7850:4;7874:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;7774:136::o;1964:117::-;2010:71;1964:117;:::o;1487:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2619:148::-;2672:95;2619:148;:::o;4521:333::-;4599:6;;;;4585:10;:20;4577:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:21;;;4684:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:6;;4789:30;;;4803:6;;;;4789:30;;;;;;;;;;;;;;;;;;;;;4830:6;:16;;;;;;;;;;;;;;;4521:333::o;23549:161::-;23624:6;23662:12;23655:5;23651:9;;23643:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23700:1:0;;23549:161;-1:-1:-1;;23549:161:0:o;20127:176::-;20212:17;;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;:35;;;;;;;;;;;;;20263:32;;;;;;;;;;;;;;;;;20127:176;;;:::o;23880:165::-;23966:6;23998:1;23993:6;;:1;:6;;;;24001:12;23985:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24032:5:0;;;23880:165::o;21167:618::-;21261:17;;;21253:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21363:17;;;21355:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21479:13;;;;;;;:8;:13;;;;;;;;;;21473:87;;;;;;;;;;;;;;21479:13;;;;;21494:6;;21473:87;;;;;;;:5;:87::i;:::-;21457:13;;;;;;;;:8;:13;;;;;;;;:103;;;;;;;;;;;21593:13;;;;;;;;;;21587:81;;;;;;;;;;;;;;21593:13;;;;;21608:6;;21587:81;;;;;;;;:5;:81::i;:::-;21571:13;;;;;;;;:8;:13;;;;;;;;;:97;;;;;;;;;;;21684:26;;;;;;;;;21571:13;;21684:26;;;;;;;;;;;;;;;21738:14;;;;;;;;:9;:14;;;;;;;21754;;;;;;;;21723:54;;21738:14;;;;21754;21770:6;21723:14;:54::i;:::-;21167:618;;;:::o;23718:154::-;23838:5;;;23851:12;23833:16;;;;;;;;;23825:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23718:154;;;;;:::o;24053:158::-;24177:5;;;24190:12;24172:16;;;;24164:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21793:941;21898:6;21888:16;;:6;:16;;;;:30;;;;;21917:1;21908:6;:10;;;21888:30;21884:843;;;21939:20;;;;21935:383;;21999:22;;;21980:16;21999:22;;;:14;:22;;;;;;;;;22059:13;:60;;22118:1;22059:60;;;22075:19;;;;;;;:11;:19;;;;;;;;22095:13;;;22075:34;;;;;;;;;:40;;;;;;22059:60;22040:79;;22138:16;22157:69;22163:9;22174:6;22157:69;;;;;;;;;;;;;;;;;:5;:69::i;:::-;22138:88;;22245:57;22262:6;22270:9;22281;22292;22245:16;:57::i;:::-;21935:383;;;;22338:20;;;;22334:382;;22398:22;;;22379:16;22398:22;;;:14;:22;;;;;;;;;22458:13;:60;;22517:1;22458:60;;;22474:19;;;;;;;:11;:19;;;;;;;;22494:13;;;22474:34;;;;;;;;;:40;;;;;;22458:60;22439:79;;22537:16;22556:68;22562:9;22573:6;22556:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;22537:87;;22643:57;22660:6;22668:9;22679;22690;22643:16;:57::i;20311:465::-;20388:17;;;20380:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20502:13;;;;;;;:8;:13;;;;;;;;;;20496:83;;;;;;;;;;;;;;20502:13;;;;;20517:6;;20496:83;;;;;;;:5;:83::i;:::-;20480:13;;;;;;;:8;:13;;;;;;;;:99;;;;;;;;;;;20590:21;;;;;;;;;;;20672:33;;;;;;20480:13;;20672:33;;;;;;;;;;;20733:14;;;;;;;;:9;:14;;;;;;20718:50;;20733:14;;20761:6;20718:14;:50::i;:::-;20311:465;;:::o;20784:375::-;20887:20;;;;20861:23;20887:20;;;:9;:20;;;;;;;;;;20944:8;:19;;;;;;20974:20;;;;:32;;;;;;;;;;;21024:54;;20887:20;;;;;20944:19;;;;;20974:32;;20887:20;;;21024:54;;20861:23;21024:54;21091:60;21106:15;21123:9;21134:16;21091:14;:60::i;24219:358::-;24451:4;;;;;;;;;;;;;;;;;24407:75;;1790:80;24407:75;;;;24435:22;24407:75;;;;24349:9;24407:75;;;;24476:4;24407:75;;;;;;;;;;;;;;;;;;;;;;;24397:86;;;;;;24511:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24501:68;;;;;;24219:358::o;22742:630::-;22860:18;22881:77;22888:12;22881:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;22860:98;;22988:1;22973:12;:16;;;:85;;;;-1:-1:-1;22993:22:0;;;;;;;:11;:22;;;;;;;;:65;23016:16;;;22993:40;;;;;;;;;:50;:65;;;:50;;:65;22973:85;22969:329;;;23073:22;;;;;;;:11;:22;;;;;;;;23096:16;;;23073:40;;;;;;;;;:57;;;;;;;;;;;;22969:329;;;23198:33;;;;;;;;;;;;;;;;;;;;;;;;;23159:22;;;-1:-1:-1;23159:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23244:25;;;:14;:25;;;;;;;:44;;23159:72;23272:16;;23244:44;;;;;;;;;;;;;22969:329;23313:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22742:630;;;;;:::o;23380:161::-;23455:6;23493:12;23486:5;23482:9;;23474:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://e89d9355747e824d8a17a69696306ff0c3f943ab91c86a9052e927a1b829b58a
Loading...
Loading
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.