ERC-20
Overview
Max Total Supply
9,102,599.999999999999999998 FRT
Holders
15
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ForrestToken
Compiler Version
v0.7.1+commit.f4a555be
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-22 */ // SPDX-License-Identifier: MIT pragma solidity ^0.7.1; pragma experimental ABIEncoderV2; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function allowance(address account, address spender) external view returns (uint256); function approve(address spender, uint rawAmount) external returns (bool); function balanceOf(address account) external view returns (uint256); function totalSupply() external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } contract ForrestToken is IERC20 { using SafeMath for uint; /// @notice EIP-20 token name for this token string public constant name = "Forrest Token"; /// @notice EIP-20 token symbol for this token string public constant symbol = "FRT"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; uint internal _totalSupply; /// @notice Address which may mint new tokens address public minter; // Allowance amounts on behalf of others mapping (address => mapping (address => uint96)) internal allowances; // Official record of token balances for each account mapping (address => uint96) internal balances; /// @notice A record of each accounts delegate mapping (address => address) public delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint96 votes; } /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the delegation struct used by the contract bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice The EIP-712 typehash for the permit struct used by the contract bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; /// @notice An event that emitted when the minter address is changed event MinterChanged(address minter, address newMinter); /// @notice An event that emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event that 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 Forrest token * @param minter_ The account with minting ability */ constructor(address minter_) { require(minter_ != address(0), "FRT::constructor: minter cannot be address 0"); minter = minter_; emit MinterChanged(address(0), minter); } /** * @notice Total number of tokens in circulation */ function totalSupply() external view override returns (uint256) { return _totalSupply; } /** * @notice Change the minter address * @param minter_ The address of the new minter */ function setMinter(address minter_) external { require(msg.sender == minter, "FRT::setMinter: only the minter can change the minter 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, "FRT::mint: only the minter can mint"); require(dst != address(0), "FRT::mint: cannot transfer to the zero address"); // mint the amount uint96 amount = safe96(rawAmount, "FRT::mint: amount exceeds 96 bits"); _totalSupply = safe96(SafeMath.add(_totalSupply, amount), "FRT::mint: totalSupply exceeds 96 bits"); // transfer the amount to the recipient balances[dst] = add96(balances[dst], amount, "FRT::mint: transfer amount overflows"); emit Transfer(address(0), dst, amount); // move delegates _moveDelegates(address(0), delegates[dst], amount); } /** * @notice Get the number of tokens `spender` is approved to spend on behalf of `account` * @param account The address of the account holding the funds * @param spender The address of the account spending the funds * @return The number of tokens approved */ function allowance(address account, address spender) external view override returns (uint256) { 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 override returns (bool) { uint96 amount; if (rawAmount == uint(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "FRT::approve: amount exceeds 96 bits"); } allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @notice Triggers an approval from owner to spends * @param owner The address to approve from * @param spender The address to be approved * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) * @param deadline The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external { uint96 amount; if (rawAmount == uint(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "FRT::permit: amount exceeds 96 bits"); } bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "FRT::permit: invalid signature"); require(signatory == owner, "FRT::permit: unauthorized"); require(block.timestamp <= deadline, "FRT::permit: signature expired"); allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @notice Get the number of tokens held by the `account` * @param account The address of the account to get the balance of * @return The number of tokens held */ function balanceOf(address account) external view override returns (uint256) { 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 override returns (bool) { uint96 amount = safe96(rawAmount, "FRT::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 override returns (bool) { address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; uint96 amount = safe96(rawAmount, "FRT::approve: amount exceeds 96 bits"); if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96(spenderAllowance, amount, "FRT::transferFrom: transfer amount exceeds spender allowance"); allowances[src][spender] = newAllowance; emit Approval(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) public { return _delegate(msg.sender, delegatee); } /** * @notice Delegates votes from signatory to `delegatee` * @param delegatee The address to delegate votes to * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "FRT::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "FRT::delegateBySig: invalid nonce"); require(block.timestamp <= expiry, "FRT::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint96) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) public view returns (uint96) { require(blockNumber < block.number, "FRT::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = delegates[delegator]; uint96 delegatorBalance = balances[delegator]; delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _transferTokens(address src, address dst, uint96 amount) internal { require(src != address(0), "FRT::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "FRT::_transferTokens: cannot transfer to the zero address"); balances[src] = sub96(balances[src], amount, "FRT::_transferTokens: transfer amount exceeds balance"); balances[dst] = add96(balances[dst], amount, "FRT::_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, "FRT::_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, "FRT::_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, "FRT::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function safe96(uint n, string memory errorMessage) internal pure returns (uint96) { require(n < 2**96, errorMessage); return uint96(n); } function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { uint96 c = a + b; require(c >= a, errorMessage); return c; } function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { require(b <= a, errorMessage); return a - b; } function getChainId() internal pure returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"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":[{"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":"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":"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":"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":"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":"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"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200224b3803806200224b8339810160408190526200003491620000cc565b6001600160a01b038116620000665760405162461bcd60e51b81526004016200005d9062000116565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f692620000bd92600092911690620000fc565b60405180910390a15062000162565b600060208284031215620000de578081fd5b81516001600160a01b0381168114620000f5578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b6020808252602c908201527f4652543a3a636f6e7374727563746f723a206d696e7465722063616e6e6f742060408201526b06265206164647265737320360a41b606082015260800190565b6120d980620001726000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c3578063c3cda5201161007c578063c3cda520146102cc578063d505accf146102df578063dd62ed3e146102f2578063e7a324dc14610305578063f1127ed81461030d578063fca3b5aa1461032e57610158565b806370a0823114610258578063782d6fe11461026b5780637ecebe001461028b57806395d89b411461029e578063a9059cbb146102a6578063b4b5ea57146102b957610158565b806330adf81f1161011557806330adf81f146101e0578063313ce567146101e857806340c10f19146101fd578063587cde1e146102125780635c19a95c146102255780636fcfff451461023857610158565b806306fdde031461015d578063075461721461017b578063095ea7b31461019057806318160ddd146101b057806320606b70146101c557806323b872dd146101cd575b600080fd5b610165610341565b6040516101729190611a58565b60405180910390f35b61018361036a565b604051610172919061197c565b6101a361019e36600461189f565b610379565b60405161017291906119aa565b6101b8610438565b60405161017291906119b5565b6101b861043e565b6101a36101db3660046117f6565b610462565b6101b86105a9565b6101f06105cd565b6040516101729190611e70565b61021061020b36600461189f565b6105d2565b005b6101836102203660046117a7565b610775565b6102106102333660046117a7565b610790565b61024b6102463660046117a7565b61079d565b6040516101729190611e40565b6101b86102663660046117a7565b6107b5565b61027e61027936600461189f565b6107d9565b6040516101729190611e7e565b6101b86102993660046117a7565b6109e7565b6101656109f9565b6101a36102b436600461189f565b610a18565b61027e6102c73660046117a7565b610a54565b6102106102da3660046118c9565b610ac5565b6102106102ed366004611833565b610cd0565b6101b86103003660046117c2565b610fd7565b6101b861100b565b61032061031b366004611922565b61102f565b604051610172929190611e51565b61021061033c3660046117a7565b611064565b6040518060400160405280600d81526020016c2337b93932b9ba102a37b5b2b760991b81525081565b6001546001600160a01b031681565b60008060001983141561038f57506000196103b4565b6103b183604051806060016040528060248152602001611fa8602491396110f7565b90505b3360008181526002602090815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610424908590611e7e565b60405180910390a360019150505b92915050565b60005490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6001600160a01b03831660009081526002602090815260408083203380855290835281842054825160608101909352602480845291936001600160601b039091169285926104ba9288929190611fa8908301396110f7565b9050866001600160a01b0316836001600160a01b0316141580156104e757506001600160601b0382811614155b1561059157600061051183836040518060600160405280603c8152602001611f3d603c9139611126565b6001600160a01b038981166000818152600260209081526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610587908590611e7e565b60405180910390a3505b61059c878783611165565b5060019695505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6001546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90611b7f565b60405180910390fd5b6001600160a01b03821661062b5760405162461bcd60e51b81526004016105fc90611aab565b600061064f82604051806060016040528060218152602001611ed1602191396110f7565b9050610687610669600054836001600160601b031661130b565b604051806060016040528060268152602001611ef2602691396110f7565b6001600160601b0390811660009081556001600160a01b0385168152600360209081526040918290205482516060810190935260248084526106d99491909116928592909190611ead90830139611330565b6001600160a01b03841660008181526003602052604080822080546001600160601b0319166001600160601b03959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610743908590611e7e565b60405180910390a36001600160a01b0380841660009081526004602052604081205461077092168361136c565b505050565b6004602052600090815260409020546001600160a01b031681565b61079a33826114fe565b50565b60066020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600360205260409020546001600160601b031690565b60004382106107fa5760405162461bcd60e51b81526004016105fc90611cb3565b6001600160a01b03831660009081526006602052604090205463ffffffff1680610828576000915050610432565b6001600160a01b038416600090815260056020908152604080832063ffffffff6000198601811685529252909120541683106108a4576001600160a01b03841660009081526005602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610432565b6001600160a01b038416600090815260056020908152604080832083805290915290205463ffffffff168310156108df576000915050610432565b600060001982015b8163ffffffff168163ffffffff1611156109a257600282820363ffffffff16048103610911611768565b506001600160a01b038716600090815260056020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b0316918101919091529087141561097d576020015194506104329350505050565b805163ffffffff168711156109945781935061099b565b6001820392505b50506108e7565b506001600160a01b038516600090815260056020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60076020526000908152604090205481565b6040518060400160405280600381526020016211949560ea1b81525081565b600080610a3d83604051806060016040528060258152602001611f18602591396110f7565b9050610a4a338583611165565b5060019392505050565b6001600160a01b03811660009081526006602052604081205463ffffffff1680610a7f576000610abe565b6001600160a01b0383166000908152600560209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b60408051808201909152600d81526c2337b93932b9ba102a37b5b2b760991b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f4c849df7c00dc55275561f026972c93d2f593f6848678be25c25ab3a7c6e5a23610b36611588565b30604051602001610b4a9493929190611a16565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610b9b94939291906119f2565b60405160208183030381529060405280519060200120905060008282604051602001610bc8929190611961565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610c059493929190611a3a565b6020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c5a5760405162461bcd60e51b81526004016105fc90611b3a565b6001600160a01b03811660009081526007602052604090208054600181019091558914610c995760405162461bcd60e51b81526004016105fc90611af9565b87421115610cb95760405162461bcd60e51b81526004016105fc90611d30565b610cc3818b6114fe565b505050505b505050505050565b6000600019861415610ce55750600019610d0a565b610d0786604051806060016040528060238152602001611fcc602391396110f7565b90505b60408051808201909152600d81526c2337b93932b9ba102a37b5b2b760991b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f4c849df7c00dc55275561f026972c93d2f593f6848678be25c25ab3a7c6e5a23610d7b611588565b30604051602001610d8f9493929190611a16565b60408051601f1981840301815282825280516020918201206001600160a01b038d166000908152600783529283208054600181019091559094509192610e01927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e9290918e91016119be565b60405160208183030381529060405280519060200120905060008282604051602001610e2e929190611961565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610e6b9493929190611a3a565b6020604051602081039080840390855afa158015610e8d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ec05760405162461bcd60e51b81526004016105fc90611cf9565b8b6001600160a01b0316816001600160a01b031614610ef15760405162461bcd60e51b81526004016105fc90611e09565b88421115610f115760405162461bcd60e51b81526004016105fc90611dd2565b84600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610fc19190611e7e565b60405180910390a3505050505050505050505050565b6001600160a01b0391821660009081526002602090815260408083209390941682529190915220546001600160601b031690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600560209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6001546001600160a01b0316331461108e5760405162461bcd60e51b81526004016105fc90611d75565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916110cd916001600160a01b03909116908490611990565b60405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081600160601b841061111e5760405162461bcd60e51b81526004016105fc9190611a58565b509192915050565b6000836001600160601b0316836001600160601b03161115829061115d5760405162461bcd60e51b81526004016105fc9190611a58565b505050900390565b6001600160a01b03831661118b5760405162461bcd60e51b81526004016105fc90611c56565b6001600160a01b0382166111b15760405162461bcd60e51b81526004016105fc90611bc2565b6001600160a01b0383166000908152600360209081526040918290205482516060810190935260358084526111fc936001600160601b03909216928592919061206f90830139611126565b6001600160a01b03848116600090815260036020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602f8084526112649491909116928592909190611f7990830139611330565b6001600160a01b038381166000818152600360205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112d1908590611e7e565b60405180910390a36001600160a01b038084166000908152600460205260408082205485841683529120546107709291821691168361136c565b600082820183811015610abe5760405162461bcd60e51b81526004016105fc90611c1f565b6000838301826001600160601b0380871690831610156113635760405162461bcd60e51b81526004016105fc9190611a58565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561139757506000816001600160601b0316115b15610770576001600160a01b0383161561144f576001600160a01b03831660009081526006602052604081205463ffffffff1690816113d7576000611416565b6001600160a01b0385166000908152600560209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061143d828560405180606001604052806027815260200161202260279139611126565b905061144b8684848461158c565b5050505b6001600160a01b03821615610770576001600160a01b03821660009081526006602052604081205463ffffffff16908161148a5760006114c9565b6001600160a01b0384166000908152600560209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006114f0828560405180606001604052806026815260200161204960269139611330565b9050610cc88584848461158c565b6001600160a01b03808316600081815260046020818152604080842080546003845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461158282848361136c565b50505050565b4690565b60006115b043604051806060016040528060338152602001611fef60339139611741565b905060008463ffffffff161180156115f957506001600160a01b038516600090815260056020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611658576001600160a01b0385166000908152600560209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b038516021790556116f7565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600583528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600690935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611732929190611e92565b60405180910390a25050505050565b600081600160201b841061111e5760405162461bcd60e51b81526004016105fc9190611a58565b604080518082019091526000808252602082015290565b80356001600160a01b038116811461043257600080fd5b803560ff8116811461043257600080fd5b6000602082840312156117b8578081fd5b610abe838361177f565b600080604083850312156117d4578081fd5b6117de848461177f565b91506117ed846020850161177f565b90509250929050565b60008060006060848603121561180a578081fd5b611814858561177f565b9250611823856020860161177f565b9150604084013590509250925092565b600080600080600080600060e0888a03121561184d578283fd5b611857898961177f565b96506118668960208a0161177f565b955060408801359450606088013593506118838960808a01611796565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156118b1578182fd5b6118bb848461177f565b946020939093013593505050565b60008060008060008060c087890312156118e1578182fd5b6118eb888861177f565b955060208701359450604087013593506119088860608901611796565b92506080870135915060a087013590509295509295509295565b60008060408385031215611934578182fd5b61193e848461177f565b9150602083013563ffffffff81168114611956578182fd5b809150509250929050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611a8457858101830151858201604001528201611a68565b81811115611a955783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f4652543a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746860408201526d65207a65726f206164647265737360901b606082015260800190565b60208082526021908201527f4652543a3a64656c656761746542795369673a20696e76616c6964206e6f6e636040820152606560f81b606082015260800190565b60208082526025908201527f4652543a3a64656c656761746542795369673a20696e76616c6964207369676e604082015264617475726560d81b606082015260800190565b60208082526023908201527f4652543a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d6040820152621a5b9d60ea1b606082015260800190565b60208082526039908201527f4652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160408201527f6e7366657220746f20746865207a65726f206164647265737300000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252603b908201527f4652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160408201527f6e736665722066726f6d20746865207a65726f20616464726573730000000000606082015260800190565b60208082526026908201527f4652543a3a6765745072696f72566f7465733a206e6f742079657420646574656040820152651c9b5a5b995960d21b606082015260800190565b6020808252601e908201527f4652543a3a7065726d69743a20696e76616c6964207369676e61747572650000604082015260600190565b60208082526025908201527f4652543a3a64656c656761746542795369673a207369676e61747572652065786040820152641c1a5c995960da1b606082015260800190565b6020808252603d908201527f4652543a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722060408201527f63616e206368616e676520746865206d696e7465722061646472657373000000606082015260800190565b6020808252601e908201527f4652543a3a7065726d69743a207369676e617475726520657870697265640000604082015260600190565b60208082526019908201527f4652543a3a7065726d69743a20756e617574686f72697a656400000000000000604082015260600190565b63ffffffff91909116815260200190565b63ffffffff9290921682526001600160601b0316602082015260400190565b60ff91909116815260200190565b6001600160601b0391909116815260200190565b6001600160601b039283168152911660208201526040019056fe4652543a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f77734652543a3a6d696e743a20616d6f756e74206578636565647320393620626974734652543a3a6d696e743a20746f74616c537570706c79206578636565647320393620626974734652543a3a7472616e736665723a20616d6f756e74206578636565647320393620626974734652543a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63654652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77734652543a3a617070726f76653a20616d6f756e74206578636565647320393620626974734652543a3a7065726d69743a20616d6f756e74206578636565647320393620626974734652543a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77734652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77734652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a26469706673582212203518e4cdcc26a576e218b5863c02782def32b7049850324785d9e5ce1d5d5b6e64736f6c6343000701003300000000000000000000000017f99cf938e2e0e3f5a2ca29808e7b160bd17cca
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c3578063c3cda5201161007c578063c3cda520146102cc578063d505accf146102df578063dd62ed3e146102f2578063e7a324dc14610305578063f1127ed81461030d578063fca3b5aa1461032e57610158565b806370a0823114610258578063782d6fe11461026b5780637ecebe001461028b57806395d89b411461029e578063a9059cbb146102a6578063b4b5ea57146102b957610158565b806330adf81f1161011557806330adf81f146101e0578063313ce567146101e857806340c10f19146101fd578063587cde1e146102125780635c19a95c146102255780636fcfff451461023857610158565b806306fdde031461015d578063075461721461017b578063095ea7b31461019057806318160ddd146101b057806320606b70146101c557806323b872dd146101cd575b600080fd5b610165610341565b6040516101729190611a58565b60405180910390f35b61018361036a565b604051610172919061197c565b6101a361019e36600461189f565b610379565b60405161017291906119aa565b6101b8610438565b60405161017291906119b5565b6101b861043e565b6101a36101db3660046117f6565b610462565b6101b86105a9565b6101f06105cd565b6040516101729190611e70565b61021061020b36600461189f565b6105d2565b005b6101836102203660046117a7565b610775565b6102106102333660046117a7565b610790565b61024b6102463660046117a7565b61079d565b6040516101729190611e40565b6101b86102663660046117a7565b6107b5565b61027e61027936600461189f565b6107d9565b6040516101729190611e7e565b6101b86102993660046117a7565b6109e7565b6101656109f9565b6101a36102b436600461189f565b610a18565b61027e6102c73660046117a7565b610a54565b6102106102da3660046118c9565b610ac5565b6102106102ed366004611833565b610cd0565b6101b86103003660046117c2565b610fd7565b6101b861100b565b61032061031b366004611922565b61102f565b604051610172929190611e51565b61021061033c3660046117a7565b611064565b6040518060400160405280600d81526020016c2337b93932b9ba102a37b5b2b760991b81525081565b6001546001600160a01b031681565b60008060001983141561038f57506000196103b4565b6103b183604051806060016040528060248152602001611fa8602491396110f7565b90505b3360008181526002602090815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610424908590611e7e565b60405180910390a360019150505b92915050565b60005490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6001600160a01b03831660009081526002602090815260408083203380855290835281842054825160608101909352602480845291936001600160601b039091169285926104ba9288929190611fa8908301396110f7565b9050866001600160a01b0316836001600160a01b0316141580156104e757506001600160601b0382811614155b1561059157600061051183836040518060600160405280603c8152602001611f3d603c9139611126565b6001600160a01b038981166000818152600260209081526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610587908590611e7e565b60405180910390a3505b61059c878783611165565b5060019695505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6001546001600160a01b031633146106055760405162461bcd60e51b81526004016105fc90611b7f565b60405180910390fd5b6001600160a01b03821661062b5760405162461bcd60e51b81526004016105fc90611aab565b600061064f82604051806060016040528060218152602001611ed1602191396110f7565b9050610687610669600054836001600160601b031661130b565b604051806060016040528060268152602001611ef2602691396110f7565b6001600160601b0390811660009081556001600160a01b0385168152600360209081526040918290205482516060810190935260248084526106d99491909116928592909190611ead90830139611330565b6001600160a01b03841660008181526003602052604080822080546001600160601b0319166001600160601b03959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610743908590611e7e565b60405180910390a36001600160a01b0380841660009081526004602052604081205461077092168361136c565b505050565b6004602052600090815260409020546001600160a01b031681565b61079a33826114fe565b50565b60066020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600360205260409020546001600160601b031690565b60004382106107fa5760405162461bcd60e51b81526004016105fc90611cb3565b6001600160a01b03831660009081526006602052604090205463ffffffff1680610828576000915050610432565b6001600160a01b038416600090815260056020908152604080832063ffffffff6000198601811685529252909120541683106108a4576001600160a01b03841660009081526005602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610432565b6001600160a01b038416600090815260056020908152604080832083805290915290205463ffffffff168310156108df576000915050610432565b600060001982015b8163ffffffff168163ffffffff1611156109a257600282820363ffffffff16048103610911611768565b506001600160a01b038716600090815260056020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b0316918101919091529087141561097d576020015194506104329350505050565b805163ffffffff168711156109945781935061099b565b6001820392505b50506108e7565b506001600160a01b038516600090815260056020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60076020526000908152604090205481565b6040518060400160405280600381526020016211949560ea1b81525081565b600080610a3d83604051806060016040528060258152602001611f18602591396110f7565b9050610a4a338583611165565b5060019392505050565b6001600160a01b03811660009081526006602052604081205463ffffffff1680610a7f576000610abe565b6001600160a01b0383166000908152600560209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b60408051808201909152600d81526c2337b93932b9ba102a37b5b2b760991b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f4c849df7c00dc55275561f026972c93d2f593f6848678be25c25ab3a7c6e5a23610b36611588565b30604051602001610b4a9493929190611a16565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610b9b94939291906119f2565b60405160208183030381529060405280519060200120905060008282604051602001610bc8929190611961565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610c059493929190611a3a565b6020604051602081039080840390855afa158015610c27573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c5a5760405162461bcd60e51b81526004016105fc90611b3a565b6001600160a01b03811660009081526007602052604090208054600181019091558914610c995760405162461bcd60e51b81526004016105fc90611af9565b87421115610cb95760405162461bcd60e51b81526004016105fc90611d30565b610cc3818b6114fe565b505050505b505050505050565b6000600019861415610ce55750600019610d0a565b610d0786604051806060016040528060238152602001611fcc602391396110f7565b90505b60408051808201909152600d81526c2337b93932b9ba102a37b5b2b760991b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f4c849df7c00dc55275561f026972c93d2f593f6848678be25c25ab3a7c6e5a23610d7b611588565b30604051602001610d8f9493929190611a16565b60408051601f1981840301815282825280516020918201206001600160a01b038d166000908152600783529283208054600181019091559094509192610e01927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e9290918e91016119be565b60405160208183030381529060405280519060200120905060008282604051602001610e2e929190611961565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610e6b9493929190611a3a565b6020604051602081039080840390855afa158015610e8d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ec05760405162461bcd60e51b81526004016105fc90611cf9565b8b6001600160a01b0316816001600160a01b031614610ef15760405162461bcd60e51b81526004016105fc90611e09565b88421115610f115760405162461bcd60e51b81526004016105fc90611dd2565b84600260008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610fc19190611e7e565b60405180910390a3505050505050505050505050565b6001600160a01b0391821660009081526002602090815260408083209390941682529190915220546001600160601b031690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600560209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6001546001600160a01b0316331461108e5760405162461bcd60e51b81526004016105fc90611d75565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916110cd916001600160a01b03909116908490611990565b60405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081600160601b841061111e5760405162461bcd60e51b81526004016105fc9190611a58565b509192915050565b6000836001600160601b0316836001600160601b03161115829061115d5760405162461bcd60e51b81526004016105fc9190611a58565b505050900390565b6001600160a01b03831661118b5760405162461bcd60e51b81526004016105fc90611c56565b6001600160a01b0382166111b15760405162461bcd60e51b81526004016105fc90611bc2565b6001600160a01b0383166000908152600360209081526040918290205482516060810190935260358084526111fc936001600160601b03909216928592919061206f90830139611126565b6001600160a01b03848116600090815260036020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602f8084526112649491909116928592909190611f7990830139611330565b6001600160a01b038381166000818152600360205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112d1908590611e7e565b60405180910390a36001600160a01b038084166000908152600460205260408082205485841683529120546107709291821691168361136c565b600082820183811015610abe5760405162461bcd60e51b81526004016105fc90611c1f565b6000838301826001600160601b0380871690831610156113635760405162461bcd60e51b81526004016105fc9190611a58565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561139757506000816001600160601b0316115b15610770576001600160a01b0383161561144f576001600160a01b03831660009081526006602052604081205463ffffffff1690816113d7576000611416565b6001600160a01b0385166000908152600560209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061143d828560405180606001604052806027815260200161202260279139611126565b905061144b8684848461158c565b5050505b6001600160a01b03821615610770576001600160a01b03821660009081526006602052604081205463ffffffff16908161148a5760006114c9565b6001600160a01b0384166000908152600560209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006114f0828560405180606001604052806026815260200161204960269139611330565b9050610cc88584848461158c565b6001600160a01b03808316600081815260046020818152604080842080546003845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461158282848361136c565b50505050565b4690565b60006115b043604051806060016040528060338152602001611fef60339139611741565b905060008463ffffffff161180156115f957506001600160a01b038516600090815260056020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611658576001600160a01b0385166000908152600560209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b038516021790556116f7565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600583528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600690935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611732929190611e92565b60405180910390a25050505050565b600081600160201b841061111e5760405162461bcd60e51b81526004016105fc9190611a58565b604080518082019091526000808252602082015290565b80356001600160a01b038116811461043257600080fd5b803560ff8116811461043257600080fd5b6000602082840312156117b8578081fd5b610abe838361177f565b600080604083850312156117d4578081fd5b6117de848461177f565b91506117ed846020850161177f565b90509250929050565b60008060006060848603121561180a578081fd5b611814858561177f565b9250611823856020860161177f565b9150604084013590509250925092565b600080600080600080600060e0888a03121561184d578283fd5b611857898961177f565b96506118668960208a0161177f565b955060408801359450606088013593506118838960808a01611796565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156118b1578182fd5b6118bb848461177f565b946020939093013593505050565b60008060008060008060c087890312156118e1578182fd5b6118eb888861177f565b955060208701359450604087013593506119088860608901611796565b92506080870135915060a087013590509295509295509295565b60008060408385031215611934578182fd5b61193e848461177f565b9150602083013563ffffffff81168114611956578182fd5b809150509250929050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611a8457858101830151858201604001528201611a68565b81811115611a955783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f4652543a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746860408201526d65207a65726f206164647265737360901b606082015260800190565b60208082526021908201527f4652543a3a64656c656761746542795369673a20696e76616c6964206e6f6e636040820152606560f81b606082015260800190565b60208082526025908201527f4652543a3a64656c656761746542795369673a20696e76616c6964207369676e604082015264617475726560d81b606082015260800190565b60208082526023908201527f4652543a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d6040820152621a5b9d60ea1b606082015260800190565b60208082526039908201527f4652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160408201527f6e7366657220746f20746865207a65726f206164647265737300000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252603b908201527f4652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160408201527f6e736665722066726f6d20746865207a65726f20616464726573730000000000606082015260800190565b60208082526026908201527f4652543a3a6765745072696f72566f7465733a206e6f742079657420646574656040820152651c9b5a5b995960d21b606082015260800190565b6020808252601e908201527f4652543a3a7065726d69743a20696e76616c6964207369676e61747572650000604082015260600190565b60208082526025908201527f4652543a3a64656c656761746542795369673a207369676e61747572652065786040820152641c1a5c995960da1b606082015260800190565b6020808252603d908201527f4652543a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722060408201527f63616e206368616e676520746865206d696e7465722061646472657373000000606082015260800190565b6020808252601e908201527f4652543a3a7065726d69743a207369676e617475726520657870697265640000604082015260600190565b60208082526019908201527f4652543a3a7065726d69743a20756e617574686f72697a656400000000000000604082015260600190565b63ffffffff91909116815260200190565b63ffffffff9290921682526001600160601b0316602082015260400190565b60ff91909116815260200190565b6001600160601b0391909116815260200190565b6001600160601b039283168152911660208201526040019056fe4652543a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f77734652543a3a6d696e743a20616d6f756e74206578636565647320393620626974734652543a3a6d696e743a20746f74616c537570706c79206578636565647320393620626974734652543a3a7472616e736665723a20616d6f756e74206578636565647320393620626974734652543a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63654652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77734652543a3a617070726f76653a20616d6f756e74206578636565647320393620626974734652543a3a7065726d69743a20616d6f756e74206578636565647320393620626974734652543a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77734652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77734652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a26469706673582212203518e4cdcc26a576e218b5863c02782def32b7049850324785d9e5ce1d5d5b6e64736f6c63430007010033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000017f99cf938e2e0e3f5a2ca29808e7b160bd17cca
-----Decoded View---------------
Arg [0] : minter_ (address): 0x17F99Cf938E2E0E3f5A2CA29808E7b160Bd17cCa
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000017f99cf938e2e0e3f5a2ca29808e7b160bd17cca
Deployed Bytecode Sourcemap
4756:16317:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5213:21;;;:::i;:::-;;;;;;;:::i;10250:427::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7959:102::-;;;:::i;:::-;;;;;;;:::i;6082:122::-;;;:::i;13372:679::-;;;;;;:::i;:::-;;:::i;6505:137::-;;;:::i;5083:35::-;;;:::i;:::-;;;;;;;:::i;8588:732::-;;;;;;:::i;:::-;;:::i;:::-;;5532:45;;;;;;:::i;:::-;;:::i;14199:102::-;;;;;;:::i;:::-;;:::i;5960:49::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12432:120::-;;;;;;:::i;:::-;;:::i;16387:1217::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6723:39::-;;;;;;:::i;:::-;;:::i;4983:37::-;;;:::i;12816:246::-;;;;;;:::i;:::-;;:::i;15734:222::-;;;;;;:::i;:::-;;:::i;14735:798::-;;;;;;:::i;:::-;;:::i;11167:1062::-;;;;;;:::i;:::-;;:::i;9624:148::-;;;;;;:::i;:::-;;:::i;6298:117::-;;;:::i;5821:70::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;8182:231::-;;;;;;:::i;:::-;;:::i;4877:45::-;;;;;;;;;;;;;;-1:-1:-1;;;4877:45:0;;;;:::o;5213:21::-;;;-1:-1:-1;;;;;5213:21:0;;:::o;10250:427::-;10327:4;10344:13;-1:-1:-1;;10372:9:0;:21;10368:172;;;-1:-1:-1;;;10368:172:0;;;10471:57;10478:9;10471:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;10462:66;;10368:172;10563:10;10552:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;10552:31:0;;;;;;;;;;;:40;;-1:-1:-1;;;;;;10552:40:0;-1:-1:-1;;;;;10552:40:0;;;;;10610:37;;10552:31;;10563:10;10610:37;;;;10552:40;;10610:37;:::i;:::-;;;;;;;;10665:4;10658:11;;;10250:427;;;;;:::o;7959:102::-;8014:7;8041:12;7959:102;:::o;6082:122::-;6124:80;6082:122;:::o;13372:679::-;-1:-1:-1;;;;;13545:15:0;;13463:4;13545:15;;;:10;:15;;;;;;;;13498:10;13545:24;;;;;;;;;;13596:57;;;;;;;;;;;;13498:10;;-1:-1:-1;;;;;13545:24:0;;;;13463:4;;13596:57;;13603:9;;13596:57;;;;;;;:6;:57::i;:::-;13580:73;;13681:3;-1:-1:-1;;;;;13670:14:0;:7;-1:-1:-1;;;;;13670:14:0;;;:48;;;;-1:-1:-1;;;;;;13688:30:0;;;;;13670:48;13666:310;;;13735:19;13757:95;13763:16;13781:6;13757:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;-1:-1:-1;;;;;13867:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;13867:39:0;-1:-1:-1;;;;;13867:39:0;;;;;13928:36;13867:39;;-1:-1:-1;13867:24:0;;13928:36;;;;13867:39;;13928:36;:::i;:::-;;;;;;;;13666:310;;13988:33;14004:3;14009;14014:6;13988:15;:33::i;:::-;-1:-1:-1;14039:4:0;;13372:679;-1:-1:-1;;;;;;13372:679:0:o;6505:137::-;6547:95;6505:137;:::o;5083:35::-;5116:2;5083:35;:::o;8588:732::-;8673:6;;-1:-1:-1;;;;;8673:6:0;8659:10;:20;8651:68;;;;-1:-1:-1;;;8651:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8738:17:0;;8730:76;;;;-1:-1:-1;;;8730:76:0;;;;;;;:::i;:::-;8847:13;8863:54;8870:9;8863:54;;;;;;;;;;;;;;;;;:6;:54::i;:::-;8847:70;;8943:84;8950:34;8963:12;;8977:6;-1:-1:-1;;;;;8950:34:0;:12;:34::i;:::-;8943:84;;;;;;;;;;;;;;;;;:6;:84::i;:::-;-1:-1:-1;;;;;8928:99:0;;;:12;:99;;;-1:-1:-1;;;;;9111:13:0;;;;:8;:13;;;;;;;;;;9105:68;;;;;;;;;;;;;;9111:13;;;;;9126:6;;9105:68;;;;;;;;:5;:68::i;:::-;-1:-1:-1;;;;;9089:13:0;;;;;;:8;:13;;;;;;:84;;-1:-1:-1;;;;;;9089:84:0;-1:-1:-1;;;;;9089:84:0;;;;;;;;;;;9189:33;;9089:13;;;9189:33;;;;9215:6;;9189:33;:::i;:::-;;;;;;;;-1:-1:-1;;;;;9289:14:0;;;9285:1;9289:14;;;:9;:14;;;;;;9262:50;;9289:14;9305:6;9262:14;:50::i;:::-;8588:732;;;:::o;5532:45::-;;;;;;;;;;;;-1:-1:-1;;;;;5532:45:0;;:::o;14199:102::-;14261:32;14271:10;14283:9;14261;:32::i;:::-;14199:102;:::o;5960:49::-;;;;;;;;;;;;;;;:::o;12432:120::-;-1:-1:-1;;;;;12527:17:0;12500:7;12527:17;;;:8;:17;;;;;;-1:-1:-1;;;;;12527:17:0;;12432:120::o;16387:1217::-;16466:6;16507:12;16493:11;:26;16485:77;;;;-1:-1:-1;;;16485:77:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16597:23:0;;16575:19;16597:23;;;:14;:23;;;;;;;;16635:17;16631:58;;16676:1;16669:8;;;;;16631:58;-1:-1:-1;;;;;16749:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;16770:16:0;;16749:38;;;;;;;;;:48;;:63;-1:-1:-1;16745:147:0;;-1:-1:-1;;;;;16836:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;16857:16:0;;;;16836:38;;;;;;;;:44;-1:-1:-1;;;16836:44:0;;-1:-1:-1;;;;;16836:44:0;;-1:-1:-1;16829:51:0;;16745:147;-1:-1:-1;;;;;16953:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;16949:88:0;;;17024:1;17017:8;;;;;16949:88;17049:12;-1:-1:-1;;17091:16:0;;17118:428;17133:5;17125:13;;:5;:13;;;17118:428;;;17197:1;17180:13;;;17179:19;;;17171:27;;17240:20;;:::i;:::-;-1:-1:-1;;;;;;17263:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;17240:51;;;;;;;;;;;;;;;-1:-1:-1;;;17240:51:0;;;-1:-1:-1;;;;;17240:51:0;;;;;;;;;17310:27;;17306:229;;;17365:8;;;;-1:-1:-1;17358:15:0;;-1:-1:-1;;;;17358:15:0;17306:229;17399:12;;:26;;;-1:-1:-1;17395:140:0;;;17454:6;17446:14;;17395:140;;;17518:1;17509:6;:10;17501:18;;17395:140;17118:428;;;;;-1:-1:-1;;;;;;17563:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;;;;17563:33:0;;;;;-1:-1:-1;;16387:1217:0;;;;:::o;6723:39::-;;;;;;;;;;;;;:::o;4983:37::-;;;;;;;;;;;;;;-1:-1:-1;;;4983:37:0;;;;:::o;12816:246::-;12890:4;12907:13;12923:58;12930:9;12923:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;12907:74;;12992:40;13008:10;13020:3;13025:6;12992:15;:40::i;:::-;-1:-1:-1;13050:4:0;;12816:246;-1:-1:-1;;;12816:246:0:o;15734:222::-;-1:-1:-1;;;;;15840:23:0;;15799:6;15840:23;;;:14;:23;;;;;;;;15881:16;:67;;15947:1;15881:67;;;-1:-1:-1;;;;;15900:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;15921:16:0;;15900:38;;;;;;;;;:44;-1:-1:-1;;;15900:44:0;;-1:-1:-1;;;;;15900:44:0;15881:67;15874:74;15734:222;-1:-1:-1;;;15734:222:0:o;14735:798::-;14931:4;;;;;;;;;;;;-1:-1:-1;;;14931:4:0;;;;;14851:23;6124:80;14915:22;14939:12;:10;:12::i;:::-;14961:4;14887:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14877:91;;;;;;14851:117;;14979:18;6344:71;15042:9;15053:5;15060:6;15010:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15000:68;;;;;;14979:89;;15079:14;15135:15;15152:10;15106:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15096:68;;;;;;15079:85;;15175:17;15195:26;15205:6;15213:1;15216;15219;15195:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15195:26:0;;-1:-1:-1;;15195:26:0;;;-1:-1:-1;;;;;;;15240:23:0;;15232:73;;;;-1:-1:-1;;;15232:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15333:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;15324:28;;15316:74;;;;-1:-1:-1;;;15316:74:0;;;;;;;:::i;:::-;15428:6;15409:15;:25;;15401:75;;;;-1:-1:-1;;;15401:75:0;;;;;;;:::i;:::-;15494:31;15504:9;15515;15494;:31::i;:::-;15487:38;;;;14735:798;;;;;;;:::o;11167:1062::-;11297:13;-1:-1:-1;;11325:9:0;:21;11321:171;;;-1:-1:-1;;;11321:171:0;;;11424:56;11431:9;11424:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;11415:65;;11321:171;11584:4;;;;;;;;;;;;-1:-1:-1;;;11584:4:0;;;;;11504:23;6124:80;11568:22;11592:12;:10;:12::i;:::-;11614:4;11540:80;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11540:80:0;;;;;;;;;11530:91;;11540:80;11530:91;;;;-1:-1:-1;;;;;11718:13:0;;11632:18;11718:13;;;:6;:13;;;;;:15;;;;;;;;11530:91;;-1:-1:-1;11632:18:0;;11663:81;;6547:95;;11691:5;;11698:7;;11707:9;;11718:15;;11735:8;;11663:81;;:::i;:::-;;;;;;;;;;;;;11653:92;;;;;;11632:113;;11756:14;11812:15;11829:10;11783:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11773:68;;;;;;11756:85;;11852:17;11872:26;11882:6;11890:1;11893;11896;11872:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11872:26:0;;-1:-1:-1;;11872:26:0;;;-1:-1:-1;;;;;;;11917:23:0;;11909:66;;;;-1:-1:-1;;;11909:66:0;;;;;;;:::i;:::-;12007:5;-1:-1:-1;;;;;11994:18:0;:9;-1:-1:-1;;;;;11994:18:0;;11986:56;;;;-1:-1:-1;;;11986:56:0;;;;;;;:::i;:::-;12080:8;12061:15;:27;;12053:70;;;;-1:-1:-1;;;12053:70:0;;;;;;;:::i;:::-;12165:6;12136:10;:17;12147:5;-1:-1:-1;;;;;12136:17:0;-1:-1:-1;;;;;12136:17:0;;;;;;;;;;;;:26;12154:7;-1:-1:-1;;;;;12136:26:0;-1:-1:-1;;;;;12136:26:0;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;;;;12136:35:0;;;;;-1:-1:-1;;;;;12136:35:0;;;;;;12205:7;-1:-1:-1;;;;;12189:32:0;12198:5;-1:-1:-1;;;;;12189:32:0;;12214:6;12189:32;;;;;;:::i;:::-;;;;;;;;11167:1062;;;;;;;;;;;;:::o;9624:148::-;-1:-1:-1;;;;;9736:19:0;;;9709:7;9736:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;9736:28:0;;9624:148::o;6298:117::-;6344:71;6298:117;:::o;5821:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5821:70:0;;-1:-1:-1;;;;;5821:70:0;;:::o;8182:231::-;8260:6;;-1:-1:-1;;;;;8260:6:0;8246:10;:20;8238:94;;;;-1:-1:-1;;;8238:94:0;;;;;;;:::i;:::-;8362:6;;8348:30;;;;;;-1:-1:-1;;;;;8362:6:0;;;;8370:7;;8348:30;:::i;:::-;;;;;;;;8389:6;:16;;-1:-1:-1;;;;;;8389:16:0;-1:-1:-1;;;;;8389:16:0;;;;;;;;;;8182:231::o;20379:161::-;20454:6;20492:12;-1:-1:-1;;;20481:9:0;;20473:32;;;;-1:-1:-1;;;20473:32:0;;;;;;;;:::i;:::-;-1:-1:-1;20530:1:0;;20379:161;-1:-1:-1;;20379:161:0:o;20744:165::-;20830:6;20862:1;-1:-1:-1;;;;;20857:6:0;:1;-1:-1:-1;;;;;20857:6:0;;;20865:12;20849:29;;;;;-1:-1:-1;;;20849:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;20896:5:0;;;20744:165::o;17995:610::-;-1:-1:-1;;;;;18089:17:0;;18081:89;;;;-1:-1:-1;;;18081:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18189:17:0;;18181:87;;;;-1:-1:-1;;;18181:87:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18303:13:0;;;;;;:8;:13;;;;;;;;;;18297:85;;;;;;;;;;;;;;-1:-1:-1;;;;;18303:13:0;;;;18318:6;;18297:85;;;;;;;:5;:85::i;:::-;-1:-1:-1;;;;;18281:13:0;;;;;;;:8;:13;;;;;;;;:101;;-1:-1:-1;;;;;;18281:101:0;-1:-1:-1;;;;;18281:101:0;;;;;;18415:13;;;;;;;;;;18409:79;;;;;;;;;;;;;;18415:13;;;;;18430:6;;18409:79;;;;;;;;:5;:79::i;:::-;-1:-1:-1;;;;;18393:13:0;;;;;;;:8;:13;;;;;;;:95;;-1:-1:-1;;;;;;18393:95:0;-1:-1:-1;;;;;18393:95:0;;;;;;;;;;;18504:26;;;;;;;;;;18523:6;;18504:26;:::i;:::-;;;;;;;;-1:-1:-1;;;;;18558:14:0;;;;;;;:9;:14;;;;;;;18574;;;;;;;;18543:54;;18558:14;;;;18574;18590:6;18543:14;:54::i;935:181::-;993:7;1025:5;;;1049:6;;;;1041:46;;;;-1:-1:-1;;;1041:46:0;;;;;;;:::i;20548:188::-;20634:6;20664:5;;;20696:12;-1:-1:-1;;;;;20688:6:0;;;;;;;;20680:29;;;;-1:-1:-1;;;20680:29:0;;;;;;;;:::i;:::-;-1:-1:-1;20727:1:0;20548:188;-1:-1:-1;;;;20548:188:0:o;18613:937::-;18718:6;-1:-1:-1;;;;;18708:16:0;:6;-1:-1:-1;;;;;18708:16:0;;;:30;;;;;18737:1;18728:6;-1:-1:-1;;;;;18728:10:0;;18708:30;18704:839;;;-1:-1:-1;;;;;18759:20:0;;;18755:381;;-1:-1:-1;;;;;18819:22:0;;18800:16;18819:22;;;:14;:22;;;;;;;;;18879:13;:60;;18938:1;18879:60;;;-1:-1:-1;;;;;18895:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;18915:13:0;;18895:34;;;;;;;;;:40;-1:-1:-1;;;18895:40:0;;-1:-1:-1;;;;;18895:40:0;18879:60;18860:79;;18958:16;18977:67;18983:9;18994:6;18977:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;18958:86;;19063:57;19080:6;19088:9;19099;19110;19063:16;:57::i;:::-;18755:381;;;;-1:-1:-1;;;;;19156:20:0;;;19152:380;;-1:-1:-1;;;;;19216:22:0;;19197:16;19216:22;;;:14;:22;;;;;;;;;19276:13;:60;;19335:1;19276:60;;;-1:-1:-1;;;;;19292:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;19312:13:0;;19292:34;;;;;;;;;:40;-1:-1:-1;;;19292:40:0;;-1:-1:-1;;;;;19292:40:0;19276:60;19257:79;;19355:16;19374:66;19380:9;19391:6;19374:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;19355:85;;19459:57;19476:6;19484:9;19495;19506;19459:16;:57::i;17612:375::-;-1:-1:-1;;;;;17715:20:0;;;17689:23;17715:20;;;:9;:20;;;;;;;;;;17772:8;:19;;;;;;17802:20;;;;:32;;;-1:-1:-1;;;;;;17802:32:0;;;;;;;17852:54;;17715:20;;;;;-1:-1:-1;;;;;17772:19:0;;;;17802:32;;17715:20;;;17852:54;;17689:23;17852:54;17919:60;17934:15;17951:9;17962:16;17919:14;:60::i;:::-;17612:375;;;;:::o;20917:153::-;21027:9;20917:153;:::o;19558:644::-;19678:18;19699:75;19706:12;19699:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;19678:96;;19806:1;19791:12;:16;;;:85;;;;-1:-1:-1;;;;;;19811:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;19834:16:0;;19811:40;;;;;;;;;:50;:65;;;:50;;:65;19791:85;19787:339;;;-1:-1:-1;;;;;19893:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;19916:16:0;;19893:40;;;;;;;;;:57;;-1:-1:-1;;19893:57:0;-1:-1:-1;;;;;;;;19893:57:0;;;;;;19787:339;;;20022:33;;;;;;;;;;;;;;-1:-1:-1;;;;;20022:33:0;;;;;;;;;;-1:-1:-1;;;;;19983:22:0;;-1:-1:-1;19983:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;19983:72:0;-1:-1:-1;;19983:72:0;;;-1:-1:-1;;19983:72:0;;;;;;;;;;;;;;;20070:25;;;:14;:25;;;;;;;:44;;19983:72;20098:16;;20070:44;;;;;;;;;;;;;19787:339;20164:9;-1:-1:-1;;;;;20143:51:0;;20175:8;20185;20143:51;;;;;;;:::i;:::-;;;;;;;;19558:644;;;;;:::o;20210:161::-;20285:6;20323:12;-1:-1:-1;;;20312:9:0;;20304:32;;;;-1:-1:-1;;;20304:32:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;-1:-1;;;;;23698:54;;24772:35;;24762:2;;24821:1;;24811:12;551:126;616:20;;24009:4;23998:16;;25264:33;;25254:2;;25311:1;;25301:12;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;-1:-1;;794:12;756:2;856:53;901:7;877:22;856:53;:::i;932:366::-;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;-1:-1;;1059:12;1021:2;1121:53;1166:7;1142:22;1121:53;:::i;:::-;1111:63;;1229:53;1274:7;1211:2;1254:9;1250:22;1229:53;:::i;:::-;1219:63;;1015:283;;;;;:::o;1305:491::-;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;-1:-1;;1449:12;1411:2;1511:53;1556:7;1532:22;1511:53;:::i;:::-;1501:63;;1619:53;1664:7;1601:2;1644:9;1640:22;1619:53;:::i;:::-;1609:63;;1709:2;1752:9;1748:22;346:20;1717:63;;1405:391;;;;;:::o;1803:991::-;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;-1:-1;;2014:12;1975:2;2076:53;2121:7;2097:22;2076:53;:::i;:::-;2066:63;;2184:53;2229:7;2166:2;2209:9;2205:22;2184:53;:::i;:::-;2174:63;;2274:2;2317:9;2313:22;346:20;2282:63;;2382:2;2425:9;2421:22;346:20;2390:63;;2509:51;2552:7;2490:3;2532:9;2528:22;2509:51;:::i;:::-;2499:61;;2597:3;2641:9;2637:22;209:20;2606:63;;2706:3;2750:9;2746:22;209:20;2715:63;;1969:825;;;;;;;;;;:::o;2801:366::-;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;-1:-1;;2928:12;2890:2;2990:53;3035:7;3011:22;2990:53;:::i;:::-;2980:63;3080:2;3119:22;;;;346:20;;-1:-1;;;2884:283::o;3174:865::-;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;-1:-1;;3368:12;3329:2;3430:53;3475:7;3451:22;3430:53;:::i;:::-;3420:63;;3520:2;3563:9;3559:22;346:20;3528:63;;3628:2;3671:9;3667:22;346:20;3636:63;;3754:51;3797:7;3736:2;3777:9;3773:22;3754:51;:::i;:::-;3744:61;;3842:3;3886:9;3882:22;209:20;3851:63;;3951:3;3995:9;3991:22;209:20;3960:63;;3323:716;;;;;;;;:::o;4046:364::-;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;-1:-1;;4172:12;4134:2;4234:53;4279:7;4255:22;4234:53;:::i;:::-;4224:63;;4324:2;4366:9;4362:22;482:20;23915:10;25170:5;23904:22;25146:5;25143:34;25133:2;;-1:-1;;25181:12;25133:2;4332:62;;;;4128:282;;;;;:::o;11152:659::-;-1:-1;;;7092:87;;7077:1;7198:11;;4719:37;;;;11663:12;;;4719:37;11774:12;;;11397:414::o;11818:222::-;-1:-1;;;;;23698:54;;;;4488:37;;11945:2;11930:18;;11916:124::o;12047:333::-;-1:-1;;;;;23698:54;;;4488:37;;23698:54;;12366:2;12351:18;;4488:37;12202:2;12187:18;;12173:207::o;12387:210::-;23531:13;;23524:21;4602:34;;12508:2;12493:18;;12479:118::o;12604:222::-;4719:37;;;12731:2;12716:18;;12702:124::o;12833:780::-;4719:37;;;-1:-1;;;;;23698:54;;;13265:2;13250:18;;4488:37;23698:54;;;;13348:2;13333:18;;4488:37;13431:2;13416:18;;4719:37;13514:3;13499:19;;4719:37;;;;23709:42;13583:19;;4719:37;13100:3;13085:19;;13071:542::o;13620:556::-;4719:37;;;-1:-1;;;;;23698:54;;;;13996:2;13981:18;;4488:37;14079:2;14064:18;;4719:37;14162:2;14147:18;;4719:37;13831:3;13816:19;;13802:374::o;14183:556::-;4719:37;;;14559:2;14544:18;;4719:37;;;;14642:2;14627:18;;4719:37;-1:-1;;;;;23698:54;14725:2;14710:18;;4488:37;14394:3;14379:19;;14365:374::o;14746:548::-;4719:37;;;24009:4;23998:16;;;;15114:2;15099:18;;10857:35;15197:2;15182:18;;4719:37;15280:2;15265:18;;4719:37;14953:3;14938:19;;14924:370::o;15301:310::-;;15448:2;;15469:17;15462:47;5072:5;23000:12;23157:6;15448:2;15437:9;15433:18;23145:19;-1:-1;24323:101;24337:6;24334:1;24331:13;24323:101;;;24404:11;;;;;24398:18;24385:11;;;23185:14;24385:11;24378:39;24352:10;;24323:101;;;24439:6;24436:1;24433:13;24430:2;;;-1:-1;23185:14;24495:6;15437:9;24486:16;;24479:27;24430:2;-1:-1;24692:7;24676:14;-1:-1;;24672:28;5230:39;;;;23185:14;5230:39;;15419:192;-1:-1;;;15419:192::o;15618:416::-;15818:2;15832:47;;;5506:2;15803:18;;;23145:19;5542:34;23185:14;;;5522:55;-1:-1;;;5597:12;;;5590:38;5647:12;;;15789:245::o;16041:416::-;16241:2;16255:47;;;5898:2;16226:18;;;23145:19;5934:34;23185:14;;;5914:55;-1:-1;;;5989:12;;;5982:25;6026:12;;;16212:245::o;16464:416::-;16664:2;16678:47;;;6277:2;16649:18;;;23145:19;6313:34;23185:14;;;6293:55;-1:-1;;;6368:12;;;6361:29;6409:12;;;16635:245::o;16887:416::-;17087:2;17101:47;;;6660:2;17072:18;;;23145:19;6696:34;23185:14;;;6676:55;-1:-1;;;6751:12;;;6744:27;6790:12;;;17058:245::o;17310:416::-;17510:2;17524:47;;;7448:2;17495:18;;;23145:19;7484:34;23185:14;;;7464:55;7553:27;7539:12;;;7532:49;7600:12;;;17481:245::o;17733:416::-;17933:2;17947:47;;;7851:2;17918:18;;;23145:19;7887:29;23185:14;;;7867:50;7936:12;;;17904:245::o;18156:416::-;18356:2;18370:47;;;8187:2;18341:18;;;23145:19;8223:34;23185:14;;;8203:55;8292:29;8278:12;;;8271:51;8341:12;;;18327:245::o;18579:416::-;18779:2;18793:47;;;8592:2;18764:18;;;23145:19;8628:34;23185:14;;;8608:55;-1:-1;;;8683:12;;;8676:30;8725:12;;;18750:245::o;19002:416::-;19202:2;19216:47;;;8976:2;19187:18;;;23145:19;9012:32;23185:14;;;8992:53;9064:12;;;19173:245::o;19425:416::-;19625:2;19639:47;;;9315:2;19610:18;;;23145:19;9351:34;23185:14;;;9331:55;-1:-1;;;9406:12;;;9399:29;9447:12;;;19596:245::o;19848:416::-;20048:2;20062:47;;;9698:2;20033:18;;;23145:19;9734:34;23185:14;;;9714:55;9803:31;9789:12;;;9782:53;9854:12;;;20019:245::o;20271:416::-;20471:2;20485:47;;;10105:2;20456:18;;;23145:19;10141:32;23185:14;;;10121:53;10193:12;;;20442:245::o;20694:416::-;20894:2;20908:47;;;10444:2;20879:18;;;23145:19;10480:27;23185:14;;;10460:48;10527:12;;;20865:245::o;21346:218::-;23915:10;23904:22;;;;10742:36;;21471:2;21456:18;;21442:122::o;21571:325::-;23915:10;23904:22;;;;10742:36;;-1:-1;;;;;24087:38;21882:2;21867:18;;11104:36;21722:2;21707:18;;21693:203::o;21903:214::-;24009:4;23998:16;;;;10857:35;;22026:2;22011:18;;21997:120::o;22124:220::-;-1:-1;;;;;24087:38;;;;10974:49;;22250:2;22235:18;;22221:123::o;22576:329::-;-1:-1;;;;;24087:38;;;10974:49;;24087:38;;22891:2;22876:18;;10974:49;22729:2;22714:18;;22700:205::o
Swarm Source
ipfs://3518e4cdcc26a576e218b5863c02782def32b7049850324785d9e5ce1d5d5b6e
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.