ETH Price: $2,389.22 (-3.73%)

Token

Lazy404 (LAZY)
 

Overview

Max Total Supply

172 LAZY

Holders

2

Total Transfers

-

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DN404Mirror

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-02-13
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/// @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                           */
    /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /// @dev `keccak256(bytes("Transfer(address,address,uint256)"))`.
    uint256 private constant _TRANSFER_EVENT_SIGNATURE =
        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;

    /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/
    /*                        CUSTOM ERRORS                       */
    /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/

    /// @dev Thrown when a call for an NFT function did not originate
    /// from the base DN404 contract.
    error Unauthorized();

    /// @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 rootERC20 address when a link has not
    /// been established.
    error NotLinked();

    /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/
    /*                          STORAGE                           */
    /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/

    /// @dev Struct contain the NFT mirror contract storage.
    struct DN404NFTStorage {
        address rootERC20;
        address deployer;
    }

    /// @dev Returns a storage pointer for DN404NFTStorage.
    function _getDN404NFTStorage() internal pure returns (DN404NFTStorage storage $) {
        /// @solidity memory-safe-assembly
        assembly {
            // keccak256(abi.encode(uint256(keccak256("dn404.nft")) - 1)) & ~bytes32(uint256(0xff))
            $.slot := 0xe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a86700
        }
    }

    /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/
    /*                        CONSTRUCTOR                         */
    /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/

    constructor() {
        // For non-proxies, we will store the deployer so that only the deployer can
        // link the root contract.
        _getDN404NFTStorage().deployer = msg.sender;
    }

    /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/
    /*                     ERC721 OPERATIONS                      */
    /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/

    /// @dev Returns the token collection name from the base DN404 contract.
    function name() public view virtual returns (string memory result) {
        address root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            result := mload(0x40)
            mstore(result, 0x06fdde03) // `name()`.
            if iszero(staticcall(gas(), root, add(result, 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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            result := mload(0x40)
            mstore(result, 0x95d89b41) // `symbol()`.
            if iszero(staticcall(gas(), root, add(result, 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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            result := mload(0x40)
            mstore(result, 0xc87b56dd) // `tokenURI()`.
            mstore(add(result, 0x20), id)
            if iszero(staticcall(gas(), root, add(result, 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 returns (uint256 result) {
        address root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, 0xe2c79281) // `totalNFTSupply()`.
            if iszero(
                and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, 0xf5b100ea) // `balanceOfNFT(address)`.
            mstore(0x20, shr(96, shl(96, owner)))
            if iszero(
                and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, 0x6352211e) // `ownerOf(uint256)`.
            mstore(0x20, id)
            if iszero(
                and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 0x1c, 0x24, 0x00, 0x20))
            ) {
                returndatacopy(mload(0x40), 0x00, returndatasize())
                revert(mload(0x40), returndatasize())
            }
            result := shr(96, shl(96, mload(0x00)))
        }
    }

    /// @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 root = rootERC20();
        address owner;
        /// @solidity memory-safe-assembly
        assembly {
            let m := mload(0x40)
            mstore(0x00, 0xd10b6e0c) // `approveNFT(address,uint256,address)`.
            mstore(0x20, shr(96, shl(96, spender)))
            mstore(0x40, id)
            mstore(0x60, caller())
            if iszero(
                and(
                    gt(returndatasize(), 0x1f),
                    call(gas(), root, 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.
            owner := shr(96, shl(96, mload(0x00)))
        }
        emit Approval(owner, 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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, 0x081812fc) // `getApproved(uint256)`.
            mstore(0x20, id)
            if iszero(
                and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 0x1c, 0x24, 0x00, 0x20))
            ) {
                returndatacopy(mload(0x40), 0x00, returndatasize())
                revert(mload(0x40), returndatasize())
            }
            result := shr(96, shl(96, mload(0x00)))
        }
    }

    /// @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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            let m := mload(0x40)
            mstore(0x00, 0x813500fc) // `setApprovalForAll(address,bool,address)`.
            mstore(0x20, shr(96, shl(96, operator)))
            mstore(0x40, iszero(iszero(approved)))
            mstore(0x60, caller())
            if iszero(
                and(
                    and(eq(mload(0x00), 1), gt(returndatasize(), 0x1f)),
                    call(gas(), root, 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 ApprovalForAll(msg.sender, operator, approved);
    }

    /// @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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            let m := mload(0x40)
            mstore(0x00, 0xe985e9c5) // `isApprovedForAll(address,address)`.
            mstore(0x20, shr(96, shl(96, owner)))
            mstore(0x40, shr(96, shl(96, operator)))
            if iszero(
                and(gt(returndatasize(), 0x1f), staticcall(gas(), root, 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 root = rootERC20();
        /// @solidity memory-safe-assembly
        assembly {
            let m := mload(0x40)
            mstore(m, 0xe5eb36c8) // `transferFromNFT(address,address,uint256,address)`.
            mstore(add(m, 0x20), shr(96, shl(96, from)))
            mstore(add(m, 0x40), shr(96, shl(96, to)))
            mstore(add(m, 0x60), id)
            mstore(add(m, 0x80), caller())
            if iszero(
                and(
                    and(eq(mload(0x00), 1), gt(returndatasize(), 0x1f)),
                    call(gas(), root, callvalue(), add(m, 0x1c), 0x84, 0x00, 0x20)
                )
            ) {
                returndatacopy(m, 0x00, returndatasize())
                revert(m, returndatasize())
            }
        }
        emit Transfer(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))
        }
    }

    /// @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)
            }
        }
    }

    /*«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-«-*/
    /*                     MIRROR OPERATIONS                      */
    /*-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»-»*/

    /// @dev Returns the address of the base DN404 contract.
    function rootERC20() public view returns (address root) {
        root = _getDN404NFTStorage().rootERC20;
        if (root == 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 != $.rootERC20) revert Unauthorized();
            /// @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 Unauthorized();
                }
            }
            if ($.rootERC20 != address(0)) revert AlreadyLinked();
            $.rootERC20 = 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 {}

    /// @dev Returns the calldata value at `offset`.
    function _calldataload(uint256 offset) private pure returns (uint256 value) {
        /// @solidity memory-safe-assembly
        assembly {
            value := calldataload(offset)
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyLinked","type":"error"},{"inputs":[],"name":"CannotLink","type":"error"},{"inputs":[],"name":"NotLinked","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","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":"approved","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":[{"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":[],"name":"rootERC20","outputs":[{"internalType":"address","name":"root","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"}]

608060405234801561000f575f80fd5b507fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a8670180546001600160a01b03191633179055610c1b8061004e5f395ff3fe6080604052600436106100eb575f3560e01c806342842e0e11610089578063a22cb46511610058578063a22cb465146103ea578063b88d4fde14610409578063c87b56dd14610428578063e985e9c514610447576100f2565b806342842e0e146103855780636352211e1461039857806370a08231146103b757806395d89b41146103d6576100f2565b8063095ea7b3116100c5578063095ea7b31461031157806318160ddd1461033057806323b872dd146103525780633d36e5e914610371576100f2565b806301ffc9a71461026857806306fdde03146102b9578063081812fc146102da576100f2565b366100f257005b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a867005f3560e01c63263c69d68190036101cd5781546001600160a01b0316331461014d576040516282b42960e81b815260040160405180910390fd5b602036103d5f3e6004356024018036103d5f3e602081033560051b81018036103d5f3e5b8082146101c25781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f38a4505050816020019150610171565b505060015f5260205ff35b80630f4599e5036102665760018201546001600160a01b0316156102225760018201546001600160a01b03166004356001600160a01b031614610222576040516282b42960e81b815260040160405180910390fd5b81546001600160a01b03161561024b57604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560015f908152602090f35b005b348015610273575f80fd5b506102a46102823660046109c3565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156102c4575f80fd5b506102cd610466565b6040516102b091906109f1565b3480156102e5575f80fd5b506102f96102f4366004610a3c565b6104bb565b6040516001600160a01b0390911681526020016102b0565b34801561031c575f80fd5b5061026661032b366004610a6e565b610503565b34801561033b575f80fd5b50610344610593565b6040519081526020016102b0565b34801561035d575f80fd5b5061026661036c366004610a96565b6105cc565b34801561037c575f80fd5b506102f9610671565b610266610393366004610a96565b6106bd565b3480156103a3575f80fd5b506102f96103b2366004610a3c565b6106ee565b3480156103c2575f80fd5b506103446103d1366004610acf565b610724565b3480156103e1575f80fd5b506102cd610769565b3480156103f5575f80fd5b50610266610404366004610ae8565b610799565b348015610414575f80fd5b50610266610423366004610b21565b61082f565b348015610433575f80fd5b506102cd610442366004610a3c565b610889565b348015610452575f80fd5b506102a4610461366004610bb4565b6108e6565b60605f610471610671565b905060405191506306fdde0382525f806004601c8501845afa610496573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e815160208301016040525090565b5f806104c5610671565b905063081812fc5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b50505f516001600160a01b0316919050565b5f61050c610671565b90505f60405163d10b6e0c5f528460601b60601c602052836040523360605260205f6064601c34875af1601f3d1116610547573d5f823e3d81fd5b60408190525f606081905280516001600160a01b03908116935085929087169184917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b5f8061059d610671565b905063e2c792815f5260205f6004601c845afa601f3d11166105c5573d5f6040513e3d604051fd5b50505f5190565b5f6105d5610671565b905060405163e5eb36c881528460601b60601c60208201528360601b60601c604082015282606082015233608082015260205f6084601c840134865af1601f3d1160015f51141616610629573d5f823e3d81fd5b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a86700546001600160a01b0316806106ba57604051632d9523d760e11b815260040160405180910390fd5b90565b6106c88383836105cc565b813b156106e9576106e983838360405180602001604052805f81525061093a565b505050565b5f806106f8610671565b9050636352211e5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b5f8061072e610671565b905063f5b100ea5f528260601b60601c60205260205f6024601c845afa601f3d1116610760573d5f6040513e3d604051fd5b50505f51919050565b60605f610774610671565b905060405191506395d89b4182525f806004601c8501845afa610496573d5f833e3d82fd5b5f6107a2610671565b905060405163813500fc5f528360601b60601c6020528215156040523360605260205f6064601c34865af1601f3d1160015f511416166107e4573d5f823e3d81fd5b60408181525f6060528315158252516001600160a01b0385169133917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a3505050565b61083a8585856105cc565b833b156108825761088285858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061093a92505050565b5050505050565b60605f610894610671565b9050604051915063c87b56dd82528260208301525f806024601c8501845afa6108bf573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e8151602083010160405250919050565b5f806108f0610671565b905060405163e985e9c55f528460601b60601c6020528360601b60601c60405260205f6044601c855afa601f3d111661092b573d5f823e3d81fd5b60405250505f51151592915050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610981578060c08401826020870160045afa505b60208360a48301601c86015f8a5af16109a2573d156109a2573d5f843e3d83fd5b508060e01b8251146109bb5763d1a57ed65f526004601cfd5b505050505050565b5f602082840312156109d3575f80fd5b81356001600160e01b0319811681146109ea575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015610a1c57858101830151858201604001528201610a00565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215610a4c575f80fd5b5035919050565b80356001600160a01b0381168114610a69575f80fd5b919050565b5f8060408385031215610a7f575f80fd5b610a8883610a53565b946020939093013593505050565b5f805f60608486031215610aa8575f80fd5b610ab184610a53565b9250610abf60208501610a53565b9150604084013590509250925092565b5f60208284031215610adf575f80fd5b6109ea82610a53565b5f8060408385031215610af9575f80fd5b610b0283610a53565b915060208301358015158114610b16575f80fd5b809150509250929050565b5f805f805f60808688031215610b35575f80fd5b610b3e86610a53565b9450610b4c60208701610a53565b935060408601359250606086013567ffffffffffffffff80821115610b6f575f80fd5b818801915088601f830112610b82575f80fd5b813581811115610b90575f80fd5b896020828501011115610ba1575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610bc5575f80fd5b610bce83610a53565b9150610bdc60208401610a53565b9050925092905056fea26469706673582212203e3fda93a849d7242b2f28cbfa39acca2f8b53bd0053942216c4001f7fd93e2764736f6c63430008140033

Deployed Bytecode

0x6080604052600436106100eb575f3560e01c806342842e0e11610089578063a22cb46511610058578063a22cb465146103ea578063b88d4fde14610409578063c87b56dd14610428578063e985e9c514610447576100f2565b806342842e0e146103855780636352211e1461039857806370a08231146103b757806395d89b41146103d6576100f2565b8063095ea7b3116100c5578063095ea7b31461031157806318160ddd1461033057806323b872dd146103525780633d36e5e914610371576100f2565b806301ffc9a71461026857806306fdde03146102b9578063081812fc146102da576100f2565b366100f257005b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a867005f3560e01c63263c69d68190036101cd5781546001600160a01b0316331461014d576040516282b42960e81b815260040160405180910390fd5b602036103d5f3e6004356024018036103d5f3e602081033560051b81018036103d5f3e5b8082146101c25781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f38a4505050816020019150610171565b505060015f5260205ff35b80630f4599e5036102665760018201546001600160a01b0316156102225760018201546001600160a01b03166004356001600160a01b031614610222576040516282b42960e81b815260040160405180910390fd5b81546001600160a01b03161561024b57604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560015f908152602090f35b005b348015610273575f80fd5b506102a46102823660046109c3565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156102c4575f80fd5b506102cd610466565b6040516102b091906109f1565b3480156102e5575f80fd5b506102f96102f4366004610a3c565b6104bb565b6040516001600160a01b0390911681526020016102b0565b34801561031c575f80fd5b5061026661032b366004610a6e565b610503565b34801561033b575f80fd5b50610344610593565b6040519081526020016102b0565b34801561035d575f80fd5b5061026661036c366004610a96565b6105cc565b34801561037c575f80fd5b506102f9610671565b610266610393366004610a96565b6106bd565b3480156103a3575f80fd5b506102f96103b2366004610a3c565b6106ee565b3480156103c2575f80fd5b506103446103d1366004610acf565b610724565b3480156103e1575f80fd5b506102cd610769565b3480156103f5575f80fd5b50610266610404366004610ae8565b610799565b348015610414575f80fd5b50610266610423366004610b21565b61082f565b348015610433575f80fd5b506102cd610442366004610a3c565b610889565b348015610452575f80fd5b506102a4610461366004610bb4565b6108e6565b60605f610471610671565b905060405191506306fdde0382525f806004601c8501845afa610496573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e815160208301016040525090565b5f806104c5610671565b905063081812fc5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b50505f516001600160a01b0316919050565b5f61050c610671565b90505f60405163d10b6e0c5f528460601b60601c602052836040523360605260205f6064601c34875af1601f3d1116610547573d5f823e3d81fd5b60408190525f606081905280516001600160a01b03908116935085929087169184917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b5f8061059d610671565b905063e2c792815f5260205f6004601c845afa601f3d11166105c5573d5f6040513e3d604051fd5b50505f5190565b5f6105d5610671565b905060405163e5eb36c881528460601b60601c60208201528360601b60601c604082015282606082015233608082015260205f6084601c840134865af1601f3d1160015f51141616610629573d5f823e3d81fd5b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b7fe8cb618a1de8ad2a6a7b358523c369cb09f40cc15da64205134c7e55c6a86700546001600160a01b0316806106ba57604051632d9523d760e11b815260040160405180910390fd5b90565b6106c88383836105cc565b813b156106e9576106e983838360405180602001604052805f81525061093a565b505050565b5f806106f8610671565b9050636352211e5f528260205260205f6024601c845afa601f3d11166104f1573d5f6040513e3d604051fd5b5f8061072e610671565b905063f5b100ea5f528260601b60601c60205260205f6024601c845afa601f3d1116610760573d5f6040513e3d604051fd5b50505f51919050565b60605f610774610671565b905060405191506395d89b4182525f806004601c8501845afa610496573d5f833e3d82fd5b5f6107a2610671565b905060405163813500fc5f528360601b60601c6020528215156040523360605260205f6064601c34865af1601f3d1160015f511416166107e4573d5f823e3d81fd5b60408181525f6060528315158252516001600160a01b0385169133917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a3505050565b61083a8585856105cc565b833b156108825761088285858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061093a92505050565b5050505050565b60605f610894610671565b9050604051915063c87b56dd82528260208301525f806024601c8501845afa6108bf573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e8151602083010160405250919050565b5f806108f0610671565b905060405163e985e9c55f528460601b60601c6020528360601b60601c60405260205f6044601c855afa601f3d111661092b573d5f823e3d81fd5b60405250505f51151592915050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610981578060c08401826020870160045afa505b60208360a48301601c86015f8a5af16109a2573d156109a2573d5f843e3d83fd5b508060e01b8251146109bb5763d1a57ed65f526004601cfd5b505050505050565b5f602082840312156109d3575f80fd5b81356001600160e01b0319811681146109ea575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015610a1c57858101830151858201604001528201610a00565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215610a4c575f80fd5b5035919050565b80356001600160a01b0381168114610a69575f80fd5b919050565b5f8060408385031215610a7f575f80fd5b610a8883610a53565b946020939093013593505050565b5f805f60608486031215610aa8575f80fd5b610ab184610a53565b9250610abf60208501610a53565b9150604084013590509250925092565b5f60208284031215610adf575f80fd5b6109ea82610a53565b5f8060408385031215610af9575f80fd5b610b0283610a53565b915060208301358015158114610b16575f80fd5b809150509250929050565b5f805f805f60808688031215610b35575f80fd5b610b3e86610a53565b9450610b4c60208701610a53565b935060408601359250606086013567ffffffffffffffff80821115610b6f575f80fd5b818801915088601f830112610b82575f80fd5b813581811115610b90575f80fd5b896020828501011115610ba1575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610bc5575f80fd5b610bce83610a53565b9150610bdc60208401610a53565b9050925092905056fea26469706673582212203e3fda93a849d7242b2f28cbfa39acca2f8b53bd0053942216c4001f7fd93e2764736f6c63430008140033

Deployed Bytecode Sourcemap

506:20389:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3101:66;18381:25;20854:20;18487:3;18464:26;18559:10;18545:24;;;18541:1332;;18604:11;;-1:-1:-1;;;;;18604:11:0;18590:10;:25;18586:52;;18624:14;;-1:-1:-1;;;18624:14:0;;;;;;;;;;;18586:52;18877:4;18861:14;18858:24;18840:16;18834:4;18819:64;18933:4;18920:18;18914:4;18910:29;19038:1;19022:14;19019:21;19001:16;18995:4;18980:61;19104:4;19101:1;19097:12;19084:26;19081:1;19077:34;19074:1;19070:42;19188:3;19172:14;19169:23;19151:16;19145:4;19130:63;19213:562;19233:3;19230:1;19227:10;19213:562;;19306:1;19293:15;19376:1;19372:2;19368:10;19432:1;19429;19425:9;19730:1;19725:3;19721:11;19716:3;19712:21;19682:1;19675:9;19672:1;19668:17;19639:1;19636;19632:9;19580:25;19549:4;19512:10;19481:275;;;;19256:1;19250:4;19246:12;19241:17;;19213:562;;;19217:2;;19806:4;19800;19793:18;19842:4;19836;19829:18;18541:1332;19930:10;19944;19930:24;19926:507;;19975:10;;;;-1:-1:-1;;;;;19975:10:0;:24;19971:185;;20065:10;;;;-1:-1:-1;;;;;20065:10:0;20054:4;20854:20;-1:-1:-1;;;;;20024:51:0;;20020:121;;20107:14;;-1:-1:-1;;;20107:14:0;;;;;;;;;;;20020:121;20174:11;;-1:-1:-1;;;;;20174:11:0;:25;20170:53;;20208:15;;-1:-1:-1;;;20208:15:0;;;;;;;;;;;20170:53;20238:24;;-1:-1:-1;;;;;;20238:24:0;20252:10;20238:24;;;;:11;20353:18;;;20402:4;;20389:18;19926:507;18370:2082;15502:387;;;;;;;;;;-1:-1:-1;15502:387:0;;;;;:::i;:::-;15820:10;15683:3;15679:21;;;;15814:17;;;15839:10;15833:17;;15811:40;15859:10;15853:17;;;15808:63;;15502:387;;;;470:14:1;;463:22;445:41;;433:2;418:18;15502:387:0;;;;;;;;4021:743;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10211:624::-;;;;;;;;;;-1:-1:-1;10211:624:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1399:32:1;;;1381:51;;1369:2;1354:18;10211:624:0;1235:203:1;9060:983:0;;;;;;;;;;-1:-1:-1;9060:983:0;;;;;:::i;:::-;;:::i;6597:554::-;;;;;;;;;;;;;:::i;:::-;;;2026:25:1;;;2014:2;1999:18;6597:554:0;1880:177:1;13341:912:0;;;;;;;;;;-1:-1:-1;13341:912:0;;;;;:::i;:::-;;:::i;18081:166::-;;;;;;;;;;;;;:::i;14327:203::-;;;;;;:::i;:::-;;:::i;8113:616::-;;;;;;;;;;-1:-1:-1;8113:616:0;;;;;:::i;:::-;;:::i;7334:629::-;;;;;;;;;;-1:-1:-1;7334:629:0;;;;;:::i;:::-;;:::i;4852:747::-;;;;;;;;;;;;;:::i;11007:991::-;;;;;;;;;;-1:-1:-1;11007:991:0;;;;;:::i;:::-;;:::i;15047:241::-;;;;;;;;;;-1:-1:-1;15047:241:0;;;;;:::i;:::-;;:::i;5712:804::-;;;;;;;;;;-1:-1:-1;5712:804:0;;;;;:::i;:::-;;:::i;12121:853::-;;;;;;;;;;-1:-1:-1;12121:853:0;;;;;:::i;:::-;;:::i;4021:743::-;4066:20;4099:12;4114:11;:9;:11::i;:::-;4099:26;;4220:4;4214:11;4204:21;;4254:10;4246:6;4239:26;4357:4;4351;4345;4338;4330:6;4326:17;4320:4;4313:5;4302:60;4292:202;;4412:16;4406:4;4398:6;4383:46;4462:16;4454:6;4447:32;4292:202;4535:4;4529;4523;4508:32;4590:4;4583;4577:11;4569:6;4554:41;4673:6;4667:13;4660:4;4653;4647:11;4643:22;4636:4;4628:6;4624:17;4609:72;4737:6;4731:13;4724:4;4716:6;4712:17;4708:37;4702:4;4695:51;4189:568;4021:743;:::o;10211:624::-;10273:14;10300:12;10315:11;:9;:11::i;:::-;10300:26;;10418:10;10412:4;10405:24;10483:2;10477:4;10470:16;10602:4;10596;10590;10584;10578;10571:5;10560:47;10553:4;10535:16;10532:26;10528:80;10500:264;;10677:16;10671:4;10664;10658:11;10643:51;10732:16;10725:4;10719:11;10712:37;10500:264;-1:-1:-1;;10810:4:0;10804:11;-1:-1:-1;;;;;10788:29:0;;10211:624;-1:-1:-1;10211:624:0:o;9060:983::-;9132:12;9147:11;:9;:11::i;:::-;9132:26;;9169:13;9276:4;9270:11;9308:10;9302:4;9295:24;9404:7;9400:2;9396:16;9392:2;9388:25;9382:4;9375:39;9441:2;9435:4;9428:16;9471:8;9465:4;9458:22;9646:4;9640;9634;9628;9615:11;9609:4;9602:5;9597:54;9569:4;9551:16;9548:26;9522:148;9494:312;;9729:16;9723:4;9720:1;9705:41;9774:16;9771:1;9764:27;9494:312;9827:4;9820:15;;;9898:1;9892:4;9885:15;;;9968:11;;-1:-1:-1;;;;;9952:29:0;;;;-1:-1:-1;10032:2:0;;10007:28;;;;9952:29;;10007:28;;9898:1;10007:28;9121:922;;9060:983;;:::o;6597:554::-;6641:14;6668:12;6683:11;:9;:11::i;:::-;6668:26;;6786:10;6780:4;6773:24;6936:4;6930;6924;6918;6912;6905:5;6894:47;6887:4;6869:16;6866:26;6862:80;6834:264;;7011:16;7005:4;6998;6992:11;6977:51;7066:16;7059:4;7053:11;7046:37;6834:264;-1:-1:-1;;7128:4:0;7122:11;;6597:554::o;13341:912::-;13427:12;13442:11;:9;:11::i;:::-;13427:26;;13547:4;13541:11;13576:10;13573:1;13566:21;13693:4;13689:2;13685:13;13681:2;13677:22;13670:4;13667:1;13663:12;13656:44;13751:2;13747;13743:11;13739:2;13735:20;13728:4;13725:1;13721:12;13714:42;13791:2;13784:4;13781:1;13777:12;13770:24;13829:8;13822:4;13819:1;13815:12;13808:30;14037:4;14031;14025;14018;14015:1;14011:12;13998:11;13992:4;13985:5;13980:62;13951:4;13933:16;13930:26;13926:1;13919:4;13913:11;13910:18;13906:51;13880:181;13852:345;;14120:16;14114:4;14111:1;14096:41;14165:16;14162:1;14155:27;13852:345;;14242:2;14238;-1:-1:-1;;;;;14223:22:0;14232:4;-1:-1:-1;;;;;14223:22:0;;;;;;;;;;;13416:837;13341:912;;;:::o;18081:166::-;3101:66;18155:31;-1:-1:-1;;;;;18155:31:0;;18197:42;;18228:11;;-1:-1:-1;;;18228:11:0;;;;;;;;;;;18197:42;18081:166;:::o;14327:203::-;14425:26;14438:4;14444:2;14448;14425:12;:26::i;:::-;16112:14;;14464:58;;;14482:40;14505:4;14511:2;14515;14482:40;;;;;;;;;;;;:22;:40::i;:::-;14327:203;;;:::o;8113:616::-;8171:14;8198:12;8213:11;:9;:11::i;:::-;8198:26;;8316:10;8310:4;8303:24;8377:2;8371:4;8364:16;8496:4;8490;8484;8478;8472;8465:5;8454:47;8447:4;8429:16;8426:26;8422:80;8394:264;;8571:16;8565:4;8558;8552:11;8537:51;8626:16;8619:4;8613:11;8606:37;7334:629;7397:14;7424:12;7439:11;:9;:11::i;:::-;7424:26;;7542:10;7536:4;7529:24;7624:5;7620:2;7616:14;7612:2;7608:23;7602:4;7595:37;7748:4;7742;7736;7730;7724;7717:5;7706:47;7699:4;7681:16;7678:26;7674:80;7646:264;;7823:16;7817:4;7810;7804:11;7789:51;7878:16;7871:4;7865:11;7858:37;7646:264;-1:-1:-1;;7940:4:0;7934:11;;7334:629;-1:-1:-1;7334:629:0:o;4852:747::-;4899:20;4932:12;4947:11;:9;:11::i;:::-;4932:26;;5053:4;5047:11;5037:21;;5087:10;5079:6;5072:26;5192:4;5186;5180;5173;5165:6;5161:17;5155:4;5148:5;5137:60;5127:202;;5247:16;5241:4;5233:6;5218:46;5297:16;5289:6;5282:32;11007:991;11093:12;11108:11;:9;:11::i;:::-;11093:26;;11213:4;11207:11;11245:10;11239:4;11232:24;11345:8;11341:2;11337:17;11333:2;11329:26;11323:4;11316:40;11397:8;11390:16;11383:24;11377:4;11370:38;11435:8;11429:4;11422:22;11635:4;11629;11623;11617;11604:11;11598:4;11591:5;11586:54;11557:4;11539:16;11536:26;11532:1;11525:4;11519:11;11516:18;11512:51;11486:173;11458:337;;11718:16;11712:4;11709:1;11694:41;11763:16;11760:1;11753:27;11458:337;11816:4;11809:15;;;11887:1;11881:4;11874:15;470:14:1;;463:22;445:41;;11944:46:0;-1:-1:-1;;;;;11944:46:0;;;11959:10;;11944:46;;;;;433:2:1;11944:46:0;;;11082:916;11007:991;;:::o;15047:241::-;15181:26;15194:4;15200:2;15204;15181:12;:26::i;:::-;16112:14;;15220:60;;;15238:42;15261:4;15267:2;15271;15275:4;;15238:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15238:22:0;;-1:-1:-1;;;15238:42:0:i;:::-;15047:241;;;;;:::o;5712:804::-;5771:20;5804:12;5819:11;:9;:11::i;:::-;5804:26;;5925:4;5919:11;5909:21;;5959:10;5951:6;5944:26;6027:2;6020:4;6012:6;6008:17;6001:29;6109:4;6103;6097;6090;6082:6;6078:17;6072:4;6065:5;6054:60;6044:202;;6164:16;6158:4;6150:6;6135:46;6214:16;6206:6;6199:32;6044:202;6287:4;6281;6275;6260:32;6342:4;6335;6329:11;6321:6;6306:41;6425:6;6419:13;6412:4;6405;6399:11;6395:22;6388:4;6380:6;6376:17;6361:72;6489:6;6483:13;6476:4;6468:6;6464:17;6460:37;6454:4;6447:51;5894:615;5712:804;;;:::o;12121:853::-;12245:11;12274:12;12289:11;:9;:11::i;:::-;12274:26;;12394:4;12388:11;12426:10;12420:4;12413:24;12520:5;12516:2;12512:14;12508:2;12504:23;12498:4;12491:37;12571:8;12567:2;12563:17;12559:2;12555:26;12549:4;12542:40;12698:4;12692;12686;12680;12674;12667:5;12656:47;12649:4;12631:16;12628:26;12624:80;12596:244;;12763:16;12757:4;12754:1;12739:41;12808:16;12805:1;12798:27;12596:244;12861:4;12854:15;-1:-1:-1;;12949:4:0;12943:11;12936:19;12929:27;;12121:853;-1:-1:-1;;12121:853:0:o;16339:1400::-;16582:4;16576:11;16633:10;16667:24;16664:1;16657:35;16727:8;16720:4;16717:1;16713:12;16706:30;16836:4;16832:2;16828:13;16824:2;16820:22;16813:4;16810:1;16806:12;16799:44;16878:2;16871:4;16868:1;16864:12;16857:24;16916:4;16909;16906:1;16902:12;16895:26;16950:4;16944:11;16990:1;16983:4;16980:1;16976:12;16969:23;17009:1;17006:71;;;17072:1;17065:4;17062:1;17058:12;17055:1;17048:4;17042;17038:15;17035:1;17028:5;17017:57;17013:62;17006:71;17195:4;17192:1;17185:4;17182:1;17178:12;17171:4;17168:1;17164:12;17161:1;17157:2;17150:5;17145:55;17135:319;;17224:16;17221:218;;;17354:16;17348:4;17345:1;17330:41;17403:16;17400:1;17393:27;17221:218;17135:319;17552:24;17547:3;17543:34;17539:1;17533:8;17530:48;17520:201;;17612:10;17606:4;17599:24;17701:4;17695;17688:18;17520:201;;;16339:1400;;;;:::o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:1:o;497:548::-;609:4;638:2;667;656:9;649:21;699:6;693:13;742:6;737:2;726:9;722:18;715:34;767:1;777:140;791:6;788:1;785:13;777:140;;;886:14;;;882:23;;876:30;852:17;;;871:2;848:26;841:66;806:10;;777:140;;;781:3;966:1;961:2;952:6;941:9;937:22;933:31;926:42;1036:2;1029;1025:7;1020:2;1012:6;1008:15;1004:29;993:9;989:45;985:54;977:62;;;;497:548;;;;:::o;1050:180::-;1109:6;1162:2;1150:9;1141:7;1137:23;1133:32;1130:52;;;1178:1;1175;1168:12;1130:52;-1:-1:-1;1201:23:1;;1050:180;-1:-1:-1;1050:180:1:o;1443:173::-;1511:20;;-1:-1:-1;;;;;1560:31:1;;1550:42;;1540:70;;1606:1;1603;1596:12;1540:70;1443:173;;;:::o;1621:254::-;1689:6;1697;1750:2;1738:9;1729:7;1725:23;1721:32;1718:52;;;1766:1;1763;1756:12;1718:52;1789:29;1808:9;1789:29;:::i;:::-;1779:39;1865:2;1850:18;;;;1837:32;;-1:-1:-1;;;1621:254:1:o;2062:328::-;2139:6;2147;2155;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;2247:29;2266:9;2247:29;:::i;:::-;2237:39;;2295:38;2329:2;2318:9;2314:18;2295:38;:::i;:::-;2285:48;;2380:2;2369:9;2365:18;2352:32;2342:42;;2062:328;;;;;:::o;2395:186::-;2454:6;2507:2;2495:9;2486:7;2482:23;2478:32;2475:52;;;2523:1;2520;2513:12;2475:52;2546:29;2565:9;2546:29;:::i;2586:347::-;2651:6;2659;2712:2;2700:9;2691:7;2687:23;2683:32;2680:52;;;2728:1;2725;2718:12;2680:52;2751:29;2770:9;2751:29;:::i;:::-;2741:39;;2830:2;2819:9;2815:18;2802:32;2877:5;2870:13;2863:21;2856:5;2853:32;2843:60;;2899:1;2896;2889:12;2843:60;2922:5;2912:15;;;2586:347;;;;;:::o;2938:808::-;3035:6;3043;3051;3059;3067;3120:3;3108:9;3099:7;3095:23;3091:33;3088:53;;;3137:1;3134;3127:12;3088:53;3160:29;3179:9;3160:29;:::i;:::-;3150:39;;3208:38;3242:2;3231:9;3227:18;3208:38;:::i;:::-;3198:48;;3293:2;3282:9;3278:18;3265:32;3255:42;;3348:2;3337:9;3333:18;3320:32;3371:18;3412:2;3404:6;3401:14;3398:34;;;3428:1;3425;3418:12;3398:34;3466:6;3455:9;3451:22;3441:32;;3511:7;3504:4;3500:2;3496:13;3492:27;3482:55;;3533:1;3530;3523:12;3482:55;3573:2;3560:16;3599:2;3591:6;3588:14;3585:34;;;3615:1;3612;3605:12;3585:34;3660:7;3655:2;3646:6;3642:2;3638:15;3634:24;3631:37;3628:57;;;3681:1;3678;3671:12;3628:57;2938:808;;;;-1:-1:-1;2938:808:1;;-1:-1:-1;3712:2:1;3704:11;;3734:6;2938:808;-1:-1:-1;;;2938:808:1:o;3751:260::-;3819:6;3827;3880:2;3868:9;3859:7;3855:23;3851:32;3848:52;;;3896:1;3893;3886:12;3848:52;3919:29;3938:9;3919:29;:::i;:::-;3909:39;;3967:38;4001:2;3990:9;3986:18;3967:38;:::i;:::-;3957:48;;3751:260;;;;;:::o

Swarm Source

ipfs://3e3fda93a849d7242b2f28cbfa39acca2f8b53bd0053942216c4001f7fd93e27
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.