ERC-721
Overview
Max Total Supply
2,102 NO
Holders
338
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 NOLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DN404Mirror
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-15 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @title DN404Mirror /// @notice DN404Mirror provides an interface for interacting with the /// NFT tokens in a DN404 implementation. /// /// @author vectorized.eth (@optimizoor) /// @author Quit (@0xQuit) /// @author Michael Amadi (@AmadiMichaels) /// @author cygaar (@0xCygaar) /// @author Thomas (@0xjustadev) /// @author Harrison (@PopPunkOnChain) /// /// @dev Note: /// - The ERC721 data is stored in the base DN404 contract. contract DN404Mirror { /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* EVENTS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Emitted when token `id` is transferred from `from` to `to`. event Transfer(address indexed from, address indexed to, uint256 indexed id); /// @dev Emitted when `owner` enables `account` to manage the `id` token. event Approval(address indexed owner, address indexed account, uint256 indexed id); /// @dev Emitted when `owner` enables or disables `operator` to manage all of their tokens. event ApprovalForAll(address indexed owner, address indexed operator, bool isApproved); /// @dev `keccak256(bytes("Transfer(address,address,uint256)"))`. uint256 private constant _TRANSFER_EVENT_SIGNATURE = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef; /// @dev `keccak256(bytes("Approval(address,address,uint256)"))`. uint256 private constant _APPROVAL_EVENT_SIGNATURE = 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925; /// @dev `keccak256(bytes("ApprovalForAll(address,address,bool)"))`. uint256 private constant _APPROVAL_FOR_ALL_EVENT_SIGNATURE = 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31; /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* CUSTOM ERRORS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Thrown when a call for an NFT function did not originate /// from the base DN404 contract. error SenderNotBase(); /// @dev Thrown when a call for an NFT function did not originate from the deployer. error SenderNotDeployer(); /// @dev Thrown when transferring an NFT to a contract address that /// does not implement ERC721Receiver. error TransferToNonERC721ReceiverImplementer(); /// @dev Thrown when linking to the DN404 base contract and the /// DN404 supportsInterface check fails or the call reverts. error CannotLink(); /// @dev Thrown when a linkMirrorContract call is received and the /// NFT mirror contract has already been linked to a DN404 base contract. error AlreadyLinked(); /// @dev Thrown when retrieving the base DN404 address when a link has not /// been established. error NotLinked(); /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* STORAGE */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Struct contain the NFT mirror contract storage. struct DN404NFTStorage { address baseERC20; address deployer; } /// @dev Returns a storage pointer for DN404NFTStorage. function _getDN404NFTStorage() internal pure virtual returns (DN404NFTStorage storage $) { /// @solidity memory-safe-assembly assembly { // `uint72(bytes9(keccak256("DN404_MIRROR_STORAGE")))`. $.slot := 0x3602298b8c10b01230 // Truncate to 9 bytes to reduce bytecode size. } } /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* CONSTRUCTOR */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ constructor(address deployer) { // For non-proxies, we will store the deployer so that only the deployer can // link the base contract. _getDN404NFTStorage().deployer = deployer; } /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* ERC721 OPERATIONS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Returns the token collection name from the base DN404 contract. function name() public view virtual returns (string memory result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { result := mload(0x40) mstore(0x00, 0x06fdde03) // `name()`. if iszero(staticcall(gas(), base, 0x1c, 0x04, 0x00, 0x00)) { returndatacopy(result, 0x00, returndatasize()) revert(result, returndatasize()) } returndatacopy(0x00, 0x00, 0x20) returndatacopy(result, mload(0x00), 0x20) returndatacopy(add(result, 0x20), add(mload(0x00), 0x20), mload(result)) mstore(0x40, add(add(result, 0x20), mload(result))) } } /// @dev Returns the token collection symbol from the base DN404 contract. function symbol() public view virtual returns (string memory result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { result := mload(0x40) mstore(0x00, 0x95d89b41) // `symbol()`. if iszero(staticcall(gas(), base, 0x1c, 0x04, 0x00, 0x00)) { returndatacopy(result, 0x00, returndatasize()) revert(result, returndatasize()) } returndatacopy(0x00, 0x00, 0x20) returndatacopy(result, mload(0x00), 0x20) returndatacopy(add(result, 0x20), add(mload(0x00), 0x20), mload(result)) mstore(0x40, add(add(result, 0x20), mload(result))) } } /// @dev Returns the Uniform Resource Identifier (URI) for token `id` from /// the base DN404 contract. function tokenURI(uint256 id) public view virtual returns (string memory result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { result := mload(0x40) mstore(0x20, id) mstore(0x00, 0xc87b56dd) // `tokenURI()`. if iszero(staticcall(gas(), base, 0x1c, 0x24, 0x00, 0x00)) { returndatacopy(result, 0x00, returndatasize()) revert(result, returndatasize()) } returndatacopy(0x00, 0x00, 0x20) returndatacopy(result, mload(0x00), 0x20) returndatacopy(add(result, 0x20), add(mload(0x00), 0x20), mload(result)) mstore(0x40, add(add(result, 0x20), mload(result))) } } /// @dev Returns the total NFT supply from the base DN404 contract. function totalSupply() public view virtual returns (uint256 result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x00, 0xe2c79281) // `totalNFTSupply()`. if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), base, 0x1c, 0x04, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := mload(0x00) } } /// @dev Returns the number of NFT tokens owned by `owner` from the base DN404 contract. /// /// Requirements: /// - `owner` must not be the zero address. function balanceOf(address owner) public view virtual returns (uint256 result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x20, shr(96, shl(96, owner))) mstore(0x00, 0xf5b100ea) // `balanceOfNFT(address)`. if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), base, 0x1c, 0x24, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := mload(0x00) } } /// @dev Returns the owner of token `id` from the base DN404 contract. /// /// Requirements: /// - Token `id` must exist. function ownerOf(uint256 id) public view virtual returns (address result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x00, 0x6352211e) // `ownerOf(uint256)`. mstore(0x20, id) if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), base, 0x1c, 0x24, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := shr(96, mload(0x0c)) } } /// @dev Sets `spender` as the approved account to manage token `id` in /// the base DN404 contract. /// /// Requirements: /// - Token `id` must exist. /// - The caller must be the owner of the token, /// or an approved operator for the token owner. /// /// Emits an {Approval} event. function approve(address spender, uint256 id) public virtual { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { spender := shr(96, shl(96, spender)) let m := mload(0x40) mstore(0x00, 0xd10b6e0c) // `approveNFT(address,uint256,address)`. mstore(0x20, spender) mstore(0x40, id) mstore(0x60, caller()) if iszero( and( gt(returndatasize(), 0x1f), call(gas(), base, callvalue(), 0x1c, 0x64, 0x00, 0x20) ) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } mstore(0x40, m) // Restore the free memory pointer. mstore(0x60, 0) // Restore the zero pointer. // Emit the {Approval} event. log4(codesize(), 0x00, _APPROVAL_EVENT_SIGNATURE, shr(96, mload(0x0c)), spender, id) } } /// @dev Returns the account approved to manage token `id` from /// the base DN404 contract. /// /// Requirements: /// - Token `id` must exist. function getApproved(uint256 id) public view virtual returns (address result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { mstore(0x00, 0x081812fc) // `getApproved(uint256)`. mstore(0x20, id) if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), base, 0x1c, 0x24, 0x00, 0x20)) ) { returndatacopy(mload(0x40), 0x00, returndatasize()) revert(mload(0x40), returndatasize()) } result := shr(96, mload(0x0c)) } } /// @dev Sets whether `operator` is approved to manage the tokens of the caller in /// the base DN404 contract. /// /// Emits an {ApprovalForAll} event. function setApprovalForAll(address operator, bool approved) public virtual { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { operator := shr(96, shl(96, operator)) let m := mload(0x40) mstore(0x00, 0x813500fc) // `setApprovalForAll(address,bool,address)`. mstore(0x20, operator) mstore(0x40, iszero(iszero(approved))) mstore(0x60, caller()) if iszero( and(eq(mload(0x00), 1), call(gas(), base, callvalue(), 0x1c, 0x64, 0x00, 0x20)) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } // Emit the {ApprovalForAll} event. log3(0x40, 0x20, _APPROVAL_FOR_ALL_EVENT_SIGNATURE, caller(), operator) mstore(0x40, m) // Restore the free memory pointer. mstore(0x60, 0) // Restore the zero pointer. } } /// @dev Returns whether `operator` is approved to manage the tokens of `owner` from /// the base DN404 contract. function isApprovedForAll(address owner, address operator) public view virtual returns (bool result) { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { let m := mload(0x40) mstore(0x40, operator) mstore(0x2c, shl(96, owner)) mstore(0x0c, 0xe985e9c5000000000000000000000000) // `isApprovedForAll(address,address)`. if iszero( and(gt(returndatasize(), 0x1f), staticcall(gas(), base, 0x1c, 0x44, 0x00, 0x20)) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } mstore(0x40, m) // Restore the free memory pointer. result := iszero(iszero(mload(0x00))) } } /// @dev Transfers token `id` from `from` to `to`. /// /// Requirements: /// /// - Token `id` must exist. /// - `from` must be the owner of the token. /// - `to` cannot be the zero address. /// - The caller must be the owner of the token, or be approved to manage the token. /// /// Emits a {Transfer} event. function transferFrom(address from, address to, uint256 id) public virtual { address base = baseERC20(); /// @solidity memory-safe-assembly assembly { from := shr(96, shl(96, from)) to := shr(96, shl(96, to)) let m := mload(0x40) mstore(m, 0xe5eb36c8) // `transferFromNFT(address,address,uint256,address)`. mstore(add(m, 0x20), from) mstore(add(m, 0x40), to) mstore(add(m, 0x60), id) mstore(add(m, 0x80), caller()) if iszero( and(eq(mload(m), 1), call(gas(), base, callvalue(), add(m, 0x1c), 0x84, m, 0x20)) ) { returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } // Emit the {Transfer} event. log4(codesize(), 0x00, _TRANSFER_EVENT_SIGNATURE, from, to, id) } } /// @dev Equivalent to `safeTransferFrom(from, to, id, "")`. function safeTransferFrom(address from, address to, uint256 id) public payable virtual { transferFrom(from, to, id); if (_hasCode(to)) _checkOnERC721Received(from, to, id, ""); } /// @dev Transfers token `id` from `from` to `to`. /// /// Requirements: /// /// - Token `id` must exist. /// - `from` must be the owner of the token. /// - `to` cannot be the zero address. /// - The caller must be the owner of the token, or be approved to manage the token. /// - If `to` refers to a smart contract, it must implement /// {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. /// /// Emits a {Transfer} event. function safeTransferFrom(address from, address to, uint256 id, bytes calldata data) public virtual { transferFrom(from, to, id); if (_hasCode(to)) _checkOnERC721Received(from, to, id, data); } /// @dev Returns true if this contract implements the interface defined by `interfaceId`. /// See: https://eips.ethereum.org/EIPS/eip-165 /// This function call must use less than 30000 gas. function supportsInterface(bytes4 interfaceId) public view virtual returns (bool result) { /// @solidity memory-safe-assembly assembly { let s := shr(224, interfaceId) // ERC165: 0x01ffc9a7, ERC721: 0x80ac58cd, ERC721Metadata: 0x5b5e139f. result := or(or(eq(s, 0x01ffc9a7), eq(s, 0x80ac58cd)), eq(s, 0x5b5e139f)) } } /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* MIRROR OPERATIONS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Returns the address of the base DN404 contract. function baseERC20() public view virtual returns (address base) { base = _getDN404NFTStorage().baseERC20; if (base == address(0)) revert NotLinked(); } /// @dev Fallback modifier to execute calls from the base DN404 contract. modifier dn404NFTFallback() virtual { DN404NFTStorage storage $ = _getDN404NFTStorage(); uint256 fnSelector = _calldataload(0x00) >> 224; // `logTransfer(uint256[])`. if (fnSelector == 0x263c69d6) { if (msg.sender != $.baseERC20) revert SenderNotBase(); /// @solidity memory-safe-assembly assembly { // When returndatacopy copies 1 or more out-of-bounds bytes, it reverts. returndatacopy(0x00, returndatasize(), lt(calldatasize(), 0x20)) let o := add(0x24, calldataload(0x04)) // Packed logs offset. returndatacopy(0x00, returndatasize(), lt(calldatasize(), o)) let end := add(o, shl(5, calldataload(sub(o, 0x20)))) returndatacopy(0x00, returndatasize(), lt(calldatasize(), end)) for {} iszero(eq(o, end)) { o := add(0x20, o) } { let d := calldataload(o) // Entry in the packed logs. let a := shr(96, d) // The address. let b := and(1, d) // Whether it is a burn. log4( codesize(), 0x00, _TRANSFER_EVENT_SIGNATURE, mul(a, b), mul(a, iszero(b)), shr(168, shl(160, d)) ) } mstore(0x00, 0x01) return(0x00, 0x20) } } // `linkMirrorContract(address)`. if (fnSelector == 0x0f4599e5) { if ($.deployer != address(0)) { if (address(uint160(_calldataload(0x04))) != $.deployer) { revert SenderNotDeployer(); } } if ($.baseERC20 != address(0)) revert AlreadyLinked(); $.baseERC20 = msg.sender; /// @solidity memory-safe-assembly assembly { mstore(0x00, 0x01) return(0x00, 0x20) } } _; } /// @dev Fallback function for calls from base DN404 contract. fallback() external payable virtual dn404NFTFallback {} receive() external payable virtual {} /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/ /* PRIVATE HELPERS */ /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/ /// @dev Returns the calldata value at `offset`. function _calldataload(uint256 offset) private pure returns (uint256 value) { /// @solidity memory-safe-assembly assembly { value := calldataload(offset) } } /// @dev Returns if `a` has bytecode of non-zero length. function _hasCode(address a) private view returns (bool result) { /// @solidity memory-safe-assembly assembly { result := extcodesize(a) // Can handle dirty upper bits. } } /// @dev Perform a call to invoke {IERC721Receiver-onERC721Received} on `to`. /// Reverts if the target does not support the function correctly. function _checkOnERC721Received(address from, address to, uint256 id, bytes memory data) private { /// @solidity memory-safe-assembly assembly { // Prepare the calldata. let m := mload(0x40) let onERC721ReceivedSelector := 0x150b7a02 mstore(m, onERC721ReceivedSelector) mstore(add(m, 0x20), caller()) // The `operator`, which is always `msg.sender`. mstore(add(m, 0x40), shr(96, shl(96, from))) mstore(add(m, 0x60), id) mstore(add(m, 0x80), 0x80) let n := mload(data) mstore(add(m, 0xa0), n) if n { pop(staticcall(gas(), 4, add(data, 0x20), n, add(m, 0xc0), n)) } // Revert if the call reverts. if iszero(call(gas(), to, 0, add(m, 0x1c), add(n, 0xa4), m, 0x20)) { if returndatasize() { // Bubble up the revert if the call reverts. returndatacopy(m, 0x00, returndatasize()) revert(m, returndatasize()) } } // Load the returndata and compare it. if iszero(eq(mload(m), shl(224, onERC721ReceivedSelector))) { mstore(0x00, 0xd1a57ed6) // `TransferToNonERC721ReceiverImplementer()`. revert(0x1c, 0x04) } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyLinked","type":"error"},{"inputs":[],"name":"CannotLink","type":"error"},{"inputs":[],"name":"NotLinked","type":"error"},{"inputs":[],"name":"SenderNotBase","type":"error"},{"inputs":[],"name":"SenderNotDeployer","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"isApproved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseERC20","outputs":[{"internalType":"address","name":"base","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"result","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"result","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"result","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610d43380380610d4383398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008c565b60006020828403121561006e57600080fd5b81516001600160a01b038116811461008557600080fd5b9392505050565b610ca88061009b6000396000f3fe6080604052600436106100ec5760003560e01c80636352211e1161008a578063a22cb46511610059578063a22cb4651461044b578063b88d4fde1461046b578063c87b56dd1461048b578063e985e9c5146104ab576100f3565b80636352211e146103e157806370a082311461040157806395d89b411461042157806397e5311c14610436576100f3565b8063095ea7b3116100c6578063095ea7b31461036b57806318160ddd1461038b57806323b872dd146103ae57806342842e0e146103ce576100f3565b806301ffc9a7146102bf57806306fdde0314610311578063081812fc14610333576100f3565b366100f357005b683602298b8c10b0123060003560e01c63263c69d68190036101d85781546001600160a01b03163314610152576040517f363cb31200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602036103d60003e6004356024018036103d60003e602081033560051b81018036103d60003e5b8082146101cb5781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4505050816020019150610179565b5050600160005260206000f35b80630f4599e5036102bd5760018201546001600160a01b0316156102475760018201546001600160a01b03166004356001600160a01b031614610247576040517fc59ec47a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546001600160a01b031615610289576040517fbf656a4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317825560016000908152602090f35b005b3480156102cb57600080fd5b506102fc6102da366004610a1b565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b34801561031d57600080fd5b506103266104cb565b6040516103089190610a64565b34801561033f57600080fd5b5061035361034e366004610ab2565b610525565b6040516001600160a01b039091168152602001610308565b34801561037757600080fd5b506102bd610386366004610ae7565b61056c565b34801561039757600080fd5b506103a06105f2565b604051908152602001610308565b3480156103ba57600080fd5b506102bd6103c9366004610b11565b610630565b6102bd6103dc366004610b11565b6106bf565b3480156103ed57600080fd5b506103536103fc366004610ab2565b6106f1565b34801561040d57600080fd5b506103a061041c366004610b4d565b61072b565b34801561042d57600080fd5b50610326610775565b34801561044257600080fd5b506103536107a7565b34801561045757600080fd5b506102bd610466366004610b68565b6107f5565b34801561047757600080fd5b506102bd610486366004610ba4565b610878565b34801561049757600080fd5b506103266104a6366004610ab2565b6108d3565b3480156104b757600080fd5b506102fc6104c6366004610c3f565b610933565b606060006104d76107a7565b905060405191506306fdde036000526000806004601c845afa6104fd573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016040525090565b6000806105306107a7565b905063081812fc60005282602052602060006024601c845afa601f3d111661055f573d60006040513e3d604051fd5b5050600c5160601c919050565b60006105766107a7565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d11166105b6573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b6000806105fd6107a7565b905063e2c79281600052602060006004601c845afa601f3d1116610628573d60006040513e3d604051fd5b505060005190565b600061063a6107a7565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af1600182511416610690573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b6106ca838383610630565b813b156106ec576106ec8383836040518060200160405280600081525061098f565b505050565b6000806106fc6107a7565b9050636352211e60005282602052602060006024601c845afa601f3d111661055f573d60006040513e3d604051fd5b6000806107366107a7565b90508260601b60601c60205263f5b100ea600052602060006024601c845afa601f3d111661076b573d60006040513e3d604051fd5b5050600051919050565b606060006107816107a7565b905060405191506395d89b416000526000806004601c845afa6104fd573d6000833e3d82fd5b683602298b8c10b01230546001600160a01b0316806107f2576040517f5b2a47ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b60006107ff6107a7565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af160016000511416610843573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b610883858585610630565b833b156108cc576108cc85858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061098f92505050565b5050505050565b606060006108df6107a7565b905060405191508260205263c87b56dd6000526000806024601c845afa610909573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e8151602083010160405250919050565b60008061093e6107a7565b9050604051836040528460601b602c526fe985e9c5000000000000000000000000600c52602060006044601c855afa601f3d111661097f573d6000823e3d81fd5b6040525050600051151592915050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a084015280156109d6578060c08401826020870160045afa505b60208360a48301601c860160008a5af16109f9573d156109f9573d6000843e3d83fd5b508060e01b825114610a135763d1a57ed66000526004601cfd5b505050505050565b600060208284031215610a2d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a5d57600080fd5b9392505050565b600060208083528351808285015260005b81811015610a9157858101830151858201604001528201610a75565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610ac457600080fd5b5035919050565b80356001600160a01b0381168114610ae257600080fd5b919050565b60008060408385031215610afa57600080fd5b610b0383610acb565b946020939093013593505050565b600080600060608486031215610b2657600080fd5b610b2f84610acb565b9250610b3d60208501610acb565b9150604084013590509250925092565b600060208284031215610b5f57600080fd5b610a5d82610acb565b60008060408385031215610b7b57600080fd5b610b8483610acb565b915060208301358015158114610b9957600080fd5b809150509250929050565b600080600080600060808688031215610bbc57600080fd5b610bc586610acb565b9450610bd360208701610acb565b935060408601359250606086013567ffffffffffffffff80821115610bf757600080fd5b818801915088601f830112610c0b57600080fd5b813581811115610c1a57600080fd5b896020828501011115610c2c57600080fd5b9699959850939650602001949392505050565b60008060408385031215610c5257600080fd5b610c5b83610acb565b9150610c6960208401610acb565b9050925092905056fea2646970667358221220170c4bee70cfee47c060c5ceb00cc9cf99cf9ce16a9243a27dd7c5d20aeed8d964736f6c63430008120033000000000000000000000000567abe53b9ea582245e35f31195b11cb23cb0057
Deployed Bytecode
0x6080604052600436106100ec5760003560e01c80636352211e1161008a578063a22cb46511610059578063a22cb4651461044b578063b88d4fde1461046b578063c87b56dd1461048b578063e985e9c5146104ab576100f3565b80636352211e146103e157806370a082311461040157806395d89b411461042157806397e5311c14610436576100f3565b8063095ea7b3116100c6578063095ea7b31461036b57806318160ddd1461038b57806323b872dd146103ae57806342842e0e146103ce576100f3565b806301ffc9a7146102bf57806306fdde0314610311578063081812fc14610333576100f3565b366100f357005b683602298b8c10b0123060003560e01c63263c69d68190036101d85781546001600160a01b03163314610152576040517f363cb31200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602036103d60003e6004356024018036103d60003e602081033560051b81018036103d60003e5b8082146101cb5781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4505050816020019150610179565b5050600160005260206000f35b80630f4599e5036102bd5760018201546001600160a01b0316156102475760018201546001600160a01b03166004356001600160a01b031614610247576040517fc59ec47a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546001600160a01b031615610289576040517fbf656a4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317825560016000908152602090f35b005b3480156102cb57600080fd5b506102fc6102da366004610a1b565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b34801561031d57600080fd5b506103266104cb565b6040516103089190610a64565b34801561033f57600080fd5b5061035361034e366004610ab2565b610525565b6040516001600160a01b039091168152602001610308565b34801561037757600080fd5b506102bd610386366004610ae7565b61056c565b34801561039757600080fd5b506103a06105f2565b604051908152602001610308565b3480156103ba57600080fd5b506102bd6103c9366004610b11565b610630565b6102bd6103dc366004610b11565b6106bf565b3480156103ed57600080fd5b506103536103fc366004610ab2565b6106f1565b34801561040d57600080fd5b506103a061041c366004610b4d565b61072b565b34801561042d57600080fd5b50610326610775565b34801561044257600080fd5b506103536107a7565b34801561045757600080fd5b506102bd610466366004610b68565b6107f5565b34801561047757600080fd5b506102bd610486366004610ba4565b610878565b34801561049757600080fd5b506103266104a6366004610ab2565b6108d3565b3480156104b757600080fd5b506102fc6104c6366004610c3f565b610933565b606060006104d76107a7565b905060405191506306fdde036000526000806004601c845afa6104fd573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016040525090565b6000806105306107a7565b905063081812fc60005282602052602060006024601c845afa601f3d111661055f573d60006040513e3d604051fd5b5050600c5160601c919050565b60006105766107a7565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d11166105b6573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b6000806105fd6107a7565b905063e2c79281600052602060006004601c845afa601f3d1116610628573d60006040513e3d604051fd5b505060005190565b600061063a6107a7565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af1600182511416610690573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b6106ca838383610630565b813b156106ec576106ec8383836040518060200160405280600081525061098f565b505050565b6000806106fc6107a7565b9050636352211e60005282602052602060006024601c845afa601f3d111661055f573d60006040513e3d604051fd5b6000806107366107a7565b90508260601b60601c60205263f5b100ea600052602060006024601c845afa601f3d111661076b573d60006040513e3d604051fd5b5050600051919050565b606060006107816107a7565b905060405191506395d89b416000526000806004601c845afa6104fd573d6000833e3d82fd5b683602298b8c10b01230546001600160a01b0316806107f2576040517f5b2a47ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b60006107ff6107a7565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af160016000511416610843573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b610883858585610630565b833b156108cc576108cc85858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061098f92505050565b5050505050565b606060006108df6107a7565b905060405191508260205263c87b56dd6000526000806024601c845afa610909573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e8151602083010160405250919050565b60008061093e6107a7565b9050604051836040528460601b602c526fe985e9c5000000000000000000000000600c52602060006044601c855afa601f3d111661097f573d6000823e3d81fd5b6040525050600051151592915050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a084015280156109d6578060c08401826020870160045afa505b60208360a48301601c860160008a5af16109f9573d156109f9573d6000843e3d83fd5b508060e01b825114610a135763d1a57ed66000526004601cfd5b505050505050565b600060208284031215610a2d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a5d57600080fd5b9392505050565b600060208083528351808285015260005b81811015610a9157858101830151858201604001528201610a75565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610ac457600080fd5b5035919050565b80356001600160a01b0381168114610ae257600080fd5b919050565b60008060408385031215610afa57600080fd5b610b0383610acb565b946020939093013593505050565b600080600060608486031215610b2657600080fd5b610b2f84610acb565b9250610b3d60208501610acb565b9150604084013590509250925092565b600060208284031215610b5f57600080fd5b610a5d82610acb565b60008060408385031215610b7b57600080fd5b610b8483610acb565b915060208301358015158114610b9957600080fd5b809150509250929050565b600080600080600060808688031215610bbc57600080fd5b610bc586610acb565b9450610bd360208701610acb565b935060408601359250606086013567ffffffffffffffff80821115610bf757600080fd5b818801915088601f830112610c0b57600080fd5b813581811115610c1a57600080fd5b896020828501011115610c2c57600080fd5b9699959850939650602001949392505050565b60008060408385031215610c5257600080fd5b610c5b83610acb565b9150610c6960208401610acb565b9050925092905056fea2646970667358221220170c4bee70cfee47c060c5ceb00cc9cf99cf9ce16a9243a27dd7c5d20aeed8d964736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000567abe53b9ea582245e35f31195b11cb23cb0057
-----Decoded View---------------
Arg [0] : deployer (address): 0x567Abe53b9Ea582245E35f31195B11CB23Cb0057
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000567abe53b9ea582245e35f31195b11cb23cb0057
Deployed Bytecode Sourcemap
506:21541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3882:20;17405:25;20156:20;17511:3;17488:26;17583:10;17569:24;;;17565:1333;;17628:11;;-1:-1:-1;;;;;17628:11:0;17614:10;:25;17610:53;;17648:15;;;;;;;;;;;;;;17610:53;17902:4;17886:14;17883:24;17865:16;17859:4;17844:64;17958:4;17945:18;17939:4;17935:29;18063:1;18047:14;18044:21;18026:16;18020:4;18005:61;18129:4;18126:1;18122:12;18109:26;18106:1;18102:34;18099:1;18095:42;18213:3;18197:14;18194:23;18176:16;18170:4;18155:63;18238:562;18258:3;18255:1;18252:10;18238:562;;18331:1;18318:15;18401:1;18397:2;18393:10;18457:1;18454;18450:9;18755:1;18750:3;18746:11;18741:3;18737:21;18707:1;18700:9;18697:1;18693:17;18664:1;18661;18657:9;18605:25;18574:4;18537:10;18506:275;;;;18281:1;18275:4;18271:12;18266:17;;18238:562;;;18242:2;;18831:4;18825;18818:18;18867:4;18861;18854:18;17565:1333;18955:10;18969;18955:24;18951:512;;19000:10;;;;-1:-1:-1;;;;;19000:10:0;:24;18996:190;;19090:10;;;;-1:-1:-1;;;;;19090:10:0;19079:4;20156:20;-1:-1:-1;;;;;19049:51:0;;19045:126;;19132:19;;;;;;;;;;;;;;19045:126;19204:11;;-1:-1:-1;;;;;19204:11:0;:25;19200:53;;19238:15;;;;;;;;;;;;;;19200:53;19268:24;;;;19282:10;19268:24;;;;:11;19383:18;;;19432:4;;19419:18;18951:512;17394:2088;16368:387;;;;;;;;;;-1:-1:-1;16368:387:0;;;;;:::i;:::-;16686:10;16549:3;16545:21;;;;16680:17;;;16705:10;16699:17;;16677:40;16725:10;16719:17;;;16674:63;;16368:387;;;;516:14:1;;509:22;491:41;;479:2;464:18;16368:387:0;;;;;;;;4818:728;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11029:615::-;;;;;;;;;;-1:-1:-1;11029:615:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1445:55:1;;;1427:74;;1415:2;1400:18;11029:615:0;1281:226:1;9816:1036:0;;;;;;;;;;-1:-1:-1;9816:1036:0;;;;;:::i;:::-;;:::i;7345:562::-;;;;;;;;;;;;;:::i;:::-;;;2118:25:1;;;2106:2;2091:18;7345:562:0;1972:177:1;14177:942:0;;;;;;;;;;-1:-1:-1;14177:942:0;;;;;:::i;:::-;;:::i;15193:203::-;;;;;;:::i;:::-;;:::i;8869:607::-;;;;;;;;;;-1:-1:-1;8869:607:0;;;;;:::i;:::-;;:::i;8090:629::-;;;;;;;;;;-1:-1:-1;8090:629:0;;;;;:::i;:::-;;:::i;5634:732::-;;;;;;;;;;;;;:::i;17097:174::-;;;;;;;;;;;;;:::i;11825:1003::-;;;;;;;;;;-1:-1:-1;11825:1003:0;;;;;:::i;:::-;;:::i;15913:241::-;;;;;;;;;;-1:-1:-1;15913:241:0;;;;;:::i;:::-;;:::i;6488:776::-;;;;;;;;;;-1:-1:-1;6488:776:0;;;;;:::i;:::-;;:::i;12960:850::-;;;;;;;;;;-1:-1:-1;12960:850:0;;;;;:::i;:::-;;:::i;4818:728::-;4863:20;4896:12;4911:11;:9;:11::i;:::-;4896:26;;5017:4;5011:11;5001:21;;5049:10;5043:4;5036:24;5139:4;5133;5127;5121;5115;5108:5;5097:47;5087:189;;5194:16;5188:4;5180:6;5165:46;5244:16;5236:6;5229:32;5087:189;5317:4;5311;5305;5290:32;5372:4;5365;5359:11;5351:6;5336:41;5455:6;5449:13;5442:4;5435;5429:11;5425:22;5418:4;5410:6;5406:17;5391:72;5519:6;5513:13;5506:4;5498:6;5494:17;5490:37;5484:4;5477:51;4986:553;4818:728;:::o;11029:615::-;11091:14;11118:12;11133:11;:9;:11::i;:::-;11118:26;;11236:10;11230:4;11223:24;11301:2;11295:4;11288:16;11420:4;11414;11408;11402;11396;11389:5;11378:47;11371:4;11353:16;11350:26;11346:80;11318:264;;11495:16;11489:4;11482;11476:11;11461:51;11550:16;11543:4;11537:11;11530:37;11318:264;-1:-1:-1;;11620:4:0;11614:11;11610:2;11606:20;;11029:615;-1:-1:-1;11029:615:0:o;9816:1036::-;9888:12;9903:11;:9;:11::i;:::-;9888:26;;10020:7;10016:2;10012:16;10008:2;10004:25;9993:36;;10058:4;10052:11;10090:10;10084:4;10077:24;10170:7;10164:4;10157:21;10205:2;10199:4;10192:16;10235:8;10229:4;10222:22;10410:4;10404;10398;10392;10379:11;10373:4;10366:5;10361:54;10333:4;10315:16;10312:26;10286:148;10258:312;;10493:16;10487:4;10484:1;10469:41;10538:16;10535:1;10528:27;10258:312;10597:1;10591:4;10584:15;;10662:1;10656:4;10649:15;10831:2;10822:7;10814:4;10808:11;10804:2;10800:20;10773:25;10767:4;10755:10;10750:84;9978:867;9816:1036;;:::o;7345:562::-;7397:14;7424:12;7439:11;:9;:11::i;:::-;7424:26;;7542:10;7536:4;7529:24;7692:4;7686;7680;7674;7668;7661:5;7650:47;7643:4;7625:16;7622:26;7618:80;7590:264;;7767:16;7761:4;7754;7748:11;7733:51;7822:16;7815:4;7809:11;7802:37;7590:264;-1:-1:-1;;7884:4:0;7878:11;;7345:562::o;14177:942::-;14263:12;14278:11;:9;:11::i;:::-;14263:26;;14392:4;14388:2;14384:13;14380:2;14376:22;14368:30;;14434:2;14430;14426:11;14422:2;14418:20;14412:26;;14467:4;14461:11;14496:10;14493:1;14486:21;14597:4;14590;14587:1;14583:12;14576:26;14637:2;14630:4;14627:1;14623:12;14616:24;14675:2;14668:4;14665:1;14661:12;14654:24;14713:8;14706:4;14703:1;14699:12;14692:30;14839:4;14836:1;14830:4;14823;14820:1;14816:12;14803:11;14797:4;14790:5;14785:59;14781:1;14777;14771:8;14768:15;14764:81;14736:245;;14904:16;14898:4;14895:1;14880:41;14949:16;14946:1;14939:27;14736:245;;15098:2;15094;15088:4;15061:25;15055:4;15043:10;15038:63;14353:759;14177:942;;;:::o;15193:203::-;15291:26;15304:4;15310:2;15314;15291:12;:26::i;:::-;20417:14;;15330:58;;;15348:40;15371:4;15377:2;15381;15348:40;;;;;;;;;;;;:22;:40::i;:::-;15193:203;;;:::o;8869:607::-;8927:14;8954:12;8969:11;:9;:11::i;:::-;8954:26;;9072:10;9066:4;9059:24;9133:2;9127:4;9120:16;9252:4;9246;9240;9234;9228;9221:5;9210:47;9203:4;9185:16;9182:26;9178:80;9150:264;;9327:16;9321:4;9314;9308:11;9293:51;9382:16;9375:4;9369:11;9362:37;8090:629;8153:14;8180:12;8195:11;:9;:11::i;:::-;8180:26;;8314:5;8310:2;8306:14;8302:2;8298:23;8292:4;8285:37;8349:10;8343:4;8336:24;8504:4;8498;8492;8486;8480;8473:5;8462:47;8455:4;8437:16;8434:26;8430:80;8402:264;;8579:16;8573:4;8566;8560:11;8545:51;8634:16;8627:4;8621:11;8614:37;8402:264;-1:-1:-1;;8696:4:0;8690:11;;8090:629;-1:-1:-1;8090:629:0:o;5634:732::-;5681:20;5714:12;5729:11;:9;:11::i;:::-;5714:26;;5835:4;5829:11;5819:21;;5867:10;5861:4;5854:24;5959:4;5953;5947;5941;5935;5928:5;5917:47;5907:189;;6014:16;6008:4;6000:6;5985:46;6064:16;6056:6;6049:32;17097:174;3882:20;17179:31;-1:-1:-1;;;;;17179:31:0;;17221:42;;17252:11;;;;;;;;;;;;;;17221:42;17097:174;:::o;11825:1003::-;11911:12;11926:11;:9;:11::i;:::-;11911:26;;12044:8;12040:2;12036:17;12032:2;12028:26;12016:38;;12083:4;12077:11;12115:10;12109:4;12102:24;12199:8;12193:4;12186:22;12249:8;12242:16;12235:24;12229:4;12222:38;12287:8;12281:4;12274:22;12411:4;12405;12399;12393;12380:11;12374:4;12367:5;12362:54;12358:1;12351:4;12345:11;12342:18;12338:79;12310:243;;12476:16;12470:4;12467:1;12452:41;12521:16;12518:1;12511:27;12310:243;12678:8;12668;12633:33;12627:4;12621;12616:71;12708:4;12701:15;-1:-1:-1;;12779:1:0;12773:4;12766:15;-1:-1:-1;11825:1003:0:o;15913:241::-;16047:26;16060:4;16066:2;16070;16047:12;:26::i;:::-;20417:14;;16086:60;;;16104:42;16127:4;16133:2;16137;16141:4;;16104:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16104:22:0;;-1:-1:-1;;;16104:42:0:i;:::-;15913:241;;;;;:::o;6488:776::-;6547:20;6580:12;6595:11;:9;:11::i;:::-;6580:26;;6701:4;6695:11;6685:21;;6733:2;6727:4;6720:16;6763:10;6757:4;6750:24;6857:4;6851;6845;6839;6833;6826:5;6815:47;6805:189;;6912:16;6906:4;6898:6;6883:46;6962:16;6954:6;6947:32;6805:189;7035:4;7029;7023;7008:32;7090:4;7083;7077:11;7069:6;7054:41;7173:6;7167:13;7160:4;7153;7147:11;7143:22;7136:4;7128:6;7124:17;7109:72;7237:6;7231:13;7224:4;7216:6;7212:17;7208:37;7202:4;7195:51;6670:587;6488:776;;;:::o;12960:850::-;13084:11;13113:12;13128:11;:9;:11::i;:::-;13113:26;;13233:4;13227:11;13265:8;13259:4;13252:22;13309:5;13305:2;13301:14;13295:4;13288:28;13343:34;13337:4;13330:48;13534:4;13528;13522;13516;13510;13503:5;13492:47;13485:4;13467:16;13464:26;13460:80;13432:244;;13599:16;13593:4;13590:1;13575:41;13644:16;13641:1;13634:27;13432:244;13697:4;13690:15;-1:-1:-1;;13785:4:0;13779:11;13772:19;13765:27;;12960:850;-1:-1:-1;;12960:850:0:o;20644:1400::-;20887:4;20881:11;20938:10;20972:24;20969:1;20962:35;21032:8;21025:4;21022:1;21018:12;21011:30;21141:4;21137:2;21133:13;21129:2;21125:22;21118:4;21115:1;21111:12;21104:44;21183:2;21176:4;21173:1;21169:12;21162:24;21221:4;21214;21211:1;21207:12;21200:26;21255:4;21249:11;21295:1;21288:4;21285:1;21281:12;21274:23;21314:1;21311:71;;;21377:1;21370:4;21367:1;21363:12;21360:1;21353:4;21347;21343:15;21340:1;21333:5;21322:57;21318:62;21311:71;21500:4;21497:1;21490:4;21487:1;21483:12;21476:4;21473:1;21469:12;21466:1;21462:2;21455:5;21450:55;21440:319;;21529:16;21526:218;;;21659:16;21653:4;21650:1;21635:41;21708:16;21705:1;21698:27;21526:218;21440:319;21857:24;21852:3;21848:34;21844:1;21838:8;21835:48;21825:201;;21917:10;21911:4;21904:24;22006:4;22000;21993:18;21825:201;;;20644:1400;;;;:::o;14:332:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:1:o;543:548::-;655:4;684:2;713;702:9;695:21;745:6;739:13;788:6;783:2;772:9;768:18;761:34;813:1;823:140;837:6;834:1;831:13;823:140;;;932:14;;;928:23;;922:30;898:17;;;917:2;894:26;887:66;852:10;;823:140;;;827:3;1012:1;1007:2;998:6;987:9;983:22;979:31;972:42;1082:2;1075;1071:7;1066:2;1058:6;1054:15;1050:29;1039:9;1035:45;1031:54;1023:62;;;;543:548;;;;:::o;1096:180::-;1155:6;1208:2;1196:9;1187:7;1183:23;1179:32;1176:52;;;1224:1;1221;1214:12;1176:52;-1:-1:-1;1247:23:1;;1096:180;-1:-1:-1;1096:180:1:o;1512:196::-;1580:20;;-1:-1:-1;;;;;1629:54:1;;1619:65;;1609:93;;1698:1;1695;1688:12;1609:93;1512:196;;;:::o;1713:254::-;1781:6;1789;1842:2;1830:9;1821:7;1817:23;1813:32;1810:52;;;1858:1;1855;1848:12;1810:52;1881:29;1900:9;1881:29;:::i;:::-;1871:39;1957:2;1942:18;;;;1929:32;;-1:-1:-1;;;1713:254:1:o;2154:328::-;2231:6;2239;2247;2300:2;2288:9;2279:7;2275:23;2271:32;2268:52;;;2316:1;2313;2306:12;2268:52;2339:29;2358:9;2339:29;:::i;:::-;2329:39;;2387:38;2421:2;2410:9;2406:18;2387:38;:::i;:::-;2377:48;;2472:2;2461:9;2457:18;2444:32;2434:42;;2154:328;;;;;:::o;2487:186::-;2546:6;2599:2;2587:9;2578:7;2574:23;2570:32;2567:52;;;2615:1;2612;2605:12;2567:52;2638:29;2657:9;2638:29;:::i;2678:347::-;2743:6;2751;2804:2;2792:9;2783:7;2779:23;2775:32;2772:52;;;2820:1;2817;2810:12;2772:52;2843:29;2862:9;2843:29;:::i;:::-;2833:39;;2922:2;2911:9;2907:18;2894:32;2969:5;2962:13;2955:21;2948:5;2945:32;2935:60;;2991:1;2988;2981:12;2935:60;3014:5;3004:15;;;2678:347;;;;;:::o;3030:808::-;3127:6;3135;3143;3151;3159;3212:3;3200:9;3191:7;3187:23;3183:33;3180:53;;;3229:1;3226;3219:12;3180:53;3252:29;3271:9;3252:29;:::i;:::-;3242:39;;3300:38;3334:2;3323:9;3319:18;3300:38;:::i;:::-;3290:48;;3385:2;3374:9;3370:18;3357:32;3347:42;;3440:2;3429:9;3425:18;3412:32;3463:18;3504:2;3496:6;3493:14;3490:34;;;3520:1;3517;3510:12;3490:34;3558:6;3547:9;3543:22;3533:32;;3603:7;3596:4;3592:2;3588:13;3584:27;3574:55;;3625:1;3622;3615:12;3574:55;3665:2;3652:16;3691:2;3683:6;3680:14;3677:34;;;3707:1;3704;3697:12;3677:34;3752:7;3747:2;3738:6;3734:2;3730:15;3726:24;3723:37;3720:57;;;3773:1;3770;3763:12;3720:57;3030:808;;;;-1:-1:-1;3030:808:1;;-1:-1:-1;3804:2:1;3796:11;;3826:6;3030:808;-1:-1:-1;;;3030:808:1:o;3843:260::-;3911:6;3919;3972:2;3960:9;3951:7;3947:23;3943:32;3940:52;;;3988:1;3985;3978:12;3940:52;4011:29;4030:9;4011:29;:::i;:::-;4001:39;;4059:38;4093:2;4082:9;4078:18;4059:38;:::i;:::-;4049:48;;3843:260;;;;;:::o
Swarm Source
ipfs://170c4bee70cfee47c060c5ceb00cc9cf99cf9ce16a9243a27dd7c5d20aeed8d9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.