More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 109,387 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Check In Catchup | 70646487 | 36 mins ago | IN | 0 POL | 0.0058359 | ||||
Check In Catchup | 70645922 | 56 mins ago | IN | 0 POL | 0.00583494 | ||||
Check In Catchup | 70645629 | 1 hr ago | IN | 0 POL | 0.00583554 | ||||
Check In Catchup | 70644772 | 1 hr ago | IN | 0 POL | 0.0058359 | ||||
Check In Catchup | 70644235 | 1 hr ago | IN | 0 POL | 0.00583554 | ||||
Check In Catchup | 70644212 | 1 hr ago | IN | 0 POL | 0.00584891 | ||||
Check In Catchup | 70643903 | 2 hrs ago | IN | 0 POL | 0.00583589 | ||||
Check In Catchup | 70640842 | 3 hrs ago | IN | 0 POL | 0.0058353 | ||||
Check In Catchup | 70640828 | 3 hrs ago | IN | 0 POL | 0.0058353 | ||||
Check In Catchup | 70639995 | 4 hrs ago | IN | 0 POL | 0.00583494 | ||||
Check In Catchup | 70639243 | 4 hrs ago | IN | 0 POL | 0.00622432 | ||||
Check In Catchup | 70636982 | 6 hrs ago | IN | 0 POL | 0.0058359 | ||||
Check In Catchup | 70636715 | 6 hrs ago | IN | 0 POL | 0.0058353 | ||||
Check In Catchup | 70636697 | 6 hrs ago | IN | 0 POL | 0.0058353 | ||||
Check In Catchup | 70636011 | 6 hrs ago | IN | 0 POL | 0.0058353 | ||||
Check In Catchup | 70635968 | 6 hrs ago | IN | 0 POL | 0.00660429 | ||||
Check In Catchup | 70635910 | 6 hrs ago | IN | 0 POL | 0.00583554 | ||||
Check In Catchup | 70635907 | 6 hrs ago | IN | 0 POL | 0.00583494 | ||||
Check In Catchup | 70635713 | 6 hrs ago | IN | 0 POL | 0.00615653 | ||||
Check In Catchup | 70635033 | 7 hrs ago | IN | 0 POL | 0.0058353 | ||||
Check In Catchup | 70634840 | 7 hrs ago | IN | 0 POL | 0.0058359 | ||||
Check In Catchup | 70634834 | 7 hrs ago | IN | 0 POL | 0.00583554 | ||||
Check In Catchup | 70634024 | 7 hrs ago | IN | 0 POL | 0.00486325 | ||||
Check In Catchup | 70633946 | 8 hrs ago | IN | 0 POL | 0.00486275 | ||||
Check In Catchup | 70633843 | 8 hrs ago | IN | 0 POL | 0.00486325 |
Loading...
Loading
Contract Name:
TowerCatchUp
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-07-28 */ // Sources flattened with hardhat v2.9.7 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/security/[email protected] // OpenZeppelin Contracts v4.4.1 (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/cryptography/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.0; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] * * _Available since v4.3._ */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] * * _Available since v4.3._ */ function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. * * _Available since v4.2._ */ function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. * * _Available since v4.3._ */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Message, created from `s`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } } // File contracts/catchup/TowerCatchUp.sol pragma solidity ^0.8.0; interface IToken { function transferFrom( address from, address to, uint256 amount ) external returns (bool); function transfer(address to, uint256 amount) external returns (bool); } contract TowerCatchUp is Pausable, Ownable { using ECDSA for bytes32; event CatchupDone(string _playerId, address indexed _msgSender, uint256 _catchupDays, uint256 _amount); event VerifierChanged(address _owner, address indexed _oldSigner, address indexed _newSigner); event TokenWithdrawn(address _receiver, uint256 _amount); address public verifier; IToken public tokenAddress; // total number of days done catchup for uint256 public totalCatchupCheckins = 0; struct CheckInEntry { string _playerId; uint256 _catchupDays; uint256 _amount; uint256 _timestamp; } mapping(address => uint256) public userNonce; // mapping for itemId and the number of such items purchased mapping(address => CheckInEntry[]) public catchupEntries; mapping(address => uint256) public catchupCounter; constructor(address _tokenAddress, address _verifier) { tokenAddress = IToken(_tokenAddress); verifier = _verifier; } function setVerifier(address _newVerifier) external onlyOwner { emit VerifierChanged(msg.sender, verifier, _newVerifier); verifier = _newVerifier; } function verifySignature( string memory _playerId, address _msgSender, uint256 _catchupDays, uint256 _amount, bytes memory _signature ) internal returns (bool) { uint256 nonce = userNonce[_msgSender]; bytes32 hash = keccak256(abi.encodePacked(_playerId, _msgSender, _catchupDays, _amount, nonce)); require(hash.toEthSignedMessageHash().recover(_signature) == verifier, "TOWERCatchup: invalid signature"); userNonce[_msgSender]++; return true; } function checkInCatchup( string memory _playerId, uint256 _catchupDays, uint256 _amount, bytes memory _signature ) external { address msgSender = msg.sender; require(bytes(_playerId).length > 0, "TOWERCatchup: invalid id"); require(_catchupDays > 0, "TOWERCatchup: invalid days"); require(_amount > 0, "TOWERCatchup: invalid amount"); require(verifySignature(_playerId, msgSender, _catchupDays, _amount, _signature)); CheckInEntry[] storage checkInEntries = catchupEntries[msgSender]; CheckInEntry memory checkInEntry = CheckInEntry(_playerId, _catchupDays, _amount, block.timestamp); catchupCounter[msgSender] += _catchupDays; checkInEntries.push(checkInEntry); totalCatchupCheckins += _catchupDays; IToken(tokenAddress).transferFrom(msgSender, address(this), _amount); emit CatchupDone(_playerId, msgSender, _catchupDays, _amount); } function withdrawToken(address _receiver, uint256 _amount) external onlyOwner { IToken(tokenAddress).transfer(_receiver, _amount); emit TokenWithdrawn(_receiver, _amount); } function pause() external onlyOwner whenNotPaused { _pause(); } function unpause() external onlyOwner whenPaused { _unpause(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_verifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_playerId","type":"string"},{"indexed":true,"internalType":"address","name":"_msgSender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_catchupDays","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"CatchupDone","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TokenWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_oldSigner","type":"address"},{"indexed":true,"internalType":"address","name":"_newSigner","type":"address"}],"name":"VerifierChanged","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"catchupCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"catchupEntries","outputs":[{"internalType":"string","name":"_playerId","type":"string"},{"internalType":"uint256","name":"_catchupDays","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_playerId","type":"string"},{"internalType":"uint256","name":"_catchupDays","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"checkInCatchup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newVerifier","type":"address"}],"name":"setVerifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"contract IToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCatchupCheckins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"verifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260006003553480156200001657600080fd5b50604051620016d2380380620016d28339810160408190526200003991620000f6565b6000805460ff191690556200004e3362000080565b600280546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556200012e565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b80516001600160a01b0381168114620000f157600080fd5b919050565b600080604083850312156200010a57600080fd5b6200011583620000d9565b91506200012560208401620000d9565b90509250929050565b611594806200013e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a6116100975780639e281a98116100665780639e281a98146101f7578063caf0b3eb1461020a578063e012eec91461022d578063f2fde38b1461023657600080fd5b8063715018a6146101be5780638456cb59146101c65780638da5cb5b146101ce5780639d76ea58146101e457600080fd5b80633f4ba83a116100d35780633f4ba83a1461016d5780634fd82f26146101755780635437988d146101955780635c975abb146101a857600080fd5b806309a5a7a7146100fa5780632b7ac3f31461010f5780632e04b8e71461013f575b600080fd5b61010d61010836600461126d565b610249565b005b600154610122906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015f61014d36600461132b565b60046020526000908152604090205481565b604051908152602001610136565b61010d6104f9565b61015f61018336600461132b565b60066020526000908152604090205481565b61010d6101a336600461132b565b6105b5565b60005460ff166040519015158152602001610136565b61010d610693565b61010d6106fd565b60005461010090046001600160a01b0316610122565b600254610122906001600160a01b031681565b61010d61020536600461134d565b6107b8565b61021d61021836600461134d565b6108ef565b60405161013694939291906113d3565b61015f60035481565b61010d61024436600461132b565b6109c4565b8351339061029e5760405162461bcd60e51b815260206004820152601860248201527f544f574552436174636875703a20696e76616c6964206964000000000000000060448201526064015b60405180910390fd5b600084116102ee5760405162461bcd60e51b815260206004820152601a60248201527f544f574552436174636875703a20696e76616c696420646179730000000000006044820152606401610295565b6000831161033e5760405162461bcd60e51b815260206004820152601c60248201527f544f574552436174636875703a20696e76616c696420616d6f756e74000000006044820152606401610295565b61034b8582868686610aac565b61035457600080fd5b6001600160a01b038116600081815260056020908152604080832081516080810183528a81528084018a905280830189905242606082015294845260069092528220805491939288926103a8908490611418565b909155505081546001810183556000838152602090819020835180518594600402909201926103dc92849290910190611148565b506020820151816001015560408201518160020155606082015181600301555050856003600082825461040f9190611418565b90915550506002546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015230602483015260448201889052909116906323b872dd906064016020604051808303816000875af1158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104aa9190611430565b50826001600160a01b03167fe0c6821ee1433c97f1db3640014a7ecc27d3a09c082c5d77e170b0dcbf374ffe8888886040516104e893929190611452565b60405180910390a250505050505050565b6000546001600160a01b036101009091041633146105595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b60005460ff166105ab5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610295565b6105b3610bf7565b565b6000546001600160a01b036101009091041633146106155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6001546040513381526001600160a01b038381169216907fab33b60d90e477d6167b1a1d4836dba194477e182f98e153fd984ed5ce6d10229060200160405180910390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b036101009091041633146106f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6105b36000610c93565b6000546001600160a01b0361010090910416331461075d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b60005460ff16156107b05760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610295565b6105b3610d03565b6000546001600160a01b036101009091041633146108185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a89190611430565b50604080516001600160a01b0384168152602081018390527fa2bd9fcfcdba69f52bcd9a520846ad4bd685b187483f53efc42d035b2ddebff0910160405180910390a15050565b6005602052816000526040600020818154811061090b57600080fd5b90600052602060002090600402016000915091505080600001805461092f90611477565b80601f016020809104026020016040519081016040528092919081815260200182805461095b90611477565b80156109a85780601f1061097d576101008083540402835291602001916109a8565b820191906000526020600020905b81548152906001019060200180831161098b57829003601f168201915b5050505050908060010154908060020154908060030154905084565b6000546001600160a01b03610100909104163314610a245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6001600160a01b038116610aa05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610295565b610aa981610c93565b50565b6001600160a01b038416600090815260046020908152604080832054905190918391610ae2918a918a918a918a918891016114b1565b60408051601f1981840301815291905280516020909101206001549091506001600160a01b0316610b6a85610b64846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90610d8b565b6001600160a01b031614610bc05760405162461bcd60e51b815260206004820152601f60248201527f544f574552436174636875703a20696e76616c6964207369676e6174757265006044820152606401610295565b6001600160a01b0387166000908152600460205260408120805491610be483611510565b9091555060019998505050505050505050565b60005460ff16610c495760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610295565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005460ff1615610d565760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610295565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c763390565b6000806000610d9a8585610daf565b91509150610da781610e1d565b509392505050565b6000808251604103610de55760208301516040840151606085015160001a610dd987828585611009565b94509450505050610e16565b8251604003610e0e5760208301516040840151610e038683836110f6565b935093505050610e16565b506000905060025b9250929050565b6000816004811115610e3157610e31611548565b03610e395750565b6001816004811115610e4d57610e4d611548565b03610e9a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610295565b6002816004811115610eae57610eae611548565b03610efb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610295565b6003816004811115610f0f57610f0f611548565b03610f825760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610295565b6004816004811115610f9657610f96611548565b03610aa95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610295565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561104057506000905060036110ed565b8460ff16601b1415801561105857508460ff16601c14155b1561106957506000905060046110ed565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156110bd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110e6576000600192509250506110ed565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168161112c60ff86901c601b611418565b905061113a87828885611009565b935093505050935093915050565b82805461115490611477565b90600052602060002090601f01602090048101928261117657600085556111bc565b82601f1061118f57805160ff19168380011785556111bc565b828001600101855582156111bc579182015b828111156111bc5782518255916020019190600101906111a1565b506111c89291506111cc565b5090565b5b808211156111c857600081556001016111cd565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611212576112126111e1565b604051601f8501601f19908116603f0116810190828211818310171561123a5761123a6111e1565b8160405280935085815286868601111561125357600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561128357600080fd5b843567ffffffffffffffff8082111561129b57600080fd5b818701915087601f8301126112af57600080fd5b6112be888335602085016111f7565b9550602087013594506040870135935060608701359150808211156112e257600080fd5b508501601f810187136112f457600080fd5b611303878235602084016111f7565b91505092959194509250565b80356001600160a01b038116811461132657600080fd5b919050565b60006020828403121561133d57600080fd5b6113468261130f565b9392505050565b6000806040838503121561136057600080fd5b6113698361130f565b946020939093013593505050565b60005b8381101561139257818101518382015260200161137a565b838111156113a1576000848401525b50505050565b600081518084526113bf816020860160208601611377565b601f01601f19169290920160200192915050565b6080815260006113e660808301876113a7565b6020830195909552506040810192909252606090910152919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561142b5761142b611402565b500190565b60006020828403121561144257600080fd5b8151801515811461134657600080fd5b60608152600061146560608301866113a7565b60208301949094525060400152919050565b600181811c9082168061148b57607f821691505b6020821081036114ab57634e487b7160e01b600052602260045260246000fd5b50919050565b600086516114c3818460208b01611377565b60609690961b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190950190815260148101939093526034830191909152605482015260740192915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361154157611541611402565b5060010190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212207e23e2e330df83b2d4da5ec428177a6962b0b3d9cf715b52ddf983c41e1d4aff64736f6c634300080e00330000000000000000000000002bc07124d8dac638e290f401046ad584546bc47b0000000000000000000000002a11e98902a14259aa38ccd225f391db6c6065c3
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a6116100975780639e281a98116100665780639e281a98146101f7578063caf0b3eb1461020a578063e012eec91461022d578063f2fde38b1461023657600080fd5b8063715018a6146101be5780638456cb59146101c65780638da5cb5b146101ce5780639d76ea58146101e457600080fd5b80633f4ba83a116100d35780633f4ba83a1461016d5780634fd82f26146101755780635437988d146101955780635c975abb146101a857600080fd5b806309a5a7a7146100fa5780632b7ac3f31461010f5780632e04b8e71461013f575b600080fd5b61010d61010836600461126d565b610249565b005b600154610122906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015f61014d36600461132b565b60046020526000908152604090205481565b604051908152602001610136565b61010d6104f9565b61015f61018336600461132b565b60066020526000908152604090205481565b61010d6101a336600461132b565b6105b5565b60005460ff166040519015158152602001610136565b61010d610693565b61010d6106fd565b60005461010090046001600160a01b0316610122565b600254610122906001600160a01b031681565b61010d61020536600461134d565b6107b8565b61021d61021836600461134d565b6108ef565b60405161013694939291906113d3565b61015f60035481565b61010d61024436600461132b565b6109c4565b8351339061029e5760405162461bcd60e51b815260206004820152601860248201527f544f574552436174636875703a20696e76616c6964206964000000000000000060448201526064015b60405180910390fd5b600084116102ee5760405162461bcd60e51b815260206004820152601a60248201527f544f574552436174636875703a20696e76616c696420646179730000000000006044820152606401610295565b6000831161033e5760405162461bcd60e51b815260206004820152601c60248201527f544f574552436174636875703a20696e76616c696420616d6f756e74000000006044820152606401610295565b61034b8582868686610aac565b61035457600080fd5b6001600160a01b038116600081815260056020908152604080832081516080810183528a81528084018a905280830189905242606082015294845260069092528220805491939288926103a8908490611418565b909155505081546001810183556000838152602090819020835180518594600402909201926103dc92849290910190611148565b506020820151816001015560408201518160020155606082015181600301555050856003600082825461040f9190611418565b90915550506002546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015230602483015260448201889052909116906323b872dd906064016020604051808303816000875af1158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104aa9190611430565b50826001600160a01b03167fe0c6821ee1433c97f1db3640014a7ecc27d3a09c082c5d77e170b0dcbf374ffe8888886040516104e893929190611452565b60405180910390a250505050505050565b6000546001600160a01b036101009091041633146105595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b60005460ff166105ab5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610295565b6105b3610bf7565b565b6000546001600160a01b036101009091041633146106155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6001546040513381526001600160a01b038381169216907fab33b60d90e477d6167b1a1d4836dba194477e182f98e153fd984ed5ce6d10229060200160405180910390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b036101009091041633146106f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6105b36000610c93565b6000546001600160a01b0361010090910416331461075d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b60005460ff16156107b05760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610295565b6105b3610d03565b6000546001600160a01b036101009091041633146108185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a89190611430565b50604080516001600160a01b0384168152602081018390527fa2bd9fcfcdba69f52bcd9a520846ad4bd685b187483f53efc42d035b2ddebff0910160405180910390a15050565b6005602052816000526040600020818154811061090b57600080fd5b90600052602060002090600402016000915091505080600001805461092f90611477565b80601f016020809104026020016040519081016040528092919081815260200182805461095b90611477565b80156109a85780601f1061097d576101008083540402835291602001916109a8565b820191906000526020600020905b81548152906001019060200180831161098b57829003601f168201915b5050505050908060010154908060020154908060030154905084565b6000546001600160a01b03610100909104163314610a245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610295565b6001600160a01b038116610aa05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610295565b610aa981610c93565b50565b6001600160a01b038416600090815260046020908152604080832054905190918391610ae2918a918a918a918a918891016114b1565b60408051601f1981840301815291905280516020909101206001549091506001600160a01b0316610b6a85610b64846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90610d8b565b6001600160a01b031614610bc05760405162461bcd60e51b815260206004820152601f60248201527f544f574552436174636875703a20696e76616c6964207369676e6174757265006044820152606401610295565b6001600160a01b0387166000908152600460205260408120805491610be483611510565b9091555060019998505050505050505050565b60005460ff16610c495760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610295565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005460ff1615610d565760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610295565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c763390565b6000806000610d9a8585610daf565b91509150610da781610e1d565b509392505050565b6000808251604103610de55760208301516040840151606085015160001a610dd987828585611009565b94509450505050610e16565b8251604003610e0e5760208301516040840151610e038683836110f6565b935093505050610e16565b506000905060025b9250929050565b6000816004811115610e3157610e31611548565b03610e395750565b6001816004811115610e4d57610e4d611548565b03610e9a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610295565b6002816004811115610eae57610eae611548565b03610efb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610295565b6003816004811115610f0f57610f0f611548565b03610f825760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610295565b6004816004811115610f9657610f96611548565b03610aa95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610295565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561104057506000905060036110ed565b8460ff16601b1415801561105857508460ff16601c14155b1561106957506000905060046110ed565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156110bd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110e6576000600192509250506110ed565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168161112c60ff86901c601b611418565b905061113a87828885611009565b935093505050935093915050565b82805461115490611477565b90600052602060002090601f01602090048101928261117657600085556111bc565b82601f1061118f57805160ff19168380011785556111bc565b828001600101855582156111bc579182015b828111156111bc5782518255916020019190600101906111a1565b506111c89291506111cc565b5090565b5b808211156111c857600081556001016111cd565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611212576112126111e1565b604051601f8501601f19908116603f0116810190828211818310171561123a5761123a6111e1565b8160405280935085815286868601111561125357600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561128357600080fd5b843567ffffffffffffffff8082111561129b57600080fd5b818701915087601f8301126112af57600080fd5b6112be888335602085016111f7565b9550602087013594506040870135935060608701359150808211156112e257600080fd5b508501601f810187136112f457600080fd5b611303878235602084016111f7565b91505092959194509250565b80356001600160a01b038116811461132657600080fd5b919050565b60006020828403121561133d57600080fd5b6113468261130f565b9392505050565b6000806040838503121561136057600080fd5b6113698361130f565b946020939093013593505050565b60005b8381101561139257818101518382015260200161137a565b838111156113a1576000848401525b50505050565b600081518084526113bf816020860160208601611377565b601f01601f19169290920160200192915050565b6080815260006113e660808301876113a7565b6020830195909552506040810192909252606090910152919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561142b5761142b611402565b500190565b60006020828403121561144257600080fd5b8151801515811461134657600080fd5b60608152600061146560608301866113a7565b60208301949094525060400152919050565b600181811c9082168061148b57607f821691505b6020821081036114ab57634e487b7160e01b600052602260045260246000fd5b50919050565b600086516114c3818460208b01611377565b60609690961b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190950190815260148101939093526034830191909152605482015260740192915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361154157611541611402565b5060010190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212207e23e2e330df83b2d4da5ec428177a6962b0b3d9cf715b52ddf983c41e1d4aff64736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002bc07124d8dac638e290f401046ad584546bc47b0000000000000000000000002a11e98902a14259aa38ccd225f391db6c6065c3
-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0x2bC07124D8dAc638E290f401046Ad584546BC47b
Arg [1] : _verifier (address): 0x2A11e98902A14259Aa38CCd225F391dB6C6065c3
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002bc07124d8dac638e290f401046ad584546bc47b
Arg [1] : 0000000000000000000000002a11e98902a14259aa38ccd225f391db6c6065c3
Deployed Bytecode Sourcemap
17820:3162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19605:999;;;;;;:::i;:::-;;:::i;:::-;;18176:23;;;;;-1:-1:-1;;;;;18176:23:0;;;;;;-1:-1:-1;;;;;2011:55:1;;;1993:74;;1981:2;1966:18;18176:23:0;;;;;;;;18484:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2616:25:1;;;2604:2;2589:18;18484:44:0;2470:177:1;20901:78:0;;;:::i;18666:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;18872:171;;;;;;:::i;:::-;;:::i;2128:86::-;2175:4;2199:7;;;2128:86;;2817:14:1;;2810:22;2792:41;;2780:2;2765:18;2128:86:0;2652:187:1;5029:103:0;;;:::i;20816:77::-;;;:::i;4378:87::-;4424:7;4451:6;;;;-1:-1:-1;;;;;4451:6:0;4378:87;;18206:26;;;;;-1:-1:-1;;;;;18206:26:0;;;20612:196;;;;;;:::i;:::-;;:::i;18603:56::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;18287:39::-;;;;;;5287:201;;;;;;:::i;:::-;;:::i;19605:999::-;19832:23;;19801:10;;19824:64;;;;-1:-1:-1;;;19824:64:0;;4575:2:1;19824:64:0;;;4557:21:1;4614:2;4594:18;;;4587:30;4653:26;4633:18;;;4626:54;4697:18;;19824:64:0;;;;;;;;;19922:1;19907:12;:16;19899:55;;;;-1:-1:-1;;;19899:55:0;;4928:2:1;19899:55:0;;;4910:21:1;4967:2;4947:18;;;4940:30;5006:28;4986:18;;;4979:56;5052:18;;19899:55:0;4726:350:1;19899:55:0;19983:1;19973:7;:11;19965:52;;;;-1:-1:-1;;;19965:52:0;;5283:2:1;19965:52:0;;;5265:21:1;5322:2;5302:18;;;5295:30;5361;5341:18;;;5334:58;5409:18;;19965:52:0;5081:352:1;19965:52:0;20038:72;20054:9;20065;20076:12;20090:7;20099:10;20038:15;:72::i;:::-;20030:81;;;;;;-1:-1:-1;;;;;20164:25:0;;20124:37;20164:25;;;:14;:25;;;;;;;;20237:63;;;;;;;;;;;;;;;;;;;;;;20284:15;20237:63;;;;20311:25;;;:14;:25;;;;;:41;;20164:25;;20237:63;20261:12;;20311:41;;20261:12;;20311:41;:::i;:::-;;;;-1:-1:-1;;20363:33:0;;;;;;;-1:-1:-1;20363:33:0;;;;;;;;;;;;20383:12;;20363:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;20431:12;20407:20;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;20463:12:0;;20456:68;;;;;-1:-1:-1;;;;;6041:15:1;;;20456:68:0;;;6023:34:1;20509:4:0;6073:18:1;;;6066:43;6125:18;;;6118:34;;;20463:12:0;;;;20456:33;;5935:18:1;;20456:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20563:9;-1:-1:-1;;;;;20540:56:0;;20552:9;20574:12;20588:7;20540:56;;;;;;;;:::i;:::-;;;;;;;;19770:834;;;19605:999;;;;:::o;20901:78::-;4424:7;4451:6;-1:-1:-1;;;;;4451:6:0;;;;;860:10;4598:23;4590:68;;;;-1:-1:-1;;;4590:68:0;;7014:2:1;4590:68:0;;;6996:21:1;;;7033:18;;;7026:30;7092:34;7072:18;;;7065:62;7144:18;;4590:68:0;6812:356:1;4590:68:0;2175:4;2199:7;;;2723:41:::1;;;::::0;-1:-1:-1;;;2723:41:0;;7375:2:1;2723:41:0::1;::::0;::::1;7357:21:1::0;7414:2;7394:18;;;7387:30;7453:22;7433:18;;;7426:50;7493:18;;2723:41:0::1;7173:344:1::0;2723:41:0::1;20961:10:::2;:8;:10::i;:::-;20901:78::o:0;18872:171::-;4424:7;4451:6;-1:-1:-1;;;;;4451:6:0;;;;;860:10;4598:23;4590:68;;;;-1:-1:-1;;;4590:68:0;;7014:2:1;4590:68:0;;;6996:21:1;;;7033:18;;;7026:30;7092:34;7072:18;;;7065:62;7144:18;;4590:68:0;6812:356:1;4590:68:0;18978:8:::1;::::0;18950:51:::1;::::0;18966:10:::1;1993:74:1::0;;-1:-1:-1;;;;;18950:51:0;;::::1;::::0;18978:8:::1;::::0;18950:51:::1;::::0;1981:2:1;1966:18;18950:51:0::1;;;;;;;19012:8;:23:::0;;;::::1;-1:-1:-1::0;;;;;19012:23:0;;;::::1;::::0;;;::::1;::::0;;18872:171::o;5029:103::-;4424:7;4451:6;-1:-1:-1;;;;;4451:6:0;;;;;860:10;4598:23;4590:68;;;;-1:-1:-1;;;4590:68:0;;7014:2:1;4590:68:0;;;6996:21:1;;;7033:18;;;7026:30;7092:34;7072:18;;;7065:62;7144:18;;4590:68:0;6812:356:1;4590:68:0;5094:30:::1;5121:1;5094:18;:30::i;20816:77::-:0;4424:7;4451:6;-1:-1:-1;;;;;4451:6:0;;;;;860:10;4598:23;4590:68;;;;-1:-1:-1;;;4590:68:0;;7014:2:1;4590:68:0;;;6996:21:1;;;7033:18;;;7026:30;7092:34;7072:18;;;7065:62;7144:18;;4590:68:0;6812:356:1;4590:68:0;2175:4;2199:7;;;2453:9:::1;2445:38;;;::::0;-1:-1:-1;;;2445:38:0;;7724:2:1;2445:38:0::1;::::0;::::1;7706:21:1::0;7763:2;7743:18;;;7736:30;7802:18;7782;;;7775:46;7838:18;;2445:38:0::1;7522:340:1::0;2445:38:0::1;20877:8:::2;:6;:8::i;20612:196::-:0;4424:7;4451:6;-1:-1:-1;;;;;4451:6:0;;;;;860:10;4598:23;4590:68;;;;-1:-1:-1;;;4590:68:0;;7014:2:1;4590:68:0;;;6996:21:1;;;7033:18;;;7026:30;7092:34;7072:18;;;7065:62;7144:18;;4590:68:0;6812:356:1;4590:68:0;20708:12:::1;::::0;20701:49:::1;::::0;;;;-1:-1:-1;;;;;8059:55:1;;;20701:49:0::1;::::0;::::1;8041:74:1::0;8131:18;;;8124:34;;;20708:12:0;;::::1;::::0;20701:29:::1;::::0;8014:18:1;;20701:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;20766:34:0::1;::::0;;-1:-1:-1;;;;;8059:55:1;;8041:74;;8146:2;8131:18;;8124:34;;;20766::0::1;::::0;8014:18:1;20766:34:0::1;;;;;;;20612:196:::0;;:::o;18603:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5287:201::-;4424:7;4451:6;-1:-1:-1;;;;;4451:6:0;;;;;860:10;4598:23;4590:68;;;;-1:-1:-1;;;4590:68:0;;7014:2:1;4590:68:0;;;6996:21:1;;;7033:18;;;7026:30;7092:34;7072:18;;;7065:62;7144:18;;4590:68:0;6812:356:1;4590:68:0;-1:-1:-1;;;;;5376:22:0;::::1;5368:73;;;::::0;-1:-1:-1;;;5368:73:0;;8813:2:1;5368:73:0::1;::::0;::::1;8795:21:1::0;8852:2;8832:18;;;8825:30;8891:34;8871:18;;;8864:62;8962:8;8942:18;;;8935:36;8988:19;;5368:73:0::1;8611:402:1::0;5368:73:0::1;5452:28;5471:8;5452:18;:28::i;:::-;5287:201:::0;:::o;19051:546::-;-1:-1:-1;;;;;19288:21:0;;19255:4;19288:21;;;:9;:21;;;;;;;;;19347:69;;19288:21;;19255:4;;19347:69;;19364:9;;19298:10;;19387:12;;19401:7;;19288:21;;19347:69;;:::i;:::-;;;;-1:-1:-1;;19347:69:0;;;;;;;;;19337:80;;19347:69;19337:80;;;;19489:8;;19337:80;;-1:-1:-1;;;;;;19489:8:0;19436:49;19474:10;19436:29;19337:80;16397:58;;10479:66:1;16397:58:0;;;10467:79:1;10562:12;;;10555:28;;;16264:7:0;;10599:12:1;;16397:58:0;;;;;;;;;;;;16387:69;;;;;;16380:76;;16195:269;;;;19436:29;:37;;:49::i;:::-;-1:-1:-1;;;;;19436:61:0;;19428:105;;;;-1:-1:-1;;;19428:105:0;;9879:2:1;19428:105:0;;;9861:21:1;9918:2;9898:18;;;9891:30;9957:33;9937:18;;;9930:61;10008:18;;19428:105:0;9677:355:1;19428:105:0;-1:-1:-1;;;;;19544:21:0;;;;;;:9;:21;;;;;:23;;;;;;:::i;:::-;;;;-1:-1:-1;19585:4:0;;19051:546;-1:-1:-1;;;;;;;;;19051:546:0:o;3187:120::-;2175:4;2199:7;;;2723:41;;;;-1:-1:-1;;;2723:41:0;;7375:2:1;2723:41:0;;;7357:21:1;7414:2;7394:18;;;7387:30;7453:22;7433:18;;;7426:50;7493:18;;2723:41:0;7173:344:1;2723:41:0;3256:5:::1;3246:15:::0;;-1:-1:-1;;3246:15:0::1;::::0;;3277:22:::1;860:10:::0;3286:12:::1;3277:22;::::0;-1:-1:-1;;;;;2011:55:1;;;1993:74;;1981:2;1966:18;3277:22:0::1;;;;;;;3187:120::o:0;5648:191::-;5722:16;5741:6;;-1:-1:-1;;;;;5758:17:0;;;5741:6;5758:17;;;;;;;;;5791:40;;5741:6;;;;;;;5758:17;;5741:6;;5791:40;;;5711:128;5648:191;:::o;2928:118::-;2175:4;2199:7;;;2453:9;2445:38;;;;-1:-1:-1;;;2445:38:0;;7724:2:1;2445:38:0;;;7706:21:1;7763:2;7743:18;;;7736:30;7802:18;7782;;;7775:46;7838:18;;2445:38:0;7522:340:1;2445:38:0;2988:7:::1;:14:::0;;-1:-1:-1;;2988:14:0::1;2998:4;2988:14;::::0;;3018:20:::1;3025:12;860:10:::0;;780:98;12393:231;12471:7;12492:17;12511:18;12533:27;12544:4;12550:9;12533:10;:27::i;:::-;12491:69;;;;12571:18;12583:5;12571:11;:18::i;:::-;-1:-1:-1;12607:9:0;12393:231;-1:-1:-1;;;12393:231:0:o;10283:1308::-;10364:7;10373:12;10598:9;:16;10618:2;10598:22;10594:990;;10894:4;10879:20;;10873:27;10944:4;10929:20;;10923:27;11002:4;10987:20;;10981:27;10637:9;10973:36;11045:25;11056:4;10973:36;10873:27;10923;11045:10;:25::i;:::-;11038:32;;;;;;;;;10594:990;11092:9;:16;11112:2;11092:22;11088:496;;11367:4;11352:20;;11346:27;11418:4;11403:20;;11397:27;11460:23;11471:4;11346:27;11397;11460:10;:23::i;:::-;11453:30;;;;;;;;11088:496;-1:-1:-1;11532:1:0;;-1:-1:-1;11536:35:0;11088:496;10283:1308;;;;;:::o;8554:643::-;8632:20;8623:5;:29;;;;;;;;:::i;:::-;;8619:571;;8554:643;:::o;8619:571::-;8730:29;8721:5;:38;;;;;;;;:::i;:::-;;8717:473;;8776:34;;-1:-1:-1;;;8776:34:0;;11013:2:1;8776:34:0;;;10995:21:1;11052:2;11032:18;;;11025:30;11091:26;11071:18;;;11064:54;11135:18;;8776:34:0;10811:348:1;8717:473:0;8841:35;8832:5;:44;;;;;;;;:::i;:::-;;8828:362;;8893:41;;-1:-1:-1;;;8893:41:0;;11366:2:1;8893:41:0;;;11348:21:1;11405:2;11385:18;;;11378:30;11444:33;11424:18;;;11417:61;11495:18;;8893:41:0;11164:355:1;8828:362:0;8965:30;8956:5;:39;;;;;;;;:::i;:::-;;8952:238;;9012:44;;-1:-1:-1;;;9012:44:0;;11726:2:1;9012:44:0;;;11708:21:1;11765:2;11745:18;;;11738:30;11804:34;11784:18;;;11777:62;11875:4;11855:18;;;11848:32;11897:19;;9012:44:0;11524:398:1;8952:238:0;9087:30;9078:5;:39;;;;;;;;:::i;:::-;;9074:116;;9134:44;;-1:-1:-1;;;9134:44:0;;12129:2:1;9134:44:0;;;12111:21:1;12168:2;12148:18;;;12141:30;12207:34;12187:18;;;12180:62;12278:4;12258:18;;;12251:32;12300:19;;9134:44:0;11927:398:1;13845:1632:0;13976:7;;14910:66;14897:79;;14893:163;;;-1:-1:-1;15009:1:0;;-1:-1:-1;15013:30:0;14993:51;;14893:163;15070:1;:7;;15075:2;15070:7;;:18;;;;;15081:1;:7;;15086:2;15081:7;;15070:18;15066:102;;;-1:-1:-1;15121:1:0;;-1:-1:-1;15125:30:0;15105:51;;15066:102;15282:24;;;15265:14;15282:24;;;;;;;;;12557:25:1;;;12630:4;12618:17;;12598:18;;;12591:45;;;;12652:18;;;12645:34;;;12695:18;;;12688:34;;;15282:24:0;;12529:19:1;;15282:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15282:24:0;;-1:-1:-1;;15282:24:0;;;-1:-1:-1;;;;;;;15321:20:0;;15317:103;;15374:1;15378:29;15358:50;;;;;;;15317:103;15440:6;-1:-1:-1;15448:20:0;;-1:-1:-1;13845:1632:0;;;;;;;;:::o;12887:344::-;13001:7;;13060:66;13047:80;;13001:7;13154:25;13170:3;13155:18;;;13177:2;13154:25;:::i;:::-;13138:42;;13198:25;13209:4;13215:1;13218;13221;13198:10;:25::i;:::-;13191:32;;;;;;12887:344;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:184:1;-1:-1:-1;;;63:1:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:691;268:5;298:18;339:2;331:6;328:14;325:40;;;345:18;;:::i;:::-;479:2;473:9;545:2;533:15;;-1:-1:-1;;529:24:1;;;555:2;525:33;521:42;509:55;;;579:18;;;599:22;;;576:46;573:72;;;625:18;;:::i;:::-;665:10;661:2;654:22;694:6;685:15;;724:6;716;709:22;764:3;755:6;750:3;746:16;743:25;740:45;;;781:1;778;771:12;740:45;831:6;826:3;819:4;811:6;807:17;794:44;886:1;879:4;870:6;862;858:19;854:30;847:41;;;;203:691;;;;;:::o;899:943::-;1004:6;1012;1020;1028;1081:3;1069:9;1060:7;1056:23;1052:33;1049:53;;;1098:1;1095;1088:12;1049:53;1138:9;1125:23;1167:18;1208:2;1200:6;1197:14;1194:34;;;1224:1;1221;1214:12;1194:34;1262:6;1251:9;1247:22;1237:32;;1307:7;1300:4;1296:2;1292:13;1288:27;1278:55;;1329:1;1326;1319:12;1278:55;1352:76;1420:7;1415:2;1402:16;1395:4;1391:2;1387:13;1352:76;:::i;:::-;1342:86;;1475:4;1464:9;1460:20;1447:34;1437:44;;1528:2;1517:9;1513:18;1500:32;1490:42;;1585:2;1574:9;1570:18;1557:32;1541:48;;1614:2;1604:8;1601:16;1598:36;;;1630:1;1627;1620:12;1598:36;-1:-1:-1;1653:24:1;;1708:4;1700:13;;1696:27;-1:-1:-1;1686:55:1;;1737:1;1734;1727:12;1686:55;1760:76;1828:7;1823:2;1810:16;1803:4;1799:2;1795:13;1760:76;:::i;:::-;1750:86;;;899:943;;;;;;;:::o;2078:196::-;2146:20;;-1:-1:-1;;;;;2195:54:1;;2185:65;;2175:93;;2264:1;2261;2254:12;2175:93;2078:196;;;:::o;2279:186::-;2338:6;2391:2;2379:9;2370:7;2366:23;2362:32;2359:52;;;2407:1;2404;2397:12;2359:52;2430:29;2449:9;2430:29;:::i;:::-;2420:39;2279:186;-1:-1:-1;;;2279:186:1:o;3089:254::-;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3257:29;3276:9;3257:29;:::i;:::-;3247:39;3333:2;3318:18;;;;3305:32;;-1:-1:-1;;;3089:254:1:o;3348:258::-;3420:1;3430:113;3444:6;3441:1;3438:13;3430:113;;;3520:11;;;3514:18;3501:11;;;3494:39;3466:2;3459:10;3430:113;;;3561:6;3558:1;3555:13;3552:48;;;3596:1;3587:6;3582:3;3578:16;3571:27;3552:48;;3348:258;;;:::o;3611:317::-;3653:3;3691:5;3685:12;3718:6;3713:3;3706:19;3734:63;3790:6;3783:4;3778:3;3774:14;3767:4;3760:5;3756:16;3734:63;:::i;:::-;3842:2;3830:15;-1:-1:-1;;3826:88:1;3817:98;;;;3917:4;3813:109;;3611:317;-1:-1:-1;;3611:317:1:o;3933:435::-;4166:3;4155:9;4148:22;4129:4;4187:46;4228:3;4217:9;4213:19;4205:6;4187:46;:::i;:::-;4264:2;4249:18;;4242:34;;;;-1:-1:-1;4307:2:1;4292:18;;4285:34;;;;4350:2;4335:18;;;4328:34;4179:54;3933:435;-1:-1:-1;3933:435:1:o;5438:184::-;-1:-1:-1;;;5487:1:1;5480:88;5587:4;5584:1;5577:15;5611:4;5608:1;5601:15;5627:128;5667:3;5698:1;5694:6;5691:1;5688:13;5685:39;;;5704:18;;:::i;:::-;-1:-1:-1;5740:9:1;;5627:128::o;6163:277::-;6230:6;6283:2;6271:9;6262:7;6258:23;6254:32;6251:52;;;6299:1;6296;6289:12;6251:52;6331:9;6325:16;6384:5;6377:13;6370:21;6363:5;6360:32;6350:60;;6406:1;6403;6396:12;6445:362;6650:2;6639:9;6632:21;6613:4;6670:45;6711:2;6700:9;6696:18;6688:6;6670:45;:::i;:::-;6746:2;6731:18;;6724:34;;;;-1:-1:-1;6789:2:1;6774:18;6767:34;6662:53;6445:362;-1:-1:-1;6445:362:1:o;8169:437::-;8248:1;8244:12;;;;8291;;;8312:61;;8366:4;8358:6;8354:17;8344:27;;8312:61;8419:2;8411:6;8408:14;8388:18;8385:38;8382:218;;-1:-1:-1;;;8453:1:1;8446:88;8557:4;8554:1;8547:15;8585:4;8582:1;8575:15;8382:218;;8169:437;;;:::o;9018:654::-;9261:3;9299:6;9293:13;9315:53;9361:6;9356:3;9349:4;9341:6;9337:17;9315:53;:::i;:::-;9437:2;9433:15;;;;9450:66;9429:88;9390:16;;;;9415:103;;;9545:2;9534:14;;9527:30;;;;9584:2;9573:14;;9566:30;;;;9623:2;9612:14;;9605:30;9662:3;9651:15;;9018:654;-1:-1:-1;;9018:654:1:o;10037:195::-;10076:3;10107:66;10100:5;10097:77;10094:103;;10177:18;;:::i;:::-;-1:-1:-1;10224:1:1;10213:13;;10037:195::o;10622:184::-;-1:-1:-1;;;10671:1:1;10664:88;10771:4;10768:1;10761:15;10795:4;10792:1;10785:15
Swarm Source
ipfs://7e23e2e330df83b2d4da5ec428177a6962b0b3d9cf715b52ddf983c41e1d4aff
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $0.000266 | 2,544,450 | $676.09 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.