ETH Price: $3,258.17 (-0.78%)
Gas: 1 Gwei

Token

 

Overview

Max Total Supply

100

Holders

89

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
jakubx.eth
0xb357e7575a780980e4cee86654a6acd0cc13b77f
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:
MetaversityGenesis

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-06
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event OwnerUpdated(address indexed user, address indexed newOwner);

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnerUpdated(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function setOwner(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnerUpdated(msg.sender, newOwner);
    }
}

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

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

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public virtual {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

/// @notice Gas optimized reentrancy protection for smart contracts.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ReentrancyGuard.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol)
abstract contract ReentrancyGuard {
    uint256 private locked = 1;

    modifier nonReentrant() virtual {
        require(locked == 1, "REENTRANCY");

        locked = 2;

        _;

        locked = 1;
    }
}

// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)

// OpenZeppelin Contracts (last updated v4.7.0) (utils/math/Math.sol)

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    enum Rounding {
        Down, // Toward negative infinity
        Up, // Toward infinity
        Zero // Toward zero
    }

    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow.
        return (a & b) + (a ^ b) / 2;
    }

    /**
     * @dev Returns the ceiling of the division of two numbers.
     *
     * This differs from standard division with `/` in that it rounds up instead
     * of rounding down.
     */
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    /**
     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
     * with further edits by Uniswap Labs also under MIT license.
     */
    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        unchecked {
            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
            // variables such that product = prod1 * 2^256 + prod0.
            uint256 prod0; // Least significant 256 bits of the product
            uint256 prod1; // Most significant 256 bits of the product
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            // Handle non-overflow cases, 256 by 256 division.
            if (prod1 == 0) {
                return prod0 / denominator;
            }

            // Make sure the result is less than 2^256. Also prevents denominator == 0.
            require(denominator > prod1);

            ///////////////////////////////////////////////
            // 512 by 256 division.
            ///////////////////////////////////////////////

            // Make division exact by subtracting the remainder from [prod1 prod0].
            uint256 remainder;
            assembly {
                // Compute remainder using mulmod.
                remainder := mulmod(x, y, denominator)

                // Subtract 256 bit number from 512 bit number.
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
            // See https://cs.stackexchange.com/q/138556/92363.

            // Does not overflow because the denominator cannot be zero at this stage in the function.
            uint256 twos = denominator & (~denominator + 1);
            assembly {
                // Divide denominator by twos.
                denominator := div(denominator, twos)

                // Divide [prod1 prod0] by twos.
                prod0 := div(prod0, twos)

                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
                twos := add(div(sub(0, twos), twos), 1)
            }

            // Shift in bits from prod1 into prod0.
            prod0 |= prod1 * twos;

            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
            // four bits. That is, denominator * inv = 1 mod 2^4.
            uint256 inverse = (3 * denominator) ^ 2;

            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
            // in modular arithmetic, doubling the correct bits in each step.
            inverse *= 2 - denominator * inverse; // inverse mod 2^8
            inverse *= 2 - denominator * inverse; // inverse mod 2^16
            inverse *= 2 - denominator * inverse; // inverse mod 2^32
            inverse *= 2 - denominator * inverse; // inverse mod 2^64
            inverse *= 2 - denominator * inverse; // inverse mod 2^128
            inverse *= 2 - denominator * inverse; // inverse mod 2^256

            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
            // is no longer required.
            result = prod0 * inverse;
            return result;
        }
    }

    /**
     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
     */
    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator,
        Rounding rounding
    ) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    /**
     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.
     *
     * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
     */
    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
        //
        // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
        // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
        //
        // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
        // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
        // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
        //
        // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
        uint256 result = 1 << (log2(a) >> 1);

        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
        // into the expected uint128 result.
        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

    /**
     * @notice Calculates sqrt(a), following the selected rounding direction.
     */
    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 2, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 10, rounded down, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10**64) {
                value /= 10**64;
                result += 64;
            }
            if (value >= 10**32) {
                value /= 10**32;
                result += 32;
            }
            if (value >= 10**16) {
                value /= 10**16;
                result += 16;
            }
            if (value >= 10**8) {
                value /= 10**8;
                result += 8;
            }
            if (value >= 10**4) {
                value /= 10**4;
                result += 4;
            }
            if (value >= 10**2) {
                value /= 10**2;
                result += 2;
            }
            if (value >= 10**1) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);
        }
    }

    /**
     * @dev Return the log in base 256, rounded down, of a positive value.
     * Returns 0 if given 0.
     *
     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
     */
    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    /**
     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.
     * Returns 0 if given 0.
     */
    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);
        }
    }
}

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
            /// @solidity memory-safe-assembly
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                /// @solidity memory-safe-assembly
                assembly {
                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        unchecked {
            return toHexString(value, Math.log256(value) + 1);
        }
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    /**
     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
     */
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

contract MetaversityGenesis is ERC1155, Owned, ReentrancyGuard {
    /// @dev of the form ipfs://gateaway/
    string public tokenURI;
    /// @dev reserve supply for airdrop
    uint256 public constant RESERVE_SUPPLY = 12;
    /// @dev airdrop status
    bool public end;

    constructor(string memory _tokenURI) Owned(msg.sender) {
        tokenURI = _tokenURI;
    }

    function airdrop(address[] memory holders) public onlyOwner {
        require(!end, "Genesis Compelte!");
        for (uint256 x = 1; x <= RESERVE_SUPPLY; x++) {
            _mint(msg.sender, x, 1, "");
        }
        uint256 id = RESERVE_SUPPLY + 1;
        for (uint256 x = 0; x < holders.length; x++) {
            _mint(holders[x], id, 1, "");
            id++;
        }
        end = true;
    }

    /// @notice returns uri by id
    /// @return string with the format ipfs://<uri>/id.json
    function uri(uint256 id) public view override returns (string memory) {
        return string.concat(tokenURI, "/", Strings.toString(id), ".json");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"RESERVE_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"end","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405260016003553480156200001657600080fd5b5060405162001af538038062001af58339810160408190526200003991620000a8565b600280546001600160a01b0319163390811790915560405181906000907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a35060046200008a828262000213565b5050620002df565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620000bc57600080fd5b82516001600160401b0380821115620000d457600080fd5b818501915085601f830112620000e957600080fd5b815181811115620000fe57620000fe62000092565b604051601f8201601f19908116603f0116810190838211818310171562000129576200012962000092565b8160405282815288868487010111156200014257600080fd5b600093505b8284101562000166578484018601518185018701529285019262000147565b82841115620001785760008684830101525b98975050505050505050565b600181811c908216806200019957607f821691505b602082108103620001ba57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020e57600081815260208120601f850160051c81016020861015620001e95750805b601f850160051c820191505b818110156200020a57828155600101620001f5565b5050505b505050565b81516001600160401b038111156200022f576200022f62000092565b620002478162000240845462000184565b84620001c0565b602080601f8311600181146200027f5760008415620002665750858301515b600019600386901b1c1916600185901b1785556200020a565b600085815260208120601f198616915b82811015620002b0578886015182559484019460019091019084016200028f565b5085821015620002cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61180680620002ef6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c8063729ad39e1161008c578063aa66797b11610066578063aa66797b1461020d578063e985e9c514610215578063efbe1c1c14610243578063f242432a1461025057600080fd5b8063729ad39e146101bc5780638da5cb5b146101cf578063a22cb465146101fa57600080fd5b806313af4035116100c857806313af40351461016c5780632eb2c2d6146101815780633c130d90146101945780634e1273f41461019c57600080fd5b8062fdd58e146100ee57806301ffc9a7146101295780630e89341c1461014c575b600080fd5b6101166100fc366004610fad565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61013c610137366004610ff0565b610263565b6040519015158152602001610120565b61015f61015a366004611014565b610300565b6040516101209190611085565b61017f61017a366004611098565b610334565b005b61017f61018f366004611141565b6103e6565b61015f6106e2565b6101af6101aa3660046111fc565b610770565b6040516101209190611268565b61017f6101ca3660046112c2565b6108b3565b6002546101e2906001600160a01b031681565b6040516001600160a01b039091168152602001610120565b61017f610208366004611387565b610a0c565b610116600c81565b61013c6102233660046113c3565b600160209081526000928352604080842090915290825290205460ff1681565b60055461013c9060ff1681565b61017f61025e3660046113f6565b610a78565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806102c657507fd9b67a26000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806102fa57507f0e89341c000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600461030d83610ca4565b60405160200161031e9291906114c4565b6040516020818303038152906040529050919050565b6002546001600160a01b031633146103825760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b8483146104355760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610379565b336001600160a01b038916148061046f57506001600160a01b038816600090815260016020908152604080832033845290915290205460ff165b6104bb5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610379565b60008060005b87811015610576578888828181106104db576104db6115c0565b9050602002013592508686828181106104f6576104f66115c0565b6001600160a01b038e16600090815260208181526040808320898452825282208054939091029490940135955085939250906105339084906115ec565b90915550506001600160a01b038a1660009081526020818152604080832086845290915281208054849290610569908490611603565b90915550506001016104c1565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516105ca949392919061166a565b60405180910390a46001600160a01b0389163b1561068a576040517fbc197c8100000000000000000000000000000000000000000000000000000000808252906001600160a01b038b169063bc197c81906106379033908f908e908e908e908e908e908e906004016116c5565b6020604051808303816000875af1158015610656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a9190611729565b6001600160e01b03191614610697565b6001600160a01b03891615155b6106d65760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610379565b50505050505050505050565b600480546106ef9061146e565b80601f016020809104026020016040519081016040528092919081815260200182805461071b9061146e565b80156107685780601f1061073d57610100808354040283529160200191610768565b820191906000526020600020905b81548152906001019060200180831161074b57829003601f168201915b505050505081565b60608382146107c15760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610379565b8367ffffffffffffffff8111156107da576107da6112ac565b604051908082528060200260200182016040528015610803578160200160208202803683370190505b50905060005b848110156108aa57600080878784818110610826576108266115c0565b905060200201602081019061083b9190611098565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085858481811061086f5761086f6115c0565b90506020020135815260200190815260200160002054828281518110610897576108976115c0565b6020908102919091010152600101610809565b50949350505050565b6002546001600160a01b031633146108fc5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610379565b60055460ff161561094f5760405162461bcd60e51b815260206004820152601160248201527f47656e6573697320436f6d70656c7465210000000000000000000000000000006044820152606401610379565b60015b600c8111610988576109763382600160405180602001604052806000815250610d44565b8061098081611746565b915050610952565b506000610997600c6001611603565b905060005b82518110156109fa576109da8382815181106109ba576109ba6115c0565b602002602001015183600160405180602001604052806000815250610d44565b816109e481611746565b92505080806109f290611746565b91505061099c565b50506005805460ff1916600117905550565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336001600160a01b0387161480610ab257506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b610afe5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610379565b6001600160a01b03861660009081526020818152604080832087845290915281208054859290610b2f9084906115ec565b90915550506001600160a01b03851660009081526020818152604080832087845290915281208054859290610b65908490611603565b909155505060408051858152602081018590526001600160a01b03808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b15610c505760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e6190610bfd9033908b908a908a908a908a9060040161175f565b6020604051808303816000875af1158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190611729565b6001600160e01b03191614610c5d565b6001600160a01b03851615155b610c9c5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610379565b505050505050565b60606000610cb183610eaf565b600101905060008167ffffffffffffffff811115610cd157610cd16112ac565b6040519080825280601f01601f191660200182016040528015610cfb576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610d0557509392505050565b6001600160a01b03841660009081526020818152604080832086845290915281208054849290610d75908490611603565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610e5d5760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610e0a903390600090899089908990600401611798565b6020604051808303816000875af1158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d9190611729565b6001600160e01b03191614610e6a565b6001600160a01b03841615155b610ea95760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610379565b50505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610ef8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610f24576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610f4257662386f26fc10000830492506010015b6305f5e1008310610f5a576305f5e100830492506008015b6127108310610f6e57612710830492506004015b60648310610f80576064830492506002015b600a83106102fa5760010192915050565b80356001600160a01b0381168114610fa857600080fd5b919050565b60008060408385031215610fc057600080fd5b610fc983610f91565b946020939093013593505050565b6001600160e01b031981168114610fed57600080fd5b50565b60006020828403121561100257600080fd5b813561100d81610fd7565b9392505050565b60006020828403121561102657600080fd5b5035919050565b60005b83811015611048578181015183820152602001611030565b83811115610ea95750506000910152565b6000815180845261107181602086016020860161102d565b601f01601f19169290920160200192915050565b60208152600061100d6020830184611059565b6000602082840312156110aa57600080fd5b61100d82610f91565b60008083601f8401126110c557600080fd5b50813567ffffffffffffffff8111156110dd57600080fd5b6020830191508360208260051b85010111156110f857600080fd5b9250929050565b60008083601f84011261111157600080fd5b50813567ffffffffffffffff81111561112957600080fd5b6020830191508360208285010111156110f857600080fd5b60008060008060008060008060a0898b03121561115d57600080fd5b61116689610f91565b975061117460208a01610f91565b9650604089013567ffffffffffffffff8082111561119157600080fd5b61119d8c838d016110b3565b909850965060608b01359150808211156111b657600080fd5b6111c28c838d016110b3565b909650945060808b01359150808211156111db57600080fd5b506111e88b828c016110ff565b999c989b5096995094979396929594505050565b6000806000806040858703121561121257600080fd5b843567ffffffffffffffff8082111561122a57600080fd5b611236888389016110b3565b9096509450602087013591508082111561124f57600080fd5b5061125c878288016110b3565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156112a057835183529284019291840191600101611284565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156112d557600080fd5b823567ffffffffffffffff808211156112ed57600080fd5b818501915085601f83011261130157600080fd5b813581811115611313576113136112ac565b8060051b604051601f19603f83011681018181108582111715611338576113386112ac565b60405291825284820192508381018501918883111561135657600080fd5b938501935b8285101561137b5761136c85610f91565b8452938501939285019261135b565b98975050505050505050565b6000806040838503121561139a57600080fd5b6113a383610f91565b9150602083013580151581146113b857600080fd5b809150509250929050565b600080604083850312156113d657600080fd5b6113df83610f91565b91506113ed60208401610f91565b90509250929050565b60008060008060008060a0878903121561140f57600080fd5b61141887610f91565b955061142660208801610f91565b94506040870135935060608701359250608087013567ffffffffffffffff81111561145057600080fd5b61145c89828a016110ff565b979a9699509497509295939492505050565b600181811c9082168061148257607f821691505b6020821081036114a257634e487b7160e01b600052602260045260246000fd5b50919050565b600081516114ba81856020860161102d565b9290920192915050565b600080845481600182811c9150808316806114e057607f831692505b602080841082036114ff57634e487b7160e01b86526022600452602486fd5b818015611513576001811461152857611555565b60ff1986168952841515850289019650611555565b60008b81526020902060005b8681101561154d5781548b820152908501908301611534565b505084890196505b50507f2f00000000000000000000000000000000000000000000000000000000000000855250611587818501886114a8565b93505050506115b5817f2e6a736f6e0000000000000000000000000000000000000000000000000000009052565b600501949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156115fe576115fe6115d6565b500390565b60008219821115611616576116166115d6565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561164d57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60408152600061167e60408301868861161b565b828103602084015261169181858761161b565b979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808b168352808a1660208401525060a060408301526116f260a08301888a61161b565b828103606084015261170581878961161b565b9050828103608084015261171a81858761169c565b9b9a5050505050505050505050565b60006020828403121561173b57600080fd5b815161100d81610fd7565b600060018201611758576117586115d6565b5060010190565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261137b60a08301848661169c565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261169160a083018461105956fea26469706673582212207b1e4f3d5da867bb2b87ec6119f80a1690ec91206155bedfaaa680dc3e8d3da864736f6c634300080f003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5453776a33545734356d416b6873625a62775053784b656374666b5556534b526d3334586237717a6d4c6b6e0000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100e95760003560e01c8063729ad39e1161008c578063aa66797b11610066578063aa66797b1461020d578063e985e9c514610215578063efbe1c1c14610243578063f242432a1461025057600080fd5b8063729ad39e146101bc5780638da5cb5b146101cf578063a22cb465146101fa57600080fd5b806313af4035116100c857806313af40351461016c5780632eb2c2d6146101815780633c130d90146101945780634e1273f41461019c57600080fd5b8062fdd58e146100ee57806301ffc9a7146101295780630e89341c1461014c575b600080fd5b6101166100fc366004610fad565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61013c610137366004610ff0565b610263565b6040519015158152602001610120565b61015f61015a366004611014565b610300565b6040516101209190611085565b61017f61017a366004611098565b610334565b005b61017f61018f366004611141565b6103e6565b61015f6106e2565b6101af6101aa3660046111fc565b610770565b6040516101209190611268565b61017f6101ca3660046112c2565b6108b3565b6002546101e2906001600160a01b031681565b6040516001600160a01b039091168152602001610120565b61017f610208366004611387565b610a0c565b610116600c81565b61013c6102233660046113c3565b600160209081526000928352604080842090915290825290205460ff1681565b60055461013c9060ff1681565b61017f61025e3660046113f6565b610a78565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806102c657507fd9b67a26000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806102fa57507f0e89341c000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060600461030d83610ca4565b60405160200161031e9291906114c4565b6040516020818303038152906040529050919050565b6002546001600160a01b031633146103825760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b8483146104355760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610379565b336001600160a01b038916148061046f57506001600160a01b038816600090815260016020908152604080832033845290915290205460ff165b6104bb5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610379565b60008060005b87811015610576578888828181106104db576104db6115c0565b9050602002013592508686828181106104f6576104f66115c0565b6001600160a01b038e16600090815260208181526040808320898452825282208054939091029490940135955085939250906105339084906115ec565b90915550506001600160a01b038a1660009081526020818152604080832086845290915281208054849290610569908490611603565b90915550506001016104c1565b50886001600160a01b03168a6001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b6040516105ca949392919061166a565b60405180910390a46001600160a01b0389163b1561068a576040517fbc197c8100000000000000000000000000000000000000000000000000000000808252906001600160a01b038b169063bc197c81906106379033908f908e908e908e908e908e908e906004016116c5565b6020604051808303816000875af1158015610656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a9190611729565b6001600160e01b03191614610697565b6001600160a01b03891615155b6106d65760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610379565b50505050505050505050565b600480546106ef9061146e565b80601f016020809104026020016040519081016040528092919081815260200182805461071b9061146e565b80156107685780601f1061073d57610100808354040283529160200191610768565b820191906000526020600020905b81548152906001019060200180831161074b57829003601f168201915b505050505081565b60608382146107c15760405162461bcd60e51b815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610379565b8367ffffffffffffffff8111156107da576107da6112ac565b604051908082528060200260200182016040528015610803578160200160208202803683370190505b50905060005b848110156108aa57600080878784818110610826576108266115c0565b905060200201602081019061083b9190611098565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085858481811061086f5761086f6115c0565b90506020020135815260200190815260200160002054828281518110610897576108976115c0565b6020908102919091010152600101610809565b50949350505050565b6002546001600160a01b031633146108fc5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610379565b60055460ff161561094f5760405162461bcd60e51b815260206004820152601160248201527f47656e6573697320436f6d70656c7465210000000000000000000000000000006044820152606401610379565b60015b600c8111610988576109763382600160405180602001604052806000815250610d44565b8061098081611746565b915050610952565b506000610997600c6001611603565b905060005b82518110156109fa576109da8382815181106109ba576109ba6115c0565b602002602001015183600160405180602001604052806000815250610d44565b816109e481611746565b92505080806109f290611746565b91505061099c565b50506005805460ff1916600117905550565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336001600160a01b0387161480610ab257506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b610afe5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610379565b6001600160a01b03861660009081526020818152604080832087845290915281208054859290610b2f9084906115ec565b90915550506001600160a01b03851660009081526020818152604080832087845290915281208054859290610b65908490611603565b909155505060408051858152602081018590526001600160a01b03808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0385163b15610c505760405163f23a6e6160e01b808252906001600160a01b0387169063f23a6e6190610bfd9033908b908a908a908a908a9060040161175f565b6020604051808303816000875af1158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190611729565b6001600160e01b03191614610c5d565b6001600160a01b03851615155b610c9c5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610379565b505050505050565b60606000610cb183610eaf565b600101905060008167ffffffffffffffff811115610cd157610cd16112ac565b6040519080825280601f01601f191660200182016040528015610cfb576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610d0557509392505050565b6001600160a01b03841660009081526020818152604080832086845290915281208054849290610d75908490611603565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610e5d5760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610e0a903390600090899089908990600401611798565b6020604051808303816000875af1158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d9190611729565b6001600160e01b03191614610e6a565b6001600160a01b03841615155b610ea95760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610379565b50505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610ef8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610f24576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610f4257662386f26fc10000830492506010015b6305f5e1008310610f5a576305f5e100830492506008015b6127108310610f6e57612710830492506004015b60648310610f80576064830492506002015b600a83106102fa5760010192915050565b80356001600160a01b0381168114610fa857600080fd5b919050565b60008060408385031215610fc057600080fd5b610fc983610f91565b946020939093013593505050565b6001600160e01b031981168114610fed57600080fd5b50565b60006020828403121561100257600080fd5b813561100d81610fd7565b9392505050565b60006020828403121561102657600080fd5b5035919050565b60005b83811015611048578181015183820152602001611030565b83811115610ea95750506000910152565b6000815180845261107181602086016020860161102d565b601f01601f19169290920160200192915050565b60208152600061100d6020830184611059565b6000602082840312156110aa57600080fd5b61100d82610f91565b60008083601f8401126110c557600080fd5b50813567ffffffffffffffff8111156110dd57600080fd5b6020830191508360208260051b85010111156110f857600080fd5b9250929050565b60008083601f84011261111157600080fd5b50813567ffffffffffffffff81111561112957600080fd5b6020830191508360208285010111156110f857600080fd5b60008060008060008060008060a0898b03121561115d57600080fd5b61116689610f91565b975061117460208a01610f91565b9650604089013567ffffffffffffffff8082111561119157600080fd5b61119d8c838d016110b3565b909850965060608b01359150808211156111b657600080fd5b6111c28c838d016110b3565b909650945060808b01359150808211156111db57600080fd5b506111e88b828c016110ff565b999c989b5096995094979396929594505050565b6000806000806040858703121561121257600080fd5b843567ffffffffffffffff8082111561122a57600080fd5b611236888389016110b3565b9096509450602087013591508082111561124f57600080fd5b5061125c878288016110b3565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156112a057835183529284019291840191600101611284565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156112d557600080fd5b823567ffffffffffffffff808211156112ed57600080fd5b818501915085601f83011261130157600080fd5b813581811115611313576113136112ac565b8060051b604051601f19603f83011681018181108582111715611338576113386112ac565b60405291825284820192508381018501918883111561135657600080fd5b938501935b8285101561137b5761136c85610f91565b8452938501939285019261135b565b98975050505050505050565b6000806040838503121561139a57600080fd5b6113a383610f91565b9150602083013580151581146113b857600080fd5b809150509250929050565b600080604083850312156113d657600080fd5b6113df83610f91565b91506113ed60208401610f91565b90509250929050565b60008060008060008060a0878903121561140f57600080fd5b61141887610f91565b955061142660208801610f91565b94506040870135935060608701359250608087013567ffffffffffffffff81111561145057600080fd5b61145c89828a016110ff565b979a9699509497509295939492505050565b600181811c9082168061148257607f821691505b6020821081036114a257634e487b7160e01b600052602260045260246000fd5b50919050565b600081516114ba81856020860161102d565b9290920192915050565b600080845481600182811c9150808316806114e057607f831692505b602080841082036114ff57634e487b7160e01b86526022600452602486fd5b818015611513576001811461152857611555565b60ff1986168952841515850289019650611555565b60008b81526020902060005b8681101561154d5781548b820152908501908301611534565b505084890196505b50507f2f00000000000000000000000000000000000000000000000000000000000000855250611587818501886114a8565b93505050506115b5817f2e6a736f6e0000000000000000000000000000000000000000000000000000009052565b600501949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156115fe576115fe6115d6565b500390565b60008219821115611616576116166115d6565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561164d57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60408152600061167e60408301868861161b565b828103602084015261169181858761161b565b979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006001600160a01b03808b168352808a1660208401525060a060408301526116f260a08301888a61161b565b828103606084015261170581878961161b565b9050828103608084015261171a81858761169c565b9b9a5050505050505050505050565b60006020828403121561173b57600080fd5b815161100d81610fd7565b600060018201611758576117586115d6565b5060010190565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a0608083015261137b60a08301848661169c565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261169160a083018461105956fea26469706673582212207b1e4f3d5da867bb2b87ec6119f80a1690ec91206155bedfaaa680dc3e8d3da864736f6c634300080f0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5453776a33545734356d416b6873625a62775053784b656374666b5556534b526d3334586237717a6d4c6b6e0000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenURI (string): ipfs://QmTSwj3TW45mAkhsbZbwPSxKectfkUVSKRm34Xb7qzmLkn

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [2] : 697066733a2f2f516d5453776a33545734356d416b6873625a62775053784b65
Arg [3] : 6374666b5556534b526d3334586237717a6d4c6b6e0000000000000000000000


Deployed Bytecode Sourcemap

25444:1065:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2561:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;620:25:1;;;608:2;593:18;2561:64:0;;;;;;;;6154:345;;;;;;:::i;:::-;;:::i;:::-;;;1253:14:1;;1246:22;1228:41;;1216:2;1201:18;6154:345:0;1088:187:1;26351:155:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1324:148::-;;;;;;:::i;:::-;;:::i;:::-;;4105:1247;;;;;;:::i;:::-;;:::i;25557:22::-;;;:::i;5360:600::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;25832:415::-;;;;;;:::i;:::-;;:::i;688:20::-;;;;;-1:-1:-1;;;;;688:20:0;;;;;;-1:-1:-1;;;;;7262:55:1;;;7244:74;;7232:2;7217:18;688:20:0;7098:226:1;3162:207:0;;;;;;:::i;:::-;;:::i;25627:43::-;;25668:2;25627:43;;2634:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;25706:15;;;;;;;;;3377:720;;;;;;:::i;:::-;;:::i;6154:345::-;6230:4;6267:25;-1:-1:-1;;;;;;6267:25:0;;;;:101;;-1:-1:-1;6343:25:0;-1:-1:-1;;;;;;6343:25:0;;;6267:101;:178;;;-1:-1:-1;6420:25:0;-1:-1:-1;;;;;;6420:25:0;;;6267:178;6247:198;6154:345;-1:-1:-1;;6154:345:0:o;26351:155::-;26406:13;26453:8;26468:20;26485:2;26468:16;:20::i;:::-;26439:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26432:66;;26351:155;;;:::o;1324:148::-;779:5;;-1:-1:-1;;;;;779:5:0;765:10;:19;757:44;;;;-1:-1:-1;;;757:44:0;;11323:2:1;757:44:0;;;11305:21:1;11362:2;11342:18;;;11335:30;-1:-1:-1;;;11381:18:1;;;11374:42;11433:18;;757:44:0;;;;;;;;;1396:5:::1;:16:::0;;;::::1;-1:-1:-1::0;;;;;1396:16:0;::::1;::::0;;::::1;::::0;;;1430:34:::1;::::0;1443:10:::1;::::0;1430:34:::1;::::0;-1:-1:-1;;1430:34:0::1;1324:148:::0;:::o;4105:1247::-;4321:28;;;4313:56;;;;-1:-1:-1;;;4313:56:0;;11664:2:1;4313:56:0;;;11646:21:1;11703:2;11683:18;;;11676:30;11742:17;11722:18;;;11715:45;11777:18;;4313:56:0;11462:339:1;4313:56:0;4390:10;-1:-1:-1;;;;;4390:18:0;;;;:56;;-1:-1:-1;;;;;;4412:22:0;;;;;;:16;:22;;;;;;;;4435:10;4412:34;;;;;;;;;;4390:56;4382:83;;;;-1:-1:-1;;;4382:83:0;;12008:2:1;4382:83:0;;;11990:21:1;12047:2;12027:18;;;12020:30;12086:16;12066:18;;;12059:44;12120:18;;4382:83:0;11806:338:1;4382:83:0;4550:10;4571:14;4603:9;4598:364;4618:14;;;4598:364;;;4656:3;;4660:1;4656:6;;;;;;;:::i;:::-;;;;;;;4651:11;;4686:7;;4694:1;4686:10;;;;;;;:::i;:::-;-1:-1:-1;;;;;4713:15:0;;:9;:15;;;4686:10;4713:15;;;;;;;:19;;;;;;;:29;;4686:10;;;;;;;;;;-1:-1:-1;4686:10:0;;4713:19;-1:-1:-1;4713:9:0;:29;;4686:10;;4713:29;:::i;:::-;;;;-1:-1:-1;;;;;;;4757:13:0;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;4778:6;;4757:9;:27;;4778:6;;4757:27;:::i;:::-;;;;-1:-1:-1;;4932:3:0;;4598:364;;;;5011:2;-1:-1:-1;;;;;4979:49:0;5005:4;-1:-1:-1;;;;;4979:49:0;4993:10;-1:-1:-1;;;;;4979:49:0;;5015:3;;5020:7;;4979:49;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;5063:14:0;;;:19;:237;;5138:85;;5248:52;5138:85;;;5248:52;-1:-1:-1;;;;;5138:47:0;;;5248:52;;5138:85;;5186:10;;5198:4;;5204:3;;;;5209:7;;;;5218:4;;;;5138:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5138:162:0;;5063:237;;;-1:-1:-1;;;;;5102:16:0;;;;5063:237;5041:303;;;;-1:-1:-1;;;5041:303:0;;15382:2:1;5041:303:0;;;15364:21:1;15421:2;15401:18;;;15394:30;-1:-1:-1;;;15440:18:1;;;15433:46;15496:18;;5041:303:0;15180:340:1;5041:303:0;4302:1050;;4105:1247;;;;;;;;:::o;25557:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5360:600::-;5500:25;5551:27;;;5543:55;;;;-1:-1:-1;;;5543:55:0;;11664:2:1;5543:55:0;;;11646:21:1;11703:2;11683:18;;;11676:30;11742:17;11722:18;;;11715:45;11777:18;;5543:55:0;11462:339:1;5543:55:0;5636:6;5622:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5622:28:0;;5611:39;;5826:9;5821:121;5841:17;;;5821:121;;;5898:9;:20;5908:6;;5915:1;5908:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5898:20:0;-1:-1:-1;;;;;5898:20:0;;;;;;;;;;;;:28;5919:3;;5923:1;5919:6;;;;;;;:::i;:::-;;;;;;;5898:28;;;;;;;;;;;;5884:8;5893:1;5884:11;;;;;;;;:::i;:::-;;;;;;;;;;:42;5860:3;;5821:121;;;;5360:600;;;;;;:::o;25832:415::-;779:5;;-1:-1:-1;;;;;779:5:0;765:10;:19;757:44;;;;-1:-1:-1;;;757:44:0;;11323:2:1;757:44:0;;;11305:21:1;11362:2;11342:18;;;11335:30;-1:-1:-1;;;11381:18:1;;;11374:42;11433:18;;757:44:0;11121:336:1;757:44:0;25912:3:::1;::::0;::::1;;25911:4;25903:34;;;::::0;-1:-1:-1;;;25903:34:0;;15727:2:1;25903:34:0::1;::::0;::::1;15709:21:1::0;15766:2;15746:18;;;15739:30;15805:19;15785:18;;;15778:47;15842:18;;25903:34:0::1;15525:341:1::0;25903:34:0::1;25965:1;25948:100;25668:2;25968:1;:19;25948:100;;26009:27;26015:10;26027:1;26030;26009:27;;;;;;;;;;;::::0;:5:::1;:27::i;:::-;25989:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25948:100;;;-1:-1:-1::0;26058:10:0::1;26071:18;25668:2;26088:1;26071:18;:::i;:::-;26058:31;;26105:9;26100:119;26124:7;:14;26120:1;:18;26100:119;;;26160:28;26166:7;26174:1;26166:10;;;;;;;;:::i;:::-;;;;;;;26178:2;26182:1;26160:28;;;;;;;;;;;::::0;:5:::1;:28::i;:::-;26203:4:::0;::::1;::::0;::::1;:::i;:::-;;;;26140:3;;;;;:::i;:::-;;;;26100:119;;;-1:-1:-1::0;;26229:3:0::1;:10:::0;;-1:-1:-1;;26229:10:0::1;26235:4;26229:10;::::0;;-1:-1:-1;25832:415:0:o;3162:207::-;3265:10;3248:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;3248:38:0;;;;;;;;;;;;:49;;-1:-1:-1;;3248:49:0;;;;;;;;;;3315:46;;1228:41:1;;;3248:38:0;;3265:10;3315:46;;1201:18:1;3315:46:0;;;;;;;3162:207;;:::o;3377:720::-;3564:10;-1:-1:-1;;;;;3564:18:0;;;;:56;;-1:-1:-1;;;;;;3586:22:0;;;;;;:16;:22;;;;;;;;3609:10;3586:34;;;;;;;;;;3564:56;3556:83;;;;-1:-1:-1;;;3556:83:0;;12008:2:1;3556:83:0;;;11990:21:1;12047:2;12027:18;;;12020:30;12086:16;12066:18;;;12059:44;12120:18;;3556:83:0;11806:338:1;3556:83:0;-1:-1:-1;;;;;3652:15:0;;:9;:15;;;;;;;;;;;:19;;;;;;;;:29;;3675:6;;3652:9;:29;;3675:6;;3652:29;:::i;:::-;;;;-1:-1:-1;;;;;;;3692:13:0;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;3713:6;;3692:9;:27;;3713:6;;3692:27;:::i;:::-;;;;-1:-1:-1;;3737:48:0;;;16185:25:1;;;16241:2;16226:18;;16219:34;;;-1:-1:-1;;;;;3737:48:0;;;;;;;;3752:10;;3737:48;;16158:18:1;3737:48:0;;;;;;;-1:-1:-1;;;;;3820:14:0;;;:19;:225;;3895:78;;-1:-1:-1;;;3895:78:0;;;3998:47;-1:-1:-1;;;;;3895:42:0;;;3998:47;;3895:78;;3938:10;;3950:4;;3956:2;;3960:6;;3968:4;;;;3895:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3895:150:0;;3820:225;;;-1:-1:-1;;;;;3859:16:0;;;;3820:225;3798:291;;;;-1:-1:-1;;;3798:291:0;;15382:2:1;3798:291:0;;;15364:21:1;15421:2;15401:18;;;15394:30;-1:-1:-1;;;15440:18:1;;;15433:46;15496:18;;3798:291:0;15180:340:1;3798:291:0;3377:720;;;;;;:::o;23550:716::-;23606:13;23657:14;23674:17;23685:5;23674:10;:17::i;:::-;23694:1;23674:21;23657:38;;23710:20;23744:6;23733:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23733:18:0;-1:-1:-1;23710:41:0;-1:-1:-1;23875:28:0;;;23891:2;23875:28;23932:288;-1:-1:-1;;23964:5:0;24106:8;24101:2;24090:14;;24085:30;23964:5;24072:44;24162:2;24153:11;;;-1:-1:-1;24183:21:0;23932:288;24183:21;-1:-1:-1;24241:6:0;23550:716;-1:-1:-1;;;23550:716:0:o;6699:562::-;-1:-1:-1;;;;;6844:13:0;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;6865:6;;6844:9;:27;;6865:6;;6844:27;:::i;:::-;;;;-1:-1:-1;;6889:54:0;;;16185:25:1;;;16241:2;16226:18;;16219:34;;;-1:-1:-1;;;;;6889:54:0;;;6924:1;;6904:10;;6889:54;;16158:18:1;6889:54:0;;;;;;;-1:-1:-1;;;;;6978:14:0;;;:19;:231;;7053:84;;-1:-1:-1;;;7053:84:0;;;7162:47;-1:-1:-1;;;;;7053:42:0;;;7162:47;;7053:84;;7096:10;;7116:1;;7120:2;;7124:6;;7132:4;;7053:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;7053:156:0;;6978:231;;;-1:-1:-1;;;;;7017:16:0;;;;6978:231;6956:297;;;;-1:-1:-1;;;6956:297:0;;15382:2:1;6956:297:0;;;15364:21:1;15421:2;15401:18;;;15394:30;-1:-1:-1;;;15440:18:1;;;15433:46;15496:18;;6956:297:0;15180:340:1;6956:297:0;6699:562;;;;:::o;20572:922::-;20625:7;;20712:6;20703:15;;20699:102;;20748:6;20739:15;;;-1:-1:-1;20783:2:0;20773:12;20699:102;20828:6;20819:5;:15;20815:102;;20864:6;20855:15;;;-1:-1:-1;20899:2:0;20889:12;20815:102;20944:6;20935:5;:15;20931:102;;20980:6;20971:15;;;-1:-1:-1;21015:2:0;21005:12;20931:102;21060:5;21051;:14;21047:99;;21095:5;21086:14;;;-1:-1:-1;21129:1:0;21119:11;21047:99;21173:5;21164;:14;21160:99;;21208:5;21199:14;;;-1:-1:-1;21242:1:0;21232:11;21160:99;21286:5;21277;:14;21273:99;;21321:5;21312:14;;;-1:-1:-1;21355:1:0;21345:11;21273:99;21399:5;21390;:14;21386:66;;21435:1;21425:11;21480:6;20572:922;-1:-1:-1;;20572:922:0:o;14:196:1:-;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:1:o;656:177::-;-1:-1:-1;;;;;;734:5:1;730:78;723:5;720:89;710:117;;823:1;820;813:12;710:117;656:177;:::o;838:245::-;896:6;949:2;937:9;928:7;924:23;920:32;917:52;;;965:1;962;955:12;917:52;1004:9;991:23;1023:30;1047:5;1023:30;:::i;:::-;1072:5;838:245;-1:-1:-1;;;838:245:1:o;1280:180::-;1339:6;1392:2;1380:9;1371:7;1367:23;1363:32;1360:52;;;1408:1;1405;1398:12;1360:52;-1:-1:-1;1431:23:1;;1280:180;-1:-1:-1;1280:180:1:o;1465:258::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1637:11;;;1631:18;1618:11;;;1611:39;1583:2;1576:10;1547:113;;;1678:6;1675:1;1672:13;1669:48;;;-1:-1:-1;;1713:1:1;1695:16;;1688:27;1465:258::o;1728:269::-;1781:3;1819:5;1813:12;1846:6;1841:3;1834:19;1862:63;1918:6;1911:4;1906:3;1902:14;1895:4;1888:5;1884:16;1862:63;:::i;:::-;1979:2;1958:15;-1:-1:-1;;1954:29:1;1945:39;;;;1986:4;1941:50;;1728:269;-1:-1:-1;;1728:269:1:o;2002:231::-;2151:2;2140:9;2133:21;2114:4;2171:56;2223:2;2212:9;2208:18;2200:6;2171:56;:::i;2238:186::-;2297:6;2350:2;2338:9;2329:7;2325:23;2321:32;2318:52;;;2366:1;2363;2356:12;2318:52;2389:29;2408:9;2389:29;:::i;2429:367::-;2492:8;2502:6;2556:3;2549:4;2541:6;2537:17;2533:27;2523:55;;2574:1;2571;2564:12;2523:55;-1:-1:-1;2597:20:1;;2640:18;2629:30;;2626:50;;;2672:1;2669;2662:12;2626:50;2709:4;2701:6;2697:17;2685:29;;2769:3;2762:4;2752:6;2749:1;2745:14;2737:6;2733:27;2729:38;2726:47;2723:67;;;2786:1;2783;2776:12;2723:67;2429:367;;;;;:::o;2801:347::-;2852:8;2862:6;2916:3;2909:4;2901:6;2897:17;2893:27;2883:55;;2934:1;2931;2924:12;2883:55;-1:-1:-1;2957:20:1;;3000:18;2989:30;;2986:50;;;3032:1;3029;3022:12;2986:50;3069:4;3061:6;3057:17;3045:29;;3121:3;3114:4;3105:6;3097;3093:19;3089:30;3086:39;3083:59;;;3138:1;3135;3128:12;3153:1210;3313:6;3321;3329;3337;3345;3353;3361;3369;3422:3;3410:9;3401:7;3397:23;3393:33;3390:53;;;3439:1;3436;3429:12;3390:53;3462:29;3481:9;3462:29;:::i;:::-;3452:39;;3510:38;3544:2;3533:9;3529:18;3510:38;:::i;:::-;3500:48;;3599:2;3588:9;3584:18;3571:32;3622:18;3663:2;3655:6;3652:14;3649:34;;;3679:1;3676;3669:12;3649:34;3718:70;3780:7;3771:6;3760:9;3756:22;3718:70;:::i;:::-;3807:8;;-1:-1:-1;3692:96:1;-1:-1:-1;3895:2:1;3880:18;;3867:32;;-1:-1:-1;3911:16:1;;;3908:36;;;3940:1;3937;3930:12;3908:36;3979:72;4043:7;4032:8;4021:9;4017:24;3979:72;:::i;:::-;4070:8;;-1:-1:-1;3953:98:1;-1:-1:-1;4158:3:1;4143:19;;4130:33;;-1:-1:-1;4175:16:1;;;4172:36;;;4204:1;4201;4194:12;4172:36;;4243:60;4295:7;4284:8;4273:9;4269:24;4243:60;:::i;:::-;3153:1210;;;;-1:-1:-1;3153:1210:1;;-1:-1:-1;3153:1210:1;;;;;;4322:8;-1:-1:-1;;;3153:1210:1:o;4368:773::-;4490:6;4498;4506;4514;4567:2;4555:9;4546:7;4542:23;4538:32;4535:52;;;4583:1;4580;4573:12;4535:52;4623:9;4610:23;4652:18;4693:2;4685:6;4682:14;4679:34;;;4709:1;4706;4699:12;4679:34;4748:70;4810:7;4801:6;4790:9;4786:22;4748:70;:::i;:::-;4837:8;;-1:-1:-1;4722:96:1;-1:-1:-1;4925:2:1;4910:18;;4897:32;;-1:-1:-1;4941:16:1;;;4938:36;;;4970:1;4967;4960:12;4938:36;;5009:72;5073:7;5062:8;5051:9;5047:24;5009:72;:::i;:::-;4368:773;;;;-1:-1:-1;5100:8:1;-1:-1:-1;;;;4368:773:1:o;5146:632::-;5317:2;5369:21;;;5439:13;;5342:18;;;5461:22;;;5288:4;;5317:2;5540:15;;;;5514:2;5499:18;;;5288:4;5583:169;5597:6;5594:1;5591:13;5583:169;;;5658:13;;5646:26;;5727:15;;;;5692:12;;;;5619:1;5612:9;5583:169;;;-1:-1:-1;5769:3:1;;5146:632;-1:-1:-1;;;;;;5146:632:1:o;5783:184::-;-1:-1:-1;;;5832:1:1;5825:88;5932:4;5929:1;5922:15;5956:4;5953:1;5946:15;5972:1121;6056:6;6087:2;6130;6118:9;6109:7;6105:23;6101:32;6098:52;;;6146:1;6143;6136:12;6098:52;6186:9;6173:23;6215:18;6256:2;6248:6;6245:14;6242:34;;;6272:1;6269;6262:12;6242:34;6310:6;6299:9;6295:22;6285:32;;6355:7;6348:4;6344:2;6340:13;6336:27;6326:55;;6377:1;6374;6367:12;6326:55;6413:2;6400:16;6435:2;6431;6428:10;6425:36;;;6441:18;;:::i;:::-;6487:2;6484:1;6480:10;6519:2;6513:9;6582:2;6578:7;6573:2;6569;6565:11;6561:25;6553:6;6549:38;6637:6;6625:10;6622:22;6617:2;6605:10;6602:18;6599:46;6596:72;;;6648:18;;:::i;:::-;6684:2;6677:22;6734:18;;;6768:15;;;;-1:-1:-1;6810:11:1;;;6806:20;;;6838:19;;;6835:39;;;6870:1;6867;6860:12;6835:39;6894:11;;;;6914:148;6930:6;6925:3;6922:15;6914:148;;;6996:23;7015:3;6996:23;:::i;:::-;6984:36;;6947:12;;;;7040;;;;6914:148;;;7081:6;5972:1121;-1:-1:-1;;;;;;;;5972:1121:1:o;7329:347::-;7394:6;7402;7455:2;7443:9;7434:7;7430:23;7426:32;7423:52;;;7471:1;7468;7461:12;7423:52;7494:29;7513:9;7494:29;:::i;:::-;7484:39;;7573:2;7562:9;7558:18;7545:32;7620:5;7613:13;7606:21;7599:5;7596:32;7586:60;;7642:1;7639;7632:12;7586:60;7665:5;7655:15;;;7329:347;;;;;:::o;7681:260::-;7749:6;7757;7810:2;7798:9;7789:7;7785:23;7781:32;7778:52;;;7826:1;7823;7816:12;7778:52;7849:29;7868:9;7849:29;:::i;:::-;7839:39;;7897:38;7931:2;7920:9;7916:18;7897:38;:::i;:::-;7887:48;;7681:260;;;;;:::o;7946:695::-;8052:6;8060;8068;8076;8084;8092;8145:3;8133:9;8124:7;8120:23;8116:33;8113:53;;;8162:1;8159;8152:12;8113:53;8185:29;8204:9;8185:29;:::i;:::-;8175:39;;8233:38;8267:2;8256:9;8252:18;8233:38;:::i;:::-;8223:48;;8318:2;8307:9;8303:18;8290:32;8280:42;;8369:2;8358:9;8354:18;8341:32;8331:42;;8424:3;8413:9;8409:19;8396:33;8452:18;8444:6;8441:30;8438:50;;;8484:1;8481;8474:12;8438:50;8523:58;8573:7;8564:6;8553:9;8549:22;8523:58;:::i;:::-;7946:695;;;;-1:-1:-1;7946:695:1;;-1:-1:-1;7946:695:1;;8600:8;;7946:695;-1:-1:-1;;;7946:695:1:o;8646:437::-;8725:1;8721:12;;;;8768;;;8789:61;;8843:4;8835:6;8831:17;8821:27;;8789:61;8896:2;8888:6;8885:14;8865:18;8862:38;8859:218;;-1:-1:-1;;;8930:1:1;8923:88;9034:4;9031:1;9024:15;9062:4;9059:1;9052:15;8859:218;;8646:437;;;:::o;9287:185::-;9329:3;9367:5;9361:12;9382:52;9427:6;9422:3;9415:4;9408:5;9404:16;9382:52;:::i;:::-;9450:16;;;;;9287:185;-1:-1:-1;;9287:185:1:o;9549:1567::-;9905:3;9934:1;9967:6;9961:13;9997:3;10019:1;10047:9;10043:2;10039:18;10029:28;;10107:2;10096:9;10092:18;10129;10119:61;;10173:4;10165:6;10161:17;10151:27;;10119:61;10199:2;10247;10239:6;10236:14;10216:18;10213:38;10210:222;;-1:-1:-1;;;10281:3:1;10274:90;10387:4;10384:1;10377:15;10417:4;10412:3;10405:17;10210:222;10448:18;10475:133;;;;10622:1;10617:320;;;;10441:496;;10475:133;-1:-1:-1;;10508:24:1;;10496:37;;10581:14;;10574:22;10562:35;;10553:45;;;-1:-1:-1;10475:133:1;;10617:320;9161:1;9154:14;;;9198:4;9185:18;;10712:1;10726:165;10740:6;10737:1;10734:13;10726:165;;;10818:14;;10805:11;;;10798:35;10861:16;;;;10755:10;;10726:165;;;10730:3;;10920:6;10915:3;10911:16;10904:23;;10441:496;-1:-1:-1;;9276:3:1;9264:16;;-1:-1:-1;11002:39:1;11037:2;11032:3;11028:12;11020:6;11002:39;:::i;:::-;10989:52;;;;;11050:31;11075:5;9534:7;9522:20;;9477:67;11050:31;11108:1;11097:13;;9549:1567;-1:-1:-1;;;;9549:1567:1:o;12149:184::-;-1:-1:-1;;;12198:1:1;12191:88;12298:4;12295:1;12288:15;12322:4;12319:1;12312:15;12338:184;-1:-1:-1;;;12387:1:1;12380:88;12487:4;12484:1;12477:15;12511:4;12508:1;12501:15;12527:125;12567:4;12595:1;12592;12589:8;12586:34;;;12600:18;;:::i;:::-;-1:-1:-1;12637:9:1;;12527:125::o;12657:128::-;12697:3;12728:1;12724:6;12721:1;12718:13;12715:39;;;12734:18;;:::i;:::-;-1:-1:-1;12770:9:1;;12657:128::o;12790:401::-;12890:6;12885:3;12878:19;12860:3;12920:66;12912:6;12909:78;12906:98;;;13000:1;12997;12990:12;12906:98;13036:6;13033:1;13029:14;13088:8;13081:5;13074:4;13069:3;13065:14;13052:45;13165:1;13120:18;;13140:4;13116:29;13154:13;;;-1:-1:-1;13116:29:1;;12790:401;-1:-1:-1;;12790:401:1:o;13196:519::-;13473:2;13462:9;13455:21;13436:4;13499:73;13568:2;13557:9;13553:18;13545:6;13537;13499:73;:::i;:::-;13620:9;13612:6;13608:22;13603:2;13592:9;13588:18;13581:50;13648:61;13702:6;13694;13686;13648:61;:::i;:::-;13640:69;13196:519;-1:-1:-1;;;;;;;13196:519:1:o;13720:266::-;13808:6;13803:3;13796:19;13860:6;13853:5;13846:4;13841:3;13837:14;13824:43;-1:-1:-1;13912:1:1;13887:16;;;13905:4;13883:27;;;13876:38;;;;13968:2;13947:15;;;-1:-1:-1;;13943:29:1;13934:39;;;13930:50;;13720:266::o;13991:930::-;14343:4;-1:-1:-1;;;;;14453:2:1;14445:6;14441:15;14430:9;14423:34;14505:2;14497:6;14493:15;14488:2;14477:9;14473:18;14466:43;;14545:3;14540:2;14529:9;14525:18;14518:31;14572:74;14641:3;14630:9;14626:19;14618:6;14610;14572:74;:::i;:::-;14694:9;14686:6;14682:22;14677:2;14666:9;14662:18;14655:50;14728:61;14782:6;14774;14766;14728:61;:::i;:::-;14714:75;;14838:9;14830:6;14826:22;14820:3;14809:9;14805:19;14798:51;14866:49;14908:6;14900;14892;14866:49;:::i;:::-;14858:57;13991:930;-1:-1:-1;;;;;;;;;;;13991:930:1:o;14926:249::-;14995:6;15048:2;15036:9;15027:7;15023:23;15019:32;15016:52;;;15064:1;15061;15054:12;15016:52;15096:9;15090:16;15115:30;15139:5;15115:30;:::i;15871:135::-;15910:3;15931:17;;;15928:43;;15951:18;;:::i;:::-;-1:-1:-1;15998:1:1;15987:13;;15871:135::o;16264:610::-;16496:4;-1:-1:-1;;;;;16606:2:1;16598:6;16594:15;16583:9;16576:34;16658:2;16650:6;16646:15;16641:2;16630:9;16626:18;16619:43;;16698:6;16693:2;16682:9;16678:18;16671:34;16741:6;16736:2;16725:9;16721:18;16714:34;16785:3;16779;16768:9;16764:19;16757:32;16806:62;16863:3;16852:9;16848:19;16840:6;16832;16806:62;:::i;17068:595::-;17290:4;-1:-1:-1;;;;;17400:2:1;17392:6;17388:15;17377:9;17370:34;17452:2;17444:6;17440:15;17435:2;17424:9;17420:18;17413:43;;17492:6;17487:2;17476:9;17472:18;17465:34;17535:6;17530:2;17519:9;17515:18;17508:34;17579:3;17573;17562:9;17558:19;17551:32;17600:57;17652:3;17641:9;17637:19;17629:6;17600:57;:::i

Swarm Source

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