Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Grant Role | 16243209 | 1024 days ago | IN | 0 ETH | 0.0007824 | ||||
Grant Role | 16195392 | 1031 days ago | IN | 0 ETH | 0.00078436 | ||||
Grant Role | 16187722 | 1032 days ago | IN | 0 ETH | 0.00076844 | ||||
Grant Role | 16085964 | 1046 days ago | IN | 0 ETH | 0.00085964 | ||||
Grant Role | 15058295 | 1198 days ago | IN | 0 ETH | 0.00112467 | ||||
Grant Role | 15053549 | 1199 days ago | IN | 0 ETH | 0.00222927 | ||||
Grant Role | 15014484 | 1206 days ago | IN | 0 ETH | 0.00557427 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TokenHashes
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-23 */ // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/utils/Strings.sol // 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/Context.sol // 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/access/IAccessControl.sol // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File: @openzeppelin/contracts/access/AccessControl.sol // OpenZeppelin Contracts (last updated v4.6.0) (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `_msgSender()` is missing `role`. * Overriding this function changes the behavior of the {onlyRole} modifier. * * Format of the revert message is described in {_checkRole}. * * _Available since v4.6._ */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: contracts/TokenHashes.sol pragma solidity ^0.8.11; error TokenIdAlreadySet(); contract TokenHashes is AccessControl { mapping(uint256 => bytes32) public tokenIdToHash; mapping(uint256 => bool) public idsSet; event TokenHashSet(uint256 indexed tokenId, bytes32 indexed tokenHash); constructor() { _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); } function storeTokenHash(uint256 tokenId) external onlyRole(DEFAULT_ADMIN_ROLE) { if (idsSet[tokenId]) revert TokenIdAlreadySet(); idsSet[tokenId] = true; tokenIdToHash[tokenId] = keccak256(abi.encodePacked(block.number, tokenId, block.timestamp)); emit TokenHashSet(tokenId, tokenIdToHash[tokenId]); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"TokenIdAlreadySet","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"tokenHash","type":"bytes32"}],"name":"TokenHashSet","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idsSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"storeTokenHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdToHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506100246000801b3361002960201b60201c565b610187565b610039828261011560201b60201c565b61011157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506100b661017f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b611170806101966000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806391d148541161006657806391d148541461016b578063a217fddf1461019b578063d547741f146101b9578063d71a7552146101d5578063df5fe9d9146101f15761009e565b806301ffc9a7146100a3578063248a9ca3146100d35780632f2ff15d1461010357806336568abe1461011f578063621a1f741461013b575b600080fd5b6100bd60048036038101906100b89190610abd565b610221565b6040516100ca9190610b05565b60405180910390f35b6100ed60048036038101906100e89190610b56565b61029b565b6040516100fa9190610b92565b60405180910390f35b61011d60048036038101906101189190610c0b565b6102ba565b005b61013960048036038101906101349190610c0b565b6102db565b005b61015560048036038101906101509190610c81565b61035e565b6040516101629190610b92565b60405180910390f35b61018560048036038101906101809190610c0b565b610376565b6040516101929190610b05565b60405180910390f35b6101a36103e0565b6040516101b09190610b92565b60405180910390f35b6101d360048036038101906101ce9190610c0b565b6103e7565b005b6101ef60048036038101906101ea9190610c81565b610408565b005b61020b60048036038101906102069190610c81565b610520565b6040516102189190610b05565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610294575061029382610540565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6102c38261029b565b6102cc816105aa565b6102d683836105be565b505050565b6102e361069e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034790610d31565b60405180910390fd5b61035a82826106a6565b5050565b60016020528060005260406000206000915090505481565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b6103f08261029b565b6103f9816105aa565b61040383836106a6565b505050565b6000801b610415816105aa565b6002600083815260200190815260200160002060009054906101000a900460ff161561046d576040517f403b2b6700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016002600084815260200190815260200160002060006101000a81548160ff0219169083151502179055504382426040516020016104ae93929190610d72565b6040516020818303038152906040528051906020012060016000848152602001908152602001600020819055506001600083815260200190815260200160002054827f600275bc3a309792283115dfb884cfc262977806bbf86a0cd92afdada40c960f60405160405180910390a35050565b60026020528060005260406000206000915054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6105bb816105b661069e565b610787565b50565b6105c88282610376565b61069a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061063f61069e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6106b08282610376565b1561078357600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061072861069e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6107918282610376565b610820576107b68173ffffffffffffffffffffffffffffffffffffffff166014610824565b6107c48360001c6020610824565b6040516020016107d5929190610ec1565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108179190610f45565b60405180910390fd5b5050565b6060600060028360026108379190610f96565b6108419190610ff0565b67ffffffffffffffff81111561085a57610859611046565b5b6040519080825280601f01601f19166020018201604052801561088c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106108c4576108c3611075565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061092857610927611075565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026109689190610f96565b6109729190610ff0565b90505b6001811115610a12577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106109b4576109b3611075565b5b1a60f81b8282815181106109cb576109ca611075565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610a0b906110a4565b9050610975565b5060008414610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061111a565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610a9a81610a65565b8114610aa557600080fd5b50565b600081359050610ab781610a91565b92915050565b600060208284031215610ad357610ad2610a60565b5b6000610ae184828501610aa8565b91505092915050565b60008115159050919050565b610aff81610aea565b82525050565b6000602082019050610b1a6000830184610af6565b92915050565b6000819050919050565b610b3381610b20565b8114610b3e57600080fd5b50565b600081359050610b5081610b2a565b92915050565b600060208284031215610b6c57610b6b610a60565b5b6000610b7a84828501610b41565b91505092915050565b610b8c81610b20565b82525050565b6000602082019050610ba76000830184610b83565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bd882610bad565b9050919050565b610be881610bcd565b8114610bf357600080fd5b50565b600081359050610c0581610bdf565b92915050565b60008060408385031215610c2257610c21610a60565b5b6000610c3085828601610b41565b9250506020610c4185828601610bf6565b9150509250929050565b6000819050919050565b610c5e81610c4b565b8114610c6957600080fd5b50565b600081359050610c7b81610c55565b92915050565b600060208284031215610c9757610c96610a60565b5b6000610ca584828501610c6c565b91505092915050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000610d1b602f83610cae565b9150610d2682610cbf565b604082019050919050565b60006020820190508181036000830152610d4a81610d0e565b9050919050565b6000819050919050565b610d6c610d6782610c4b565b610d51565b82525050565b6000610d7e8286610d5b565b602082019150610d8e8285610d5b565b602082019150610d9e8284610d5b565b602082019150819050949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610df0601783610daf565b9150610dfb82610dba565b601782019050919050565b600081519050919050565b60005b83811015610e2f578082015181840152602081019050610e14565b83811115610e3e576000848401525b50505050565b6000610e4f82610e06565b610e598185610daf565b9350610e69818560208601610e11565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610eab601183610daf565b9150610eb682610e75565b601182019050919050565b6000610ecc82610de3565b9150610ed88285610e44565b9150610ee382610e9e565b9150610eef8284610e44565b91508190509392505050565b6000601f19601f8301169050919050565b6000610f1782610e06565b610f218185610cae565b9350610f31818560208601610e11565b610f3a81610efb565b840191505092915050565b60006020820190508181036000830152610f5f8184610f0c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fa182610c4b565b9150610fac83610c4b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610fe557610fe4610f67565b5b828202905092915050565b6000610ffb82610c4b565b915061100683610c4b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561103b5761103a610f67565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006110af82610c4b565b915060008214156110c3576110c2610f67565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000611104602083610cae565b915061110f826110ce565b602082019050919050565b60006020820190508181036000830152611133816110f7565b905091905056fea26469706673582212208783b3106673e8d2548caed6e239b2e1b6a581e4593807da178fffb909b19b0d64736f6c634300080b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806391d148541161006657806391d148541461016b578063a217fddf1461019b578063d547741f146101b9578063d71a7552146101d5578063df5fe9d9146101f15761009e565b806301ffc9a7146100a3578063248a9ca3146100d35780632f2ff15d1461010357806336568abe1461011f578063621a1f741461013b575b600080fd5b6100bd60048036038101906100b89190610abd565b610221565b6040516100ca9190610b05565b60405180910390f35b6100ed60048036038101906100e89190610b56565b61029b565b6040516100fa9190610b92565b60405180910390f35b61011d60048036038101906101189190610c0b565b6102ba565b005b61013960048036038101906101349190610c0b565b6102db565b005b61015560048036038101906101509190610c81565b61035e565b6040516101629190610b92565b60405180910390f35b61018560048036038101906101809190610c0b565b610376565b6040516101929190610b05565b60405180910390f35b6101a36103e0565b6040516101b09190610b92565b60405180910390f35b6101d360048036038101906101ce9190610c0b565b6103e7565b005b6101ef60048036038101906101ea9190610c81565b610408565b005b61020b60048036038101906102069190610c81565b610520565b6040516102189190610b05565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610294575061029382610540565b5b9050919050565b6000806000838152602001908152602001600020600101549050919050565b6102c38261029b565b6102cc816105aa565b6102d683836105be565b505050565b6102e361069e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034790610d31565b60405180910390fd5b61035a82826106a6565b5050565b60016020528060005260406000206000915090505481565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b6103f08261029b565b6103f9816105aa565b61040383836106a6565b505050565b6000801b610415816105aa565b6002600083815260200190815260200160002060009054906101000a900460ff161561046d576040517f403b2b6700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016002600084815260200190815260200160002060006101000a81548160ff0219169083151502179055504382426040516020016104ae93929190610d72565b6040516020818303038152906040528051906020012060016000848152602001908152602001600020819055506001600083815260200190815260200160002054827f600275bc3a309792283115dfb884cfc262977806bbf86a0cd92afdada40c960f60405160405180910390a35050565b60026020528060005260406000206000915054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6105bb816105b661069e565b610787565b50565b6105c88282610376565b61069a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061063f61069e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6106b08282610376565b1561078357600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061072861069e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6107918282610376565b610820576107b68173ffffffffffffffffffffffffffffffffffffffff166014610824565b6107c48360001c6020610824565b6040516020016107d5929190610ec1565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108179190610f45565b60405180910390fd5b5050565b6060600060028360026108379190610f96565b6108419190610ff0565b67ffffffffffffffff81111561085a57610859611046565b5b6040519080825280601f01601f19166020018201604052801561088c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106108c4576108c3611075565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061092857610927611075565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026109689190610f96565b6109729190610ff0565b90505b6001811115610a12577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106109b4576109b3611075565b5b1a60f81b8282815181106109cb576109ca611075565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610a0b906110a4565b9050610975565b5060008414610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061111a565b60405180910390fd5b8091505092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610a9a81610a65565b8114610aa557600080fd5b50565b600081359050610ab781610a91565b92915050565b600060208284031215610ad357610ad2610a60565b5b6000610ae184828501610aa8565b91505092915050565b60008115159050919050565b610aff81610aea565b82525050565b6000602082019050610b1a6000830184610af6565b92915050565b6000819050919050565b610b3381610b20565b8114610b3e57600080fd5b50565b600081359050610b5081610b2a565b92915050565b600060208284031215610b6c57610b6b610a60565b5b6000610b7a84828501610b41565b91505092915050565b610b8c81610b20565b82525050565b6000602082019050610ba76000830184610b83565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bd882610bad565b9050919050565b610be881610bcd565b8114610bf357600080fd5b50565b600081359050610c0581610bdf565b92915050565b60008060408385031215610c2257610c21610a60565b5b6000610c3085828601610b41565b9250506020610c4185828601610bf6565b9150509250929050565b6000819050919050565b610c5e81610c4b565b8114610c6957600080fd5b50565b600081359050610c7b81610c55565b92915050565b600060208284031215610c9757610c96610a60565b5b6000610ca584828501610c6c565b91505092915050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000610d1b602f83610cae565b9150610d2682610cbf565b604082019050919050565b60006020820190508181036000830152610d4a81610d0e565b9050919050565b6000819050919050565b610d6c610d6782610c4b565b610d51565b82525050565b6000610d7e8286610d5b565b602082019150610d8e8285610d5b565b602082019150610d9e8284610d5b565b602082019150819050949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610df0601783610daf565b9150610dfb82610dba565b601782019050919050565b600081519050919050565b60005b83811015610e2f578082015181840152602081019050610e14565b83811115610e3e576000848401525b50505050565b6000610e4f82610e06565b610e598185610daf565b9350610e69818560208601610e11565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610eab601183610daf565b9150610eb682610e75565b601182019050919050565b6000610ecc82610de3565b9150610ed88285610e44565b9150610ee382610e9e565b9150610eef8284610e44565b91508190509392505050565b6000601f19601f8301169050919050565b6000610f1782610e06565b610f218185610cae565b9350610f31818560208601610e11565b610f3a81610efb565b840191505092915050565b60006020820190508181036000830152610f5f8184610f0c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fa182610c4b565b9150610fac83610c4b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610fe557610fe4610f67565b5b828202905092915050565b6000610ffb82610c4b565b915061100683610c4b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561103b5761103a610f67565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006110af82610c4b565b915060008214156110c3576110c2610f67565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000611104602083610cae565b915061110f826110ce565b602082019050919050565b60006020820190508181036000830152611133816110f7565b905091905056fea26469706673582212208783b3106673e8d2548caed6e239b2e1b6a581e4593807da178fffb909b19b0d64736f6c634300080b0033
Deployed Bytecode Sourcemap
16075:620:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10581:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12417:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12810:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13858:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16118:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10877:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9982:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13202:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16368:324;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16171:38;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10581:204;10666:4;10705:32;10690:47;;;:11;:47;;;;:87;;;;10741:36;10765:11;10741:23;:36::i;:::-;10690:87;10683:94;;10581:204;;;:::o;12417:131::-;12491:7;12518:6;:12;12525:4;12518:12;;;;;;;;;;;:22;;;12511:29;;12417:131;;;:::o;12810:147::-;12893:18;12906:4;12893:12;:18::i;:::-;10473:16;10484:4;10473:10;:16::i;:::-;12924:25:::1;12935:4;12941:7;12924:10;:25::i;:::-;12810:147:::0;;;:::o;13858:218::-;13965:12;:10;:12::i;:::-;13954:23;;:7;:23;;;13946:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;14042:26;14054:4;14060:7;14042:11;:26::i;:::-;13858:218;;:::o;16118:48::-;;;;;;;;;;;;;;;;;:::o;10877:147::-;10963:4;10987:6;:12;10994:4;10987:12;;;;;;;;;;;:20;;:29;11008:7;10987:29;;;;;;;;;;;;;;;;;;;;;;;;;10980:36;;10877:147;;;;:::o;9982:49::-;10027:4;9982:49;;;:::o;13202:149::-;13286:18;13299:4;13286:12;:18::i;:::-;10473:16;10484:4;10473:10;:16::i;:::-;13317:26:::1;13329:4;13335:7;13317:11;:26::i;:::-;13202:149:::0;;;:::o;16368:324::-;10027:4;16427:18;;10473:16;10484:4;10473:10;:16::i;:::-;16458:6:::1;:15;16465:7;16458:15;;;;;;;;;;;;;;;;;;;;;16454:47;;;16482:19;;;;;;;;;;;;;;16454:47;16526:4;16508:6;:15;16515:7;16508:15;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;16589:12;16603:7;16612:15;16572:56;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16562:67;;;;;;16537:13;:22;16551:7;16537:22;;;;;;;;;;;:92;;;;16663:13;:22;16677:7;16663:22;;;;;;;;;;;;16654:7;16641:45;;;;;;;;;;16368:324:::0;;:::o;16171:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;1782:157::-;1867:4;1906:25;1891:40;;;:11;:40;;;;1884:47;;1782:157;;;:::o;11328:105::-;11395:30;11406:4;11412:12;:10;:12::i;:::-;11395:10;:30::i;:::-;11328:105;:::o;15359:238::-;15443:22;15451:4;15457:7;15443;:22::i;:::-;15438:152;;15514:4;15482:6;:12;15489:4;15482:12;;;;;;;;;;;:20;;:29;15503:7;15482:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15565:12;:10;:12::i;:::-;15538:40;;15556:7;15538:40;;15550:4;15538:40;;;;;;;;;;15438:152;15359:238;;:::o;4749:98::-;4802:7;4829:10;4822:17;;4749:98;:::o;15729:239::-;15813:22;15821:4;15827:7;15813;:22::i;:::-;15809:152;;;15884:5;15852:6;:12;15859:4;15852:12;;;;;;;;;;;:20;;:29;15873:7;15852:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15936:12;:10;:12::i;:::-;15909:40;;15927:7;15909:40;;15921:4;15909:40;;;;;;;;;;15809:152;15729:239;;:::o;11723:505::-;11812:22;11820:4;11826:7;11812;:22::i;:::-;11807:414;;12000:41;12028:7;12000:41;;12038:2;12000:19;:41::i;:::-;12114:38;12142:4;12134:13;;12149:2;12114:19;:38::i;:::-;11905:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11851:358;;;;;;;;;;;:::i;:::-;;;;;;;;11807:414;11723:505;;:::o;3612:451::-;3687:13;3713:19;3758:1;3749:6;3745:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;3735:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3713:47;;3771:15;:6;3778:1;3771:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;3797;:6;3804:1;3797:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;3828:9;3853:1;3844:6;3840:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;3828:26;;3823:135;3860:1;3856;:5;3823:135;;;3895:12;3916:3;3908:5;:11;3895:25;;;;;;;:::i;:::-;;;;;3883:6;3890:1;3883:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;3945:1;3935:11;;;;;3863:3;;;;:::i;:::-;;;3823:135;;;;3985:1;3976:5;:10;3968:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4048:6;4034:21;;;3612:451;;;;:::o;88:117:1:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:122::-;1674:24;1692:5;1674:24;:::i;:::-;1667:5;1664:35;1654:63;;1713:1;1710;1703:12;1654:63;1601:122;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1729:139;;;;:::o;1874:329::-;1933:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;1874:329;;;;:::o;2209:118::-;2296:24;2314:5;2296:24;:::i;:::-;2291:3;2284:37;2209:118;;:::o;2333:222::-;2426:4;2464:2;2453:9;2449:18;2441:26;;2477:71;2545:1;2534:9;2530:17;2521:6;2477:71;:::i;:::-;2333:222;;;;:::o;2561:126::-;2598:7;2638:42;2631:5;2627:54;2616:65;;2561:126;;;:::o;2693:96::-;2730:7;2759:24;2777:5;2759:24;:::i;:::-;2748:35;;2693:96;;;:::o;2795:122::-;2868:24;2886:5;2868:24;:::i;:::-;2861:5;2858:35;2848:63;;2907:1;2904;2897:12;2848:63;2795:122;:::o;2923:139::-;2969:5;3007:6;2994:20;2985:29;;3023:33;3050:5;3023:33;:::i;:::-;2923:139;;;;:::o;3068:474::-;3136:6;3144;3193:2;3181:9;3172:7;3168:23;3164:32;3161:119;;;3199:79;;:::i;:::-;3161:119;3319:1;3344:53;3389:7;3380:6;3369:9;3365:22;3344:53;:::i;:::-;3334:63;;3290:117;3446:2;3472:53;3517:7;3508:6;3497:9;3493:22;3472:53;:::i;:::-;3462:63;;3417:118;3068:474;;;;;:::o;3548:77::-;3585:7;3614:5;3603:16;;3548:77;;;:::o;3631:122::-;3704:24;3722:5;3704:24;:::i;:::-;3697:5;3694:35;3684:63;;3743:1;3740;3733:12;3684:63;3631:122;:::o;3759:139::-;3805:5;3843:6;3830:20;3821:29;;3859:33;3886:5;3859:33;:::i;:::-;3759:139;;;;:::o;3904:329::-;3963:6;4012:2;4000:9;3991:7;3987:23;3983:32;3980:119;;;4018:79;;:::i;:::-;3980:119;4138:1;4163:53;4208:7;4199:6;4188:9;4184:22;4163:53;:::i;:::-;4153:63;;4109:117;3904:329;;;;:::o;4239:169::-;4323:11;4357:6;4352:3;4345:19;4397:4;4392:3;4388:14;4373:29;;4239:169;;;;:::o;4414:234::-;4554:34;4550:1;4542:6;4538:14;4531:58;4623:17;4618:2;4610:6;4606:15;4599:42;4414:234;:::o;4654:366::-;4796:3;4817:67;4881:2;4876:3;4817:67;:::i;:::-;4810:74;;4893:93;4982:3;4893:93;:::i;:::-;5011:2;5006:3;5002:12;4995:19;;4654:366;;;:::o;5026:419::-;5192:4;5230:2;5219:9;5215:18;5207:26;;5279:9;5273:4;5269:20;5265:1;5254:9;5250:17;5243:47;5307:131;5433:4;5307:131;:::i;:::-;5299:139;;5026:419;;;:::o;5451:79::-;5490:7;5519:5;5508:16;;5451:79;;;:::o;5536:157::-;5641:45;5661:24;5679:5;5661:24;:::i;:::-;5641:45;:::i;:::-;5636:3;5629:58;5536:157;;:::o;5699:538::-;5867:3;5882:75;5953:3;5944:6;5882:75;:::i;:::-;5982:2;5977:3;5973:12;5966:19;;5995:75;6066:3;6057:6;5995:75;:::i;:::-;6095:2;6090:3;6086:12;6079:19;;6108:75;6179:3;6170:6;6108:75;:::i;:::-;6208:2;6203:3;6199:12;6192:19;;6228:3;6221:10;;5699:538;;;;;;:::o;6243:148::-;6345:11;6382:3;6367:18;;6243:148;;;;:::o;6397:173::-;6537:25;6533:1;6525:6;6521:14;6514:49;6397:173;:::o;6576:402::-;6736:3;6757:85;6839:2;6834:3;6757:85;:::i;:::-;6750:92;;6851:93;6940:3;6851:93;:::i;:::-;6969:2;6964:3;6960:12;6953:19;;6576:402;;;:::o;6984:99::-;7036:6;7070:5;7064:12;7054:22;;6984:99;;;:::o;7089:307::-;7157:1;7167:113;7181:6;7178:1;7175:13;7167:113;;;7266:1;7261:3;7257:11;7251:18;7247:1;7242:3;7238:11;7231:39;7203:2;7200:1;7196:10;7191:15;;7167:113;;;7298:6;7295:1;7292:13;7289:101;;;7378:1;7369:6;7364:3;7360:16;7353:27;7289:101;7138:258;7089:307;;;:::o;7402:377::-;7508:3;7536:39;7569:5;7536:39;:::i;:::-;7591:89;7673:6;7668:3;7591:89;:::i;:::-;7584:96;;7689:52;7734:6;7729:3;7722:4;7715:5;7711:16;7689:52;:::i;:::-;7766:6;7761:3;7757:16;7750:23;;7512:267;7402:377;;;;:::o;7785:167::-;7925:19;7921:1;7913:6;7909:14;7902:43;7785:167;:::o;7958:402::-;8118:3;8139:85;8221:2;8216:3;8139:85;:::i;:::-;8132:92;;8233:93;8322:3;8233:93;:::i;:::-;8351:2;8346:3;8342:12;8335:19;;7958:402;;;:::o;8366:967::-;8748:3;8770:148;8914:3;8770:148;:::i;:::-;8763:155;;8935:95;9026:3;9017:6;8935:95;:::i;:::-;8928:102;;9047:148;9191:3;9047:148;:::i;:::-;9040:155;;9212:95;9303:3;9294:6;9212:95;:::i;:::-;9205:102;;9324:3;9317:10;;8366:967;;;;;:::o;9339:102::-;9380:6;9431:2;9427:7;9422:2;9415:5;9411:14;9407:28;9397:38;;9339:102;;;:::o;9447:364::-;9535:3;9563:39;9596:5;9563:39;:::i;:::-;9618:71;9682:6;9677:3;9618:71;:::i;:::-;9611:78;;9698:52;9743:6;9738:3;9731:4;9724:5;9720:16;9698:52;:::i;:::-;9775:29;9797:6;9775:29;:::i;:::-;9770:3;9766:39;9759:46;;9539:272;9447:364;;;;:::o;9817:313::-;9930:4;9968:2;9957:9;9953:18;9945:26;;10017:9;10011:4;10007:20;10003:1;9992:9;9988:17;9981:47;10045:78;10118:4;10109:6;10045:78;:::i;:::-;10037:86;;9817:313;;;;:::o;10136:180::-;10184:77;10181:1;10174:88;10281:4;10278:1;10271:15;10305:4;10302:1;10295:15;10322:348;10362:7;10385:20;10403:1;10385:20;:::i;:::-;10380:25;;10419:20;10437:1;10419:20;:::i;:::-;10414:25;;10607:1;10539:66;10535:74;10532:1;10529:81;10524:1;10517:9;10510:17;10506:105;10503:131;;;10614:18;;:::i;:::-;10503:131;10662:1;10659;10655:9;10644:20;;10322:348;;;;:::o;10676:305::-;10716:3;10735:20;10753:1;10735:20;:::i;:::-;10730:25;;10769:20;10787:1;10769:20;:::i;:::-;10764:25;;10923:1;10855:66;10851:74;10848:1;10845:81;10842:107;;;10929:18;;:::i;:::-;10842:107;10973:1;10970;10966:9;10959:16;;10676:305;;;;:::o;10987:180::-;11035:77;11032:1;11025:88;11132:4;11129:1;11122:15;11156:4;11153:1;11146:15;11173:180;11221:77;11218:1;11211:88;11318:4;11315:1;11308:15;11342:4;11339:1;11332:15;11359:171;11398:3;11421:24;11439:5;11421:24;:::i;:::-;11412:33;;11467:4;11460:5;11457:15;11454:41;;;11475:18;;:::i;:::-;11454:41;11522:1;11515:5;11511:13;11504:20;;11359:171;;;:::o;11536:182::-;11676:34;11672:1;11664:6;11660:14;11653:58;11536:182;:::o;11724:366::-;11866:3;11887:67;11951:2;11946:3;11887:67;:::i;:::-;11880:74;;11963:93;12052:3;11963:93;:::i;:::-;12081:2;12076:3;12072:12;12065:19;;11724:366;;;:::o;12096:419::-;12262:4;12300:2;12289:9;12285:18;12277:26;;12349:9;12343:4;12339:20;12335:1;12324:9;12320:17;12313:47;12377:131;12503:4;12377:131;:::i;:::-;12369:139;;12096:419;;;:::o
Swarm Source
ipfs://8783b3106673e8d2548caed6e239b2e1b6a581e4593807da178fffb909b19b0d
Loading...
Loading
Loading...
Loading

Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.