ETH Price: $3,635.45 (+0.14%)
 

Overview

Max Total Supply

114 MCATSNFT

Holders

76

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 MCATSNFT
0x018257f9ca212b4d45166bf91e6717480a60d298
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Public NFT mint is live now at: https://justjane.art/ No matter what or who surrounds meditate. Every Meditating Cat can be a mascot and a reminder to be calm and peaceful in any situation.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
meditating_cats_flat

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-21
*/

// SPDX-License-Identifier: MIT

// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - 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 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - 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 tokenId,
        bytes calldata data
    ) external;
}


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}


// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

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


// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IM-PORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IM-PORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol)

pragma solidity ^0.8.0;

/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)

pragma solidity ^0.8.0;

/**
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// meditating_cats_flat.sol

// 888b     d888 8888888888 8888888b.  8888888 88888888888        d8888 88888888888 8888888 888b    888  .d8888b.       .d8888b.         d8888 88888888888  .d8888b.  
// 8888b   d8888 888        888  "Y88b   888       888           d88888     888       888   8888b   888 d88P  Y88b     d88P  Y88b       d88888     888     d88P  Y88b 
// 88888b.d88888 888        888    888   888       888          d88P888     888       888   88888b  888 888    888     888    888      d88P888     888     Y88b.      
// 888Y88888P888 8888888    888    888   888       888         d88P 888     888       888   888Y88b 888 888            888            d88P 888     888      "Y888b.   
// 888 Y888P 888 888        888    888   888       888        d88P  888     888       888   888 Y88b888 888  88888     888           d88P  888     888         "Y88b. 
// 888  Y8P  888 888        888    888   888       888       d88P   888     888       888   888  Y88888 888    888     888    888   d88P   888     888           "888 
// 888   "   888 888        888  .d88P   888       888      d8888888888     888       888   888   Y8888 Y88b  d88P     Y88b  d88P  d8888888888     888     Y88b  d88P 
// 888       888 8888888888 8888888P"  8888888     888     d88P     888     888     8888888 888    Y888  "Y8888P88      "Y8888P"  d88P     888     888      "Y8888P"  
                                                                                                                                                                   
//   .d88 888b     d888  .d8888b.         d8888 88888888888  .d8888b.  888b    888 8888888888 88888888888 88b.   
//  d88P" 8888b   d8888 d88P  Y88b       d88888     888     d88P  Y88b 8888b   888 888            888     "Y88b  
// d88P   88888b.d88888 888    888      d88P888     888     Y88b.      88888b  888 888            888       Y88b 
// 888    888Y88888P888 888            d88P 888     888      "Y888b.   888Y88b 888 8888888        888        888 
// 888    888 Y888P 888 888           d88P  888     888         "Y88b. 888 Y88b888 888            888        888 
// Y88b   888  Y8P  888 888    888   d88P   888     888           "888 888  Y88888 888            888       d88P 
//  Y88b. 888   "   888 Y88b  d88P  d8888888888     888     Y88b  d88P 888   Y8888 888            888     .d88P  
//   "Y88 888       888  "Y8888P"  d88P     888     888      "Y8888P"  888    Y888 888            888     88P"   

pragma solidity ^0.8.0; // all openzeppelin's have 0.8.0 not 0.8.7!!!

contract meditating_cats_flat is ERC721Enumerable, Ownable
{
  using Strings for uint256;

  string internal baseURI;
  string internal baseExtension = ".json";
  string internal NotRevealedURI;

  uint256 public MAX_SUPPLY = 6000; // 6k

  uint256 public cost = 21000000000000000; // 21000000000000000 Wei = 0.021 ether
  
  bool public saleIsActive = true;
  bool public Revealed = false;

  mapping( address => bool ) internal minted_wl_adrs_map; // MintedWhiteList

////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  constructor( 
      string memory _name,
      string memory _symbol,
      string memory _initBaseURI,
      string memory _initNotRevealedURI,
      address[] memory _init_pm_adrs_array // preMint
  ) ERC721( _name, _symbol )
  {
      baseURI = _initBaseURI;
      NotRevealedURI = _initNotRevealedURI;
      preMint( _init_pm_adrs_array );
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // internal
  function preMint( address[] memory _users ) internal
  {
    for ( uint256 ii = 1; ii <= _users.length; ii++ ) _safeMint( _users[ ii - 1 ], ii );
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // public
  function mint( uint256 _mintAmount ) public payable
  {
    require( saleIsActive, "Contract is on Pause" );
    require( _mintAmount > 0, "Need to Mint at least 1 NFT" );
     uint256 supply = totalSupply();
    require( supply + _mintAmount <= MAX_SUPPLY, "Contract's all tokens already minted" );

    if ( msg.sender != owner( )) require( msg.value >= cost * _mintAmount, "Insufficient Funds" );

    for ( uint256 ii = 1; ii <= _mintAmount; ii++ ) _safeMint( msg.sender, supply + ii );
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  function mintUserInWhiteList() public // not-payable // one wl-user => only one mint!
  {
    require( saleIsActive, "Contract is on pause" );
    uint256  supply = totalSupply();
    require( supply + 1 <= MAX_SUPPLY, "Contract's all tokens already minted" );
        
    if ( msg.sender != owner())
      require( minted_wl_adrs_map[ msg.sender ], "Your already Minted WhiteList or no-address in WhiteList" );
               minted_wl_adrs_map[ msg.sender ] = false;
                        _safeMint( msg.sender, supply + 1 );
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // only owner public
  function setUsersWhiteList( address[] calldata _users ) public onlyOwner
  {
    for( uint256 ii = 0; ii < _users.length; ii++ ) minted_wl_adrs_map[ _users[ ii ]] = true;
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // system public
  function tokenURI( uint256 tokenId ) public view virtual override returns ( string memory )
  {
    require( _exists( tokenId ), "ERC721Metadata: URI query for nonexistent token"  );
    
               string memory currentBaseURI = baseURI;
    if( Revealed == false ){ currentBaseURI = NotRevealedURI; }

    return bytes( currentBaseURI ).length > 0 ? string( abi.encodePacked( currentBaseURI, tokenId.toString( ), baseExtension ) ) : "";
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  function walletOfOwner( address _owner ) public view returns ( uint256[] memory )
  {
    uint256 ownerTokenCount = balanceOf( _owner );
    uint256[] memory tokenIds = new uint256[]( ownerTokenCount );
    for ( uint256 ii; ii < ownerTokenCount; ii++ ) tokenIds[ ii ] = tokenOfOwnerByIndex( _owner, ii );
    return tokenIds;
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // only owner public
  function reveal( ) public onlyOwner { Revealed = !Revealed; }
  function setCost( uint256 _newCost ) public onlyOwner { cost = _newCost; }
  function flipSaleState() public onlyOwner{ saleIsActive = !saleIsActive; }  
  function setBaseURI( string memory _newBaseURI ) public onlyOwner { baseURI = _newBaseURI; }
  function setNotRevealedURI( string memory _newHiddenURI ) public onlyOwner { NotRevealedURI = _newHiddenURI; }

////////////////////////////////////////////////////////////////////////////////////////////////////////////
  function withdraw( ) public payable onlyOwner 
  {
      ( bool success, ) = payable( owner( )).call{value: address( this ).balance}( "" );
    require( success );
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedURI","type":"string"},{"internalType":"address[]","name":"_init_pm_adrs_array","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintUserInWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newHiddenURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"setUsersWhiteList","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

60c06040526005608081905264173539b7b760d91b60a09081526200002891600c919062000789565b50611770600e55664a9b6384488000600f556010805461ff001960ff199091166001171690553480156200005b57600080fd5b506040516200352b3803806200352b8339810160408190526200007e9162000969565b8451859085906200009790600090602085019062000789565b508051620000ad90600190602084019062000789565b505050620000ca620000c46200010c60201b60201c565b62000110565b8251620000df90600b90602086019062000789565b508151620000f590600d90602085019062000789565b50620001018162000162565b505050505062000cbd565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60015b81518111620001c957620001b4826200018060018462000be9565b815181106200019f57634e487b7160e01b600052603260045260246000fd5b602002602001015182620001cd60201b60201c565b80620001c08162000c73565b91505062000165565b5050565b620001c9828260405180602001604052806000815250620001ef60201b60201c565b620001fb838362000237565b6200020a600084848462000322565b620002325760405162461bcd60e51b8152600401620002299062000a9a565b60405180910390fd5b505050565b6001600160a01b038216620002605760405162461bcd60e51b8152600401620002299062000b6d565b6200026b816200045b565b156200028b5760405162461bcd60e51b8152600401620002299062000aec565b620002996000838362000478565b6001600160a01b0382166000908152600360205260408120805460019290620002c490849062000bce565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600062000343846001600160a01b03166200051c60201b620011891760201c565b156200044f576001600160a01b03841663150b7a02620003626200010c565b8786866040518563ffffffff1660e01b815260040162000386949392919062000a44565b602060405180830381600087803b158015620003a157600080fd5b505af1925050508015620003d4575060408051601f3d908101601f19168201909252620003d19181019062000938565b60015b62000434573d80801562000405576040519150601f19603f3d011682016040523d82523d6000602084013e6200040a565b606091505b5080516200042c5760405162461bcd60e51b8152600401620002299062000a9a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905062000453565b5060015b949350505050565b6000908152600260205260409020546001600160a01b0316151590565b620004908383836200023260201b620007541760201c565b6001600160a01b038316620004b057620004aa8162000522565b620004d6565b816001600160a01b0316836001600160a01b031614620004d657620004d6838262000566565b6001600160a01b038216620004f657620004f08162000613565b62000232565b826001600160a01b0316826001600160a01b0316146200023257620002328282620006f1565b3b151590565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6000600162000580846200074260201b62000bbc1760201c565b6200058c919062000be9565b600083815260076020526040902054909150808214620005e0576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090620006279060019062000be9565b600083815260096020526040812054600880549394509092849081106200065e57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106200068e57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480620006d557634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600062000709836200074260201b62000bbc1760201c565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60006001600160a01b0382166200076d5760405162461bcd60e51b8152600401620002299062000b23565b506001600160a01b031660009081526003602052604090205490565b828054620007979062000c36565b90600052602060002090601f016020900481019282620007bb576000855562000806565b82601f10620007d657805160ff191683800117855562000806565b8280016001018555821562000806579182015b8281111562000806578251825591602001919060010190620007e9565b506200081492915062000818565b5090565b5b8082111562000814576000815560010162000819565b600082601f83011262000840578081fd5b815160206001600160401b038211156200085e576200085e62000ca7565b8082026200086e82820162000ba2565b83815282810190868401838801850189101562000889578687fd5b8693505b85841015620008c25780516001600160a01b0381168114620008ad578788fd5b8352600193909301929184019184016200088d565b50979650505050505050565b600082601f830112620008df578081fd5b81516001600160401b03811115620008fb57620008fb62000ca7565b62000910601f8201601f191660200162000ba2565b81815284602083860101111562000925578283fd5b6200045382602083016020870162000c03565b6000602082840312156200094a578081fd5b81516001600160e01b03198116811462000962578182fd5b9392505050565b600080600080600060a0868803121562000981578081fd5b85516001600160401b038082111562000998578283fd5b620009a689838a01620008ce565b96506020880151915080821115620009bc578283fd5b620009ca89838a01620008ce565b95506040880151915080821115620009e0578283fd5b620009ee89838a01620008ce565b9450606088015191508082111562000a04578283fd5b62000a1289838a01620008ce565b9350608088015191508082111562000a28578283fd5b5062000a37888289016200082f565b9150509295509295909350565b600060018060a01b03808716835280861660208401525083604083015260806060830152825180608084015262000a838160a085016020870162000c03565b601f01601f19169190910160a00195945050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6040518181016001600160401b038111828210171562000bc65762000bc662000ca7565b604052919050565b6000821982111562000be45762000be462000c91565b500190565b60008282101562000bfe5762000bfe62000c91565b500390565b60005b8381101562000c2057818101518382015260200162000c06565b8381111562000c30576000848401525b50505050565b60028104600182168062000c4b57607f821691505b6020821081141562000c6d57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141562000c8a5762000c8a62000c91565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61285e8062000ccd6000396000f3fe6080604052600436106101ee5760003560e01c806355f804b31161010d578063a22cb465116100a0578063e2a7169c1161006f578063e2a7169c1461052c578063e985e9c514610541578063eb8d244414610561578063f2c4ce1e14610576578063f2fde38b14610596576101ee565b8063a22cb465146104b7578063a475b5dd146104d7578063b88d4fde146104ec578063c87b56dd1461050c576101ee565b80638506742e116100dc5780638506742e146104655780638da5cb5b1461047a57806395d89b411461048f578063a0712d68146104a4576101ee565b806355f804b3146103f05780636352211e1461041057806370a0823114610430578063715018a614610450576101ee565b80632f745c591161018557806342842e0e1161015457806342842e0e14610363578063438b63001461038357806344a0d68a146103b05780634f6ccce7146103d0576101ee565b80632f745c591461031157806332cb6b0c1461033157806334918dfd146103465780633ccfd60b1461035b576101ee565b806313faede6116101c157806313faede61461029a57806318160ddd146102bc578063202d27e7146102d157806323b872dd146102f1576101ee565b806301ffc9a7146101f357806306fdde0314610229578063081812fc1461024b578063095ea7b314610278575b600080fd5b3480156101ff57600080fd5b5061021361020e366004611e2c565b6105b6565b6040516102209190612048565b60405180910390f35b34801561023557600080fd5b5061023e6105e3565b6040516102209190612053565b34801561025757600080fd5b5061026b610266366004611eaa565b610675565b6040516102209190611fb3565b34801561028457600080fd5b50610298610293366004611d94565b6106c1565b005b3480156102a657600080fd5b506102af610759565b60405161022091906126c3565b3480156102c857600080fd5b506102af61075f565b3480156102dd57600080fd5b506102986102ec366004611dbd565b610765565b3480156102fd57600080fd5b5061029861030c366004611ca6565b610824565b34801561031d57600080fd5b506102af61032c366004611d94565b61085c565b34801561033d57600080fd5b506102af6108ae565b34801561035257600080fd5b506102986108b4565b610298610907565b34801561036f57600080fd5b5061029861037e366004611ca6565b6109b9565b34801561038f57600080fd5b506103a361039e366004611c5a565b6109d4565b6040516102209190612004565b3480156103bc57600080fd5b506102986103cb366004611eaa565b610a92565b3480156103dc57600080fd5b506102af6103eb366004611eaa565b610ad6565b3480156103fc57600080fd5b5061029861040b366004611e64565b610b31565b34801561041c57600080fd5b5061026b61042b366004611eaa565b610b87565b34801561043c57600080fd5b506102af61044b366004611c5a565b610bbc565b34801561045c57600080fd5b50610298610c00565b34801561047157600080fd5b50610298610c4b565b34801561048657600080fd5b5061026b610d20565b34801561049b57600080fd5b5061023e610d2f565b6102986104b2366004611eaa565b610d3e565b3480156104c357600080fd5b506102986104d2366004611d5a565b610e2f565b3480156104e357600080fd5b50610298610e41565b3480156104f857600080fd5b50610298610507366004611ce1565b610e9d565b34801561051857600080fd5b5061023e610527366004611eaa565b610edc565b34801561053857600080fd5b50610213611084565b34801561054d57600080fd5b5061021361055c366004611c74565b611092565b34801561056d57600080fd5b506102136110c0565b34801561058257600080fd5b50610298610591366004611e64565b6110c9565b3480156105a257600080fd5b506102986105b1366004611c5a565b61111b565b60006001600160e01b0319821663780e9d6360e01b14806105db57506105db8261118f565b90505b919050565b6060600080546105f290612766565b80601f016020809104026020016040519081016040528092919081815260200182805461061e90612766565b801561066b5780601f106106405761010080835404028352916020019161066b565b820191906000526020600020905b81548152906001019060200180831161064e57829003601f168201915b5050505050905090565b6000610680826111cf565b6106a55760405162461bcd60e51b815260040161069c90612441565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106cc82610b87565b9050806001600160a01b0316836001600160a01b031614156107005760405162461bcd60e51b815260040161069c9061255a565b806001600160a01b03166107126111ec565b6001600160a01b0316148061072e575061072e8161055c6111ec565b61074a5760405162461bcd60e51b815260040161069c906122a1565b61075483836111f0565b505050565b600f5481565b60085490565b61076d6111ec565b6001600160a01b031661077e610d20565b6001600160a01b0316146107a45760405162461bcd60e51b815260040161069c9061248d565b60005b81811015610754576001601160008585858181106107d557634e487b7160e01b600052603260045260246000fd5b90506020020160208101906107ea9190611c5a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061081c816127a1565b9150506107a7565b61083561082f6111ec565b8261125e565b6108515760405162461bcd60e51b815260040161069c906125c9565b6107548383836112e3565b600061086783610bbc565b82106108855760405162461bcd60e51b815260040161069c90612094565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600e5481565b6108bc6111ec565b6001600160a01b03166108cd610d20565b6001600160a01b0316146108f35760405162461bcd60e51b815260040161069c9061248d565b6010805460ff19811660ff90911615179055565b61090f6111ec565b6001600160a01b0316610920610d20565b6001600160a01b0316146109465760405162461bcd60e51b815260040161069c9061248d565b6000610950610d20565b6001600160a01b03164760405161096690611fb0565b60006040518083038185875af1925050503d80600081146109a3576040519150601f19603f3d011682016040523d82523d6000602084013e6109a8565b606091505b50509050806109b657600080fd5b50565b61075483838360405180602001604052806000815250610e9d565b606060006109e183610bbc565b905060008167ffffffffffffffff811115610a0c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b82811015610a8a57610a4d858261085c565b828281518110610a6d57634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610a82816127a1565b915050610a3b565b509392505050565b610a9a6111ec565b6001600160a01b0316610aab610d20565b6001600160a01b031614610ad15760405162461bcd60e51b815260040161069c9061248d565b600f55565b6000610ae061075f565b8210610afe5760405162461bcd60e51b815260040161069c9061261a565b60088281548110610b1f57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b610b396111ec565b6001600160a01b0316610b4a610d20565b6001600160a01b031614610b705760405162461bcd60e51b815260040161069c9061248d565b8051610b8390600b906020840190611b3a565b5050565b6000818152600260205260408120546001600160a01b0316806105db5760405162461bcd60e51b815260040161069c90612348565b60006001600160a01b038216610be45760405162461bcd60e51b815260040161069c906122fe565b506001600160a01b031660009081526003602052604090205490565b610c086111ec565b6001600160a01b0316610c19610d20565b6001600160a01b031614610c3f5760405162461bcd60e51b815260040161069c9061248d565b610c496000611410565b565b60105460ff16610c6d5760405162461bcd60e51b815260040161069c90612066565b6000610c7761075f565b600e54909150610c888260016126d8565b1115610ca65760405162461bcd60e51b815260040161069c906123fd565b610cae610d20565b6001600160a01b0316336001600160a01b031614610cf5573360009081526011602052604090205460ff16610cf55760405162461bcd60e51b815260040161069c90612666565b336000818152601160205260409020805460ff191690556109b690610d1b8360016126d8565b611462565b600a546001600160a01b031690565b6060600180546105f290612766565b60105460ff16610d605760405162461bcd60e51b815260040161069c9061259b565b60008111610d805760405162461bcd60e51b815260040161069c90612391565b6000610d8a61075f565b600e54909150610d9a83836126d8565b1115610db85760405162461bcd60e51b815260040161069c906123fd565b610dc0610d20565b6001600160a01b0316336001600160a01b031614610e055781600f54610de69190612704565b341015610e055760405162461bcd60e51b815260040161069c906121ae565b60015b82811161075457610e1d33610d1b83856126d8565b80610e27816127a1565b915050610e08565b610b83610e3a6111ec565b838361147c565b610e496111ec565b6001600160a01b0316610e5a610d20565b6001600160a01b031614610e805760405162461bcd60e51b815260040161069c9061248d565b6010805461ff001981166101009182900460ff1615909102179055565b610eae610ea86111ec565b8361125e565b610eca5760405162461bcd60e51b815260040161069c906125c9565b610ed68484848461151f565b50505050565b6060610ee7826111cf565b610f035760405162461bcd60e51b815260040161069c9061250b565b6000600b8054610f1290612766565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3e90612766565b8015610f8b5780601f10610f6057610100808354040283529160200191610f8b565b820191906000526020600020905b815481529060010190602001808311610f6e57829003601f168201915b505060105493945050505060ff6101009091041661103157600d8054610fb090612766565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdc90612766565b80156110295780601f10610ffe57610100808354040283529160200191611029565b820191906000526020600020905b81548152906001019060200180831161100c57829003601f168201915b505050505090505b600081511161104f576040518060200160405280600081525061107d565b8061105984611552565b600c60405160200161106d93929190611eee565b6040516020818303038152906040525b9392505050565b601054610100900460ff1681565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60105460ff1681565b6110d16111ec565b6001600160a01b03166110e2610d20565b6001600160a01b0316146111085760405162461bcd60e51b815260040161069c9061248d565b8051610b8390600d906020840190611b3a565b6111236111ec565b6001600160a01b0316611134610d20565b6001600160a01b03161461115a5760405162461bcd60e51b815260040161069c9061248d565b6001600160a01b0381166111805760405162461bcd60e51b815260040161069c90612131565b6109b681611410565b3b151590565b60006001600160e01b031982166380ac58cd60e01b14806111c057506001600160e01b03198216635b5e139f60e01b145b806105db57506105db8261166d565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061122582610b87565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611269826111cf565b6112855760405162461bcd60e51b815260040161069c90612255565b600061129083610b87565b9050806001600160a01b0316846001600160a01b031614806112cb5750836001600160a01b03166112c084610675565b6001600160a01b0316145b806112db57506112db8185611092565b949350505050565b826001600160a01b03166112f682610b87565b6001600160a01b03161461131c5760405162461bcd60e51b815260040161069c906124c2565b6001600160a01b0382166113425760405162461bcd60e51b815260040161069c906121da565b61134d838383611686565b6113586000826111f0565b6001600160a01b0383166000908152600360205260408120805460019290611381908490612723565b90915550506001600160a01b03821660009081526003602052604081208054600192906113af9084906126d8565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610b8382826040518060200160405280600081525061170f565b816001600160a01b0316836001600160a01b031614156114ae5760405162461bcd60e51b815260040161069c9061221e565b6001600160a01b0383811660008181526005602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611512908590612048565b60405180910390a3505050565b61152a8484846112e3565b61153684848484611742565b610ed65760405162461bcd60e51b815260040161069c906120df565b60608161157757506040805180820190915260018152600360fc1b60208201526105de565b8160005b81156115a1578061158b816127a1565b915061159a9050600a836126f0565b915061157b565b60008167ffffffffffffffff8111156115ca57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156115f4576020820181803683370190505b5090505b84156112db57611609600183612723565b9150611616600a866127bc565b6116219060306126d8565b60f81b81838151811061164457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611666600a866126f0565b94506115f8565b6001600160e01b031981166301ffc9a760e01b14919050565b611691838383610754565b6001600160a01b0383166116ad576116a88161185d565b6116d0565b816001600160a01b0316836001600160a01b0316146116d0576116d083826118a1565b6001600160a01b0382166116ec576116e78161193e565b610754565b826001600160a01b0316826001600160a01b031614610754576107548282611a17565b6117198383611a5b565b6117266000848484611742565b6107545760405162461bcd60e51b815260040161069c906120df565b6000611756846001600160a01b0316611189565b1561185257836001600160a01b031663150b7a026117726111ec565b8786866040518563ffffffff1660e01b81526004016117949493929190611fc7565b602060405180830381600087803b1580156117ae57600080fd5b505af19250505080156117de575060408051601f3d908101601f191682019092526117db91810190611e48565b60015b611838573d80801561180c576040519150601f19603f3d011682016040523d82523d6000602084013e611811565b606091505b5080516118305760405162461bcd60e51b815260040161069c906120df565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506112db565b506001949350505050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b600060016118ae84610bbc565b6118b89190612723565b60008381526007602052604090205490915080821461190b576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061195090600190612723565b6000838152600960205260408120546008805493945090928490811061198657634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106119b557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806119fb57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000611a2283610bbc565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611a815760405162461bcd60e51b815260040161069c906123c8565b611a8a816111cf565b15611aa75760405162461bcd60e51b815260040161069c90612177565b611ab360008383611686565b6001600160a01b0382166000908152600360205260408120805460019290611adc9084906126d8565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611b4690612766565b90600052602060002090601f016020900481019282611b685760008555611bae565b82601f10611b8157805160ff1916838001178555611bae565b82800160010185558215611bae579182015b82811115611bae578251825591602001919060010190611b93565b50611bba929150611bbe565b5090565b5b80821115611bba5760008155600101611bbf565b600067ffffffffffffffff80841115611bee57611bee6127fc565b604051601f8501601f191681016020018281118282101715611c1257611c126127fc565b604052848152915081838501861015611c2a57600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b03811681146105de57600080fd5b600060208284031215611c6b578081fd5b61107d82611c43565b60008060408385031215611c86578081fd5b611c8f83611c43565b9150611c9d60208401611c43565b90509250929050565b600080600060608486031215611cba578081fd5b611cc384611c43565b9250611cd160208501611c43565b9150604084013590509250925092565b60008060008060808587031215611cf6578081fd5b611cff85611c43565b9350611d0d60208601611c43565b925060408501359150606085013567ffffffffffffffff811115611d2f578182fd5b8501601f81018713611d3f578182fd5b611d4e87823560208401611bd3565b91505092959194509250565b60008060408385031215611d6c578182fd5b611d7583611c43565b915060208301358015158114611d89578182fd5b809150509250929050565b60008060408385031215611da6578182fd5b611daf83611c43565b946020939093013593505050565b60008060208385031215611dcf578182fd5b823567ffffffffffffffff80821115611de6578384fd5b818501915085601f830112611df9578384fd5b813581811115611e07578485fd5b8660208083028501011115611e1a578485fd5b60209290920196919550909350505050565b600060208284031215611e3d578081fd5b813561107d81612812565b600060208284031215611e59578081fd5b815161107d81612812565b600060208284031215611e75578081fd5b813567ffffffffffffffff811115611e8b578182fd5b8201601f81018413611e9b578182fd5b6112db84823560208401611bd3565b600060208284031215611ebb578081fd5b5035919050565b60008151808452611eda81602086016020860161273a565b601f01601f19169290920160200192915050565b600084516020611f018285838a0161273a565b855191840191611f148184848a0161273a565b8554920191839060028104600180831680611f3057607f831692505b858310811415611f4e57634e487b7160e01b88526022600452602488fd5b808015611f625760018114611f7357611f9f565b60ff19851688528388019550611f9f565b611f7c8b6126cc565b895b85811015611f975781548a820152908401908801611f7e565b505083880195505b50939b9a5050505050505050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611ffa90830184611ec2565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561203c57835183529284019291840191600101612020565b50909695505050505050565b901515815260200190565b60006020825261107d6020830184611ec2565b602080825260149082015273436f6e7472616374206973206f6e20706175736560601b604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b602080825260129082015271496e73756666696369656e742046756e647360701b604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252601b908201527f4e65656420746f204d696e74206174206c656173742031204e46540000000000604082015260600190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b60208082526024908201527f436f6e7472616374277320616c6c20746f6b656e7320616c7265616479206d696040820152631b9d195960e21b606082015260800190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b602080825260149082015273436f6e7472616374206973206f6e20506175736560601b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b60208082526038908201527f596f757220616c7265616479204d696e7465642057686974654c697374206f7260408201527f206e6f2d6164647265737320696e2057686974654c6973740000000000000000606082015260800190565b90815260200190565b60009081526020902090565b600082198211156126eb576126eb6127d0565b500190565b6000826126ff576126ff6127e6565b500490565b600081600019048311821515161561271e5761271e6127d0565b500290565b600082821015612735576127356127d0565b500390565b60005b8381101561275557818101518382015260200161273d565b83811115610ed65750506000910152565b60028104600182168061277a57607f821691505b6020821081141561279b57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156127b5576127b56127d0565b5060010190565b6000826127cb576127cb6127e6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146109b657600080fdfea26469706673582212209bc2a7417657be7d0fbfda7f3390bb8bd5f86c6f469592a2c68be540c809b8df64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000f4d656469746174696e672043617473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d434154534e465400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e554c4c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f6170692e6a7573746a616e652e6172742f646174612f0000000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000074f64336a76f2e4c3e3fd3e6b02b712472d299190000000000000000000000003c3797e54715af2d05d6dbee053aab4dc2d651f9000000000000000000000000b6e7e4d85c147407e169770a8fc3b7f07489fb8c00000000000000000000000086e93098c0cabdd4f03a29ef488754f87c35c5ad000000000000000000000000e35f4a9f94064b7f44441e51a0f732e73a4396d3000000000000000000000000555fd7aad2028fbe87a878f9ab1a7e4bbb21837c000000000000000000000000daf68c55d0b04b44b714de084f72c44316e3395b000000000000000000000000b3c8c440d75cca5f8a7f3bfaa5bdc81409e32b880000000000000000000000003ab6c0c9ff069a0298b00e12793d5482746621c4000000000000000000000000564fee0ab4b396f2dfd881873fc1323fa0c726920000000000000000000000002da19991340970b5ce6110da7fecfb08e1ebfbef000000000000000000000000ff00ea9049513c5847090e662603ad2a9da1d5e00000000000000000000000004662329dc5f248b41bf9d02fef2d9fe3be91628e000000000000000000000000147753211399aa8caa59f16a8b5f9d5c29cd12f90000000000000000000000002c27afe2fe8f4f9c7b93e2975908f258d40a412700000000000000000000000046502d892c59926b9907304ac24179fa18e7222a00000000000000000000000049fc06ae31d5d65e5fb2feba7d13c7951ba816510000000000000000000000005973fec7bfd899a3114416ca11b148168bb0975d000000000000000000000000b02d5d25a548423073b149c920f0f105e4a12bd50000000000000000000000001621584ffb49d86dee7e6ccb08d513ca1ce7968800000000000000000000000048328efa0c1651e503795279b019712dde4e10ad0000000000000000000000003930740bb8dec98a0662969c756c939e8fe6c204000000000000000000000000d2e3ee99e719a067a225e5426aa13a88d33da63a0000000000000000000000003860132d66738d45197e8ec41441a2f02535ec5700000000000000000000000050e705e57a130443e7a01a9428d69d023f5e089a0000000000000000000000008cdda0e614ab5b1f7f14f81589d631f4b5435641000000000000000000000000caac25d787b14a8053ca20d0f95531eec7c8035e000000000000000000000000964e646556723c2afcdf92b26ef9ab8d35f4f58900000000000000000000000013ae194f2fe18ee650cd355e4cf24a0c384a3c2e000000000000000000000000e7f81cb9fb8cb298f7172c2e43b1141f7551a9930000000000000000000000008068a9894959061d82bf79650cd746df2b2d15590000000000000000000000003f6c78c693943d7481897d72abbed017977bc105000000000000000000000000982bc58dc0e0c9ee09235e2f59d7087886becd76000000000000000000000000278e39090bcd654e3fbda7290f965588b93d92b0000000000000000000000000ade4e95ef5bfa0ab24a313768b3ed38741ae73db00000000000000000000000034ef9d3655638aa0bdc6348f22a791a6891a7b5000000000000000000000000031753ebb2672e821fa9940644a814256dfcfb1a60000000000000000000000000d80093b2c22029c799a8f84935b2d2493c93c2000000000000000000000000067b79f06785404afabdd3f473c41e448aea8e9a10000000000000000000000004c6dab81587a76e170167ae57193348944a9a1c800000000000000000000000009962992628ae465499d25e9548ebb11cbb030b6000000000000000000000000ebcaa1e2c3c3a43a348ab7646a8526fc50c7eca9

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c806355f804b31161010d578063a22cb465116100a0578063e2a7169c1161006f578063e2a7169c1461052c578063e985e9c514610541578063eb8d244414610561578063f2c4ce1e14610576578063f2fde38b14610596576101ee565b8063a22cb465146104b7578063a475b5dd146104d7578063b88d4fde146104ec578063c87b56dd1461050c576101ee565b80638506742e116100dc5780638506742e146104655780638da5cb5b1461047a57806395d89b411461048f578063a0712d68146104a4576101ee565b806355f804b3146103f05780636352211e1461041057806370a0823114610430578063715018a614610450576101ee565b80632f745c591161018557806342842e0e1161015457806342842e0e14610363578063438b63001461038357806344a0d68a146103b05780634f6ccce7146103d0576101ee565b80632f745c591461031157806332cb6b0c1461033157806334918dfd146103465780633ccfd60b1461035b576101ee565b806313faede6116101c157806313faede61461029a57806318160ddd146102bc578063202d27e7146102d157806323b872dd146102f1576101ee565b806301ffc9a7146101f357806306fdde0314610229578063081812fc1461024b578063095ea7b314610278575b600080fd5b3480156101ff57600080fd5b5061021361020e366004611e2c565b6105b6565b6040516102209190612048565b60405180910390f35b34801561023557600080fd5b5061023e6105e3565b6040516102209190612053565b34801561025757600080fd5b5061026b610266366004611eaa565b610675565b6040516102209190611fb3565b34801561028457600080fd5b50610298610293366004611d94565b6106c1565b005b3480156102a657600080fd5b506102af610759565b60405161022091906126c3565b3480156102c857600080fd5b506102af61075f565b3480156102dd57600080fd5b506102986102ec366004611dbd565b610765565b3480156102fd57600080fd5b5061029861030c366004611ca6565b610824565b34801561031d57600080fd5b506102af61032c366004611d94565b61085c565b34801561033d57600080fd5b506102af6108ae565b34801561035257600080fd5b506102986108b4565b610298610907565b34801561036f57600080fd5b5061029861037e366004611ca6565b6109b9565b34801561038f57600080fd5b506103a361039e366004611c5a565b6109d4565b6040516102209190612004565b3480156103bc57600080fd5b506102986103cb366004611eaa565b610a92565b3480156103dc57600080fd5b506102af6103eb366004611eaa565b610ad6565b3480156103fc57600080fd5b5061029861040b366004611e64565b610b31565b34801561041c57600080fd5b5061026b61042b366004611eaa565b610b87565b34801561043c57600080fd5b506102af61044b366004611c5a565b610bbc565b34801561045c57600080fd5b50610298610c00565b34801561047157600080fd5b50610298610c4b565b34801561048657600080fd5b5061026b610d20565b34801561049b57600080fd5b5061023e610d2f565b6102986104b2366004611eaa565b610d3e565b3480156104c357600080fd5b506102986104d2366004611d5a565b610e2f565b3480156104e357600080fd5b50610298610e41565b3480156104f857600080fd5b50610298610507366004611ce1565b610e9d565b34801561051857600080fd5b5061023e610527366004611eaa565b610edc565b34801561053857600080fd5b50610213611084565b34801561054d57600080fd5b5061021361055c366004611c74565b611092565b34801561056d57600080fd5b506102136110c0565b34801561058257600080fd5b50610298610591366004611e64565b6110c9565b3480156105a257600080fd5b506102986105b1366004611c5a565b61111b565b60006001600160e01b0319821663780e9d6360e01b14806105db57506105db8261118f565b90505b919050565b6060600080546105f290612766565b80601f016020809104026020016040519081016040528092919081815260200182805461061e90612766565b801561066b5780601f106106405761010080835404028352916020019161066b565b820191906000526020600020905b81548152906001019060200180831161064e57829003601f168201915b5050505050905090565b6000610680826111cf565b6106a55760405162461bcd60e51b815260040161069c90612441565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106cc82610b87565b9050806001600160a01b0316836001600160a01b031614156107005760405162461bcd60e51b815260040161069c9061255a565b806001600160a01b03166107126111ec565b6001600160a01b0316148061072e575061072e8161055c6111ec565b61074a5760405162461bcd60e51b815260040161069c906122a1565b61075483836111f0565b505050565b600f5481565b60085490565b61076d6111ec565b6001600160a01b031661077e610d20565b6001600160a01b0316146107a45760405162461bcd60e51b815260040161069c9061248d565b60005b81811015610754576001601160008585858181106107d557634e487b7160e01b600052603260045260246000fd5b90506020020160208101906107ea9190611c5a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061081c816127a1565b9150506107a7565b61083561082f6111ec565b8261125e565b6108515760405162461bcd60e51b815260040161069c906125c9565b6107548383836112e3565b600061086783610bbc565b82106108855760405162461bcd60e51b815260040161069c90612094565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600e5481565b6108bc6111ec565b6001600160a01b03166108cd610d20565b6001600160a01b0316146108f35760405162461bcd60e51b815260040161069c9061248d565b6010805460ff19811660ff90911615179055565b61090f6111ec565b6001600160a01b0316610920610d20565b6001600160a01b0316146109465760405162461bcd60e51b815260040161069c9061248d565b6000610950610d20565b6001600160a01b03164760405161096690611fb0565b60006040518083038185875af1925050503d80600081146109a3576040519150601f19603f3d011682016040523d82523d6000602084013e6109a8565b606091505b50509050806109b657600080fd5b50565b61075483838360405180602001604052806000815250610e9d565b606060006109e183610bbc565b905060008167ffffffffffffffff811115610a0c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b82811015610a8a57610a4d858261085c565b828281518110610a6d57634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610a82816127a1565b915050610a3b565b509392505050565b610a9a6111ec565b6001600160a01b0316610aab610d20565b6001600160a01b031614610ad15760405162461bcd60e51b815260040161069c9061248d565b600f55565b6000610ae061075f565b8210610afe5760405162461bcd60e51b815260040161069c9061261a565b60088281548110610b1f57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b610b396111ec565b6001600160a01b0316610b4a610d20565b6001600160a01b031614610b705760405162461bcd60e51b815260040161069c9061248d565b8051610b8390600b906020840190611b3a565b5050565b6000818152600260205260408120546001600160a01b0316806105db5760405162461bcd60e51b815260040161069c90612348565b60006001600160a01b038216610be45760405162461bcd60e51b815260040161069c906122fe565b506001600160a01b031660009081526003602052604090205490565b610c086111ec565b6001600160a01b0316610c19610d20565b6001600160a01b031614610c3f5760405162461bcd60e51b815260040161069c9061248d565b610c496000611410565b565b60105460ff16610c6d5760405162461bcd60e51b815260040161069c90612066565b6000610c7761075f565b600e54909150610c888260016126d8565b1115610ca65760405162461bcd60e51b815260040161069c906123fd565b610cae610d20565b6001600160a01b0316336001600160a01b031614610cf5573360009081526011602052604090205460ff16610cf55760405162461bcd60e51b815260040161069c90612666565b336000818152601160205260409020805460ff191690556109b690610d1b8360016126d8565b611462565b600a546001600160a01b031690565b6060600180546105f290612766565b60105460ff16610d605760405162461bcd60e51b815260040161069c9061259b565b60008111610d805760405162461bcd60e51b815260040161069c90612391565b6000610d8a61075f565b600e54909150610d9a83836126d8565b1115610db85760405162461bcd60e51b815260040161069c906123fd565b610dc0610d20565b6001600160a01b0316336001600160a01b031614610e055781600f54610de69190612704565b341015610e055760405162461bcd60e51b815260040161069c906121ae565b60015b82811161075457610e1d33610d1b83856126d8565b80610e27816127a1565b915050610e08565b610b83610e3a6111ec565b838361147c565b610e496111ec565b6001600160a01b0316610e5a610d20565b6001600160a01b031614610e805760405162461bcd60e51b815260040161069c9061248d565b6010805461ff001981166101009182900460ff1615909102179055565b610eae610ea86111ec565b8361125e565b610eca5760405162461bcd60e51b815260040161069c906125c9565b610ed68484848461151f565b50505050565b6060610ee7826111cf565b610f035760405162461bcd60e51b815260040161069c9061250b565b6000600b8054610f1290612766565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3e90612766565b8015610f8b5780601f10610f6057610100808354040283529160200191610f8b565b820191906000526020600020905b815481529060010190602001808311610f6e57829003601f168201915b505060105493945050505060ff6101009091041661103157600d8054610fb090612766565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdc90612766565b80156110295780601f10610ffe57610100808354040283529160200191611029565b820191906000526020600020905b81548152906001019060200180831161100c57829003601f168201915b505050505090505b600081511161104f576040518060200160405280600081525061107d565b8061105984611552565b600c60405160200161106d93929190611eee565b6040516020818303038152906040525b9392505050565b601054610100900460ff1681565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60105460ff1681565b6110d16111ec565b6001600160a01b03166110e2610d20565b6001600160a01b0316146111085760405162461bcd60e51b815260040161069c9061248d565b8051610b8390600d906020840190611b3a565b6111236111ec565b6001600160a01b0316611134610d20565b6001600160a01b03161461115a5760405162461bcd60e51b815260040161069c9061248d565b6001600160a01b0381166111805760405162461bcd60e51b815260040161069c90612131565b6109b681611410565b3b151590565b60006001600160e01b031982166380ac58cd60e01b14806111c057506001600160e01b03198216635b5e139f60e01b145b806105db57506105db8261166d565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061122582610b87565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611269826111cf565b6112855760405162461bcd60e51b815260040161069c90612255565b600061129083610b87565b9050806001600160a01b0316846001600160a01b031614806112cb5750836001600160a01b03166112c084610675565b6001600160a01b0316145b806112db57506112db8185611092565b949350505050565b826001600160a01b03166112f682610b87565b6001600160a01b03161461131c5760405162461bcd60e51b815260040161069c906124c2565b6001600160a01b0382166113425760405162461bcd60e51b815260040161069c906121da565b61134d838383611686565b6113586000826111f0565b6001600160a01b0383166000908152600360205260408120805460019290611381908490612723565b90915550506001600160a01b03821660009081526003602052604081208054600192906113af9084906126d8565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610b8382826040518060200160405280600081525061170f565b816001600160a01b0316836001600160a01b031614156114ae5760405162461bcd60e51b815260040161069c9061221e565b6001600160a01b0383811660008181526005602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611512908590612048565b60405180910390a3505050565b61152a8484846112e3565b61153684848484611742565b610ed65760405162461bcd60e51b815260040161069c906120df565b60608161157757506040805180820190915260018152600360fc1b60208201526105de565b8160005b81156115a1578061158b816127a1565b915061159a9050600a836126f0565b915061157b565b60008167ffffffffffffffff8111156115ca57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156115f4576020820181803683370190505b5090505b84156112db57611609600183612723565b9150611616600a866127bc565b6116219060306126d8565b60f81b81838151811061164457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611666600a866126f0565b94506115f8565b6001600160e01b031981166301ffc9a760e01b14919050565b611691838383610754565b6001600160a01b0383166116ad576116a88161185d565b6116d0565b816001600160a01b0316836001600160a01b0316146116d0576116d083826118a1565b6001600160a01b0382166116ec576116e78161193e565b610754565b826001600160a01b0316826001600160a01b031614610754576107548282611a17565b6117198383611a5b565b6117266000848484611742565b6107545760405162461bcd60e51b815260040161069c906120df565b6000611756846001600160a01b0316611189565b1561185257836001600160a01b031663150b7a026117726111ec565b8786866040518563ffffffff1660e01b81526004016117949493929190611fc7565b602060405180830381600087803b1580156117ae57600080fd5b505af19250505080156117de575060408051601f3d908101601f191682019092526117db91810190611e48565b60015b611838573d80801561180c576040519150601f19603f3d011682016040523d82523d6000602084013e611811565b606091505b5080516118305760405162461bcd60e51b815260040161069c906120df565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506112db565b506001949350505050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b600060016118ae84610bbc565b6118b89190612723565b60008381526007602052604090205490915080821461190b576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061195090600190612723565b6000838152600960205260408120546008805493945090928490811061198657634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106119b557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806119fb57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000611a2283610bbc565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611a815760405162461bcd60e51b815260040161069c906123c8565b611a8a816111cf565b15611aa75760405162461bcd60e51b815260040161069c90612177565b611ab360008383611686565b6001600160a01b0382166000908152600360205260408120805460019290611adc9084906126d8565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611b4690612766565b90600052602060002090601f016020900481019282611b685760008555611bae565b82601f10611b8157805160ff1916838001178555611bae565b82800160010185558215611bae579182015b82811115611bae578251825591602001919060010190611b93565b50611bba929150611bbe565b5090565b5b80821115611bba5760008155600101611bbf565b600067ffffffffffffffff80841115611bee57611bee6127fc565b604051601f8501601f191681016020018281118282101715611c1257611c126127fc565b604052848152915081838501861015611c2a57600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b03811681146105de57600080fd5b600060208284031215611c6b578081fd5b61107d82611c43565b60008060408385031215611c86578081fd5b611c8f83611c43565b9150611c9d60208401611c43565b90509250929050565b600080600060608486031215611cba578081fd5b611cc384611c43565b9250611cd160208501611c43565b9150604084013590509250925092565b60008060008060808587031215611cf6578081fd5b611cff85611c43565b9350611d0d60208601611c43565b925060408501359150606085013567ffffffffffffffff811115611d2f578182fd5b8501601f81018713611d3f578182fd5b611d4e87823560208401611bd3565b91505092959194509250565b60008060408385031215611d6c578182fd5b611d7583611c43565b915060208301358015158114611d89578182fd5b809150509250929050565b60008060408385031215611da6578182fd5b611daf83611c43565b946020939093013593505050565b60008060208385031215611dcf578182fd5b823567ffffffffffffffff80821115611de6578384fd5b818501915085601f830112611df9578384fd5b813581811115611e07578485fd5b8660208083028501011115611e1a578485fd5b60209290920196919550909350505050565b600060208284031215611e3d578081fd5b813561107d81612812565b600060208284031215611e59578081fd5b815161107d81612812565b600060208284031215611e75578081fd5b813567ffffffffffffffff811115611e8b578182fd5b8201601f81018413611e9b578182fd5b6112db84823560208401611bd3565b600060208284031215611ebb578081fd5b5035919050565b60008151808452611eda81602086016020860161273a565b601f01601f19169290920160200192915050565b600084516020611f018285838a0161273a565b855191840191611f148184848a0161273a565b8554920191839060028104600180831680611f3057607f831692505b858310811415611f4e57634e487b7160e01b88526022600452602488fd5b808015611f625760018114611f7357611f9f565b60ff19851688528388019550611f9f565b611f7c8b6126cc565b895b85811015611f975781548a820152908401908801611f7e565b505083880195505b50939b9a5050505050505050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611ffa90830184611ec2565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561203c57835183529284019291840191600101612020565b50909695505050505050565b901515815260200190565b60006020825261107d6020830184611ec2565b602080825260149082015273436f6e7472616374206973206f6e20706175736560601b604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b602080825260129082015271496e73756666696369656e742046756e647360701b604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252601b908201527f4e65656420746f204d696e74206174206c656173742031204e46540000000000604082015260600190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b60208082526024908201527f436f6e7472616374277320616c6c20746f6b656e7320616c7265616479206d696040820152631b9d195960e21b606082015260800190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b602080825260149082015273436f6e7472616374206973206f6e20506175736560601b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b60208082526038908201527f596f757220616c7265616479204d696e7465642057686974654c697374206f7260408201527f206e6f2d6164647265737320696e2057686974654c6973740000000000000000606082015260800190565b90815260200190565b60009081526020902090565b600082198211156126eb576126eb6127d0565b500190565b6000826126ff576126ff6127e6565b500490565b600081600019048311821515161561271e5761271e6127d0565b500290565b600082821015612735576127356127d0565b500390565b60005b8381101561275557818101518382015260200161273d565b83811115610ed65750506000910152565b60028104600182168061277a57607f821691505b6020821081141561279b57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156127b5576127b56127d0565b5060010190565b6000826127cb576127cb6127e6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146109b657600080fdfea26469706673582212209bc2a7417657be7d0fbfda7f3390bb8bd5f86c6f469592a2c68be540c809b8df64736f6c63430008000033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000f4d656469746174696e672043617473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084d434154534e465400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e554c4c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f6170692e6a7573746a616e652e6172742f646174612f0000000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000074f64336a76f2e4c3e3fd3e6b02b712472d299190000000000000000000000003c3797e54715af2d05d6dbee053aab4dc2d651f9000000000000000000000000b6e7e4d85c147407e169770a8fc3b7f07489fb8c00000000000000000000000086e93098c0cabdd4f03a29ef488754f87c35c5ad000000000000000000000000e35f4a9f94064b7f44441e51a0f732e73a4396d3000000000000000000000000555fd7aad2028fbe87a878f9ab1a7e4bbb21837c000000000000000000000000daf68c55d0b04b44b714de084f72c44316e3395b000000000000000000000000b3c8c440d75cca5f8a7f3bfaa5bdc81409e32b880000000000000000000000003ab6c0c9ff069a0298b00e12793d5482746621c4000000000000000000000000564fee0ab4b396f2dfd881873fc1323fa0c726920000000000000000000000002da19991340970b5ce6110da7fecfb08e1ebfbef000000000000000000000000ff00ea9049513c5847090e662603ad2a9da1d5e00000000000000000000000004662329dc5f248b41bf9d02fef2d9fe3be91628e000000000000000000000000147753211399aa8caa59f16a8b5f9d5c29cd12f90000000000000000000000002c27afe2fe8f4f9c7b93e2975908f258d40a412700000000000000000000000046502d892c59926b9907304ac24179fa18e7222a00000000000000000000000049fc06ae31d5d65e5fb2feba7d13c7951ba816510000000000000000000000005973fec7bfd899a3114416ca11b148168bb0975d000000000000000000000000b02d5d25a548423073b149c920f0f105e4a12bd50000000000000000000000001621584ffb49d86dee7e6ccb08d513ca1ce7968800000000000000000000000048328efa0c1651e503795279b019712dde4e10ad0000000000000000000000003930740bb8dec98a0662969c756c939e8fe6c204000000000000000000000000d2e3ee99e719a067a225e5426aa13a88d33da63a0000000000000000000000003860132d66738d45197e8ec41441a2f02535ec5700000000000000000000000050e705e57a130443e7a01a9428d69d023f5e089a0000000000000000000000008cdda0e614ab5b1f7f14f81589d631f4b5435641000000000000000000000000caac25d787b14a8053ca20d0f95531eec7c8035e000000000000000000000000964e646556723c2afcdf92b26ef9ab8d35f4f58900000000000000000000000013ae194f2fe18ee650cd355e4cf24a0c384a3c2e000000000000000000000000e7f81cb9fb8cb298f7172c2e43b1141f7551a9930000000000000000000000008068a9894959061d82bf79650cd746df2b2d15590000000000000000000000003f6c78c693943d7481897d72abbed017977bc105000000000000000000000000982bc58dc0e0c9ee09235e2f59d7087886becd76000000000000000000000000278e39090bcd654e3fbda7290f965588b93d92b0000000000000000000000000ade4e95ef5bfa0ab24a313768b3ed38741ae73db00000000000000000000000034ef9d3655638aa0bdc6348f22a791a6891a7b5000000000000000000000000031753ebb2672e821fa9940644a814256dfcfb1a60000000000000000000000000d80093b2c22029c799a8f84935b2d2493c93c2000000000000000000000000067b79f06785404afabdd3f473c41e448aea8e9a10000000000000000000000004c6dab81587a76e170167ae57193348944a9a1c800000000000000000000000009962992628ae465499d25e9548ebb11cbb030b6000000000000000000000000ebcaa1e2c3c3a43a348ab7646a8526fc50c7eca9

-----Decoded View---------------
Arg [0] : _name (string): Meditating Cats
Arg [1] : _symbol (string): MCATSNFT
Arg [2] : _initBaseURI (string): NULL
Arg [3] : _initNotRevealedURI (string): https://api.justjane.art/data/
Arg [4] : _init_pm_adrs_array (address[]): 0x74f64336a76F2e4C3E3fD3E6B02B712472D29919,0x3c3797e54715Af2D05d6DBeE053aab4Dc2d651f9,0xb6e7e4d85c147407e169770a8fC3B7F07489FB8c,0x86E93098C0CaBDd4F03A29EF488754F87C35c5ad,0xE35f4A9f94064b7f44441e51A0F732e73a4396d3,0x555fd7AaD2028FBE87A878f9aB1A7E4BBB21837c,0xDAF68C55d0B04b44B714DE084f72c44316e3395B,0xb3c8c440D75CCA5f8a7F3BFaA5bdC81409e32b88,0x3Ab6c0C9fF069A0298B00E12793D5482746621c4,0x564fee0ab4b396F2Dfd881873fc1323fA0C72692,0x2Da19991340970B5Ce6110dA7FecFB08E1eBFBEF,0xff00eA9049513c5847090e662603ad2A9Da1D5e0,0x4662329dc5f248B41bF9D02feF2d9FE3BE91628e,0x147753211399aa8Caa59f16a8B5F9D5c29CD12f9,0x2c27afE2Fe8f4f9c7B93E2975908F258d40a4127,0x46502d892c59926b9907304Ac24179fA18e7222A,0x49FC06ae31D5d65E5fb2FeBa7D13C7951BA81651,0x5973FEc7bFD899A3114416cA11b148168Bb0975D,0xB02d5D25A548423073B149c920f0F105e4A12BD5,0x1621584fFb49D86DeE7e6ccb08D513ca1cE79688,0x48328efa0c1651e503795279b019712dDe4e10ad,0x3930740Bb8DeC98a0662969c756C939E8fe6C204,0xD2E3eE99E719a067a225E5426aa13A88d33da63A,0x3860132d66738D45197e8EC41441A2f02535EC57,0x50E705E57a130443E7A01a9428D69d023f5E089a,0x8cDdA0e614aB5b1F7F14f81589d631f4B5435641,0xCAac25d787B14A8053ca20D0f95531EEc7C8035e,0x964E646556723C2aFcdf92B26eF9Ab8d35f4F589,0x13Ae194F2Fe18ee650CD355e4CF24a0c384a3c2e,0xe7f81Cb9FB8cb298f7172C2e43b1141f7551A993,0x8068A9894959061d82bf79650cD746dF2B2d1559,0x3f6c78c693943d7481897d72aBbED017977Bc105,0x982bC58dC0e0c9Ee09235E2f59d7087886becD76,0x278e39090Bcd654E3FbDA7290F965588B93d92b0,0xade4e95eF5BFA0AB24A313768B3ed38741aE73Db,0x34Ef9d3655638aA0bDC6348f22A791A6891a7b50,0x31753EBB2672e821fa9940644A814256DFcfb1a6,0x0D80093B2C22029C799A8F84935b2d2493C93c20,0x67B79F06785404AFABdD3F473C41E448AeA8e9A1,0x4C6dab81587a76E170167aE57193348944A9A1C8,0x09962992628AE465499D25E9548ebB11CbB030B6,0xEBcaa1E2c3C3a43A348aB7646A8526fc50C7ECA9

-----Encoded View---------------
56 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [6] : 4d656469746174696e6720436174730000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [8] : 4d434154534e4654000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 4e554c4c00000000000000000000000000000000000000000000000000000000
Arg [11] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [12] : 68747470733a2f2f6170692e6a7573746a616e652e6172742f646174612f0000
Arg [13] : 000000000000000000000000000000000000000000000000000000000000002a
Arg [14] : 00000000000000000000000074f64336a76f2e4c3e3fd3e6b02b712472d29919
Arg [15] : 0000000000000000000000003c3797e54715af2d05d6dbee053aab4dc2d651f9
Arg [16] : 000000000000000000000000b6e7e4d85c147407e169770a8fc3b7f07489fb8c
Arg [17] : 00000000000000000000000086e93098c0cabdd4f03a29ef488754f87c35c5ad
Arg [18] : 000000000000000000000000e35f4a9f94064b7f44441e51a0f732e73a4396d3
Arg [19] : 000000000000000000000000555fd7aad2028fbe87a878f9ab1a7e4bbb21837c
Arg [20] : 000000000000000000000000daf68c55d0b04b44b714de084f72c44316e3395b
Arg [21] : 000000000000000000000000b3c8c440d75cca5f8a7f3bfaa5bdc81409e32b88
Arg [22] : 0000000000000000000000003ab6c0c9ff069a0298b00e12793d5482746621c4
Arg [23] : 000000000000000000000000564fee0ab4b396f2dfd881873fc1323fa0c72692
Arg [24] : 0000000000000000000000002da19991340970b5ce6110da7fecfb08e1ebfbef
Arg [25] : 000000000000000000000000ff00ea9049513c5847090e662603ad2a9da1d5e0
Arg [26] : 0000000000000000000000004662329dc5f248b41bf9d02fef2d9fe3be91628e
Arg [27] : 000000000000000000000000147753211399aa8caa59f16a8b5f9d5c29cd12f9
Arg [28] : 0000000000000000000000002c27afe2fe8f4f9c7b93e2975908f258d40a4127
Arg [29] : 00000000000000000000000046502d892c59926b9907304ac24179fa18e7222a
Arg [30] : 00000000000000000000000049fc06ae31d5d65e5fb2feba7d13c7951ba81651
Arg [31] : 0000000000000000000000005973fec7bfd899a3114416ca11b148168bb0975d
Arg [32] : 000000000000000000000000b02d5d25a548423073b149c920f0f105e4a12bd5
Arg [33] : 0000000000000000000000001621584ffb49d86dee7e6ccb08d513ca1ce79688
Arg [34] : 00000000000000000000000048328efa0c1651e503795279b019712dde4e10ad
Arg [35] : 0000000000000000000000003930740bb8dec98a0662969c756c939e8fe6c204
Arg [36] : 000000000000000000000000d2e3ee99e719a067a225e5426aa13a88d33da63a
Arg [37] : 0000000000000000000000003860132d66738d45197e8ec41441a2f02535ec57
Arg [38] : 00000000000000000000000050e705e57a130443e7a01a9428d69d023f5e089a
Arg [39] : 0000000000000000000000008cdda0e614ab5b1f7f14f81589d631f4b5435641
Arg [40] : 000000000000000000000000caac25d787b14a8053ca20d0f95531eec7c8035e
Arg [41] : 000000000000000000000000964e646556723c2afcdf92b26ef9ab8d35f4f589
Arg [42] : 00000000000000000000000013ae194f2fe18ee650cd355e4cf24a0c384a3c2e
Arg [43] : 000000000000000000000000e7f81cb9fb8cb298f7172c2e43b1141f7551a993
Arg [44] : 0000000000000000000000008068a9894959061d82bf79650cd746df2b2d1559
Arg [45] : 0000000000000000000000003f6c78c693943d7481897d72abbed017977bc105
Arg [46] : 000000000000000000000000982bc58dc0e0c9ee09235e2f59d7087886becd76
Arg [47] : 000000000000000000000000278e39090bcd654e3fbda7290f965588b93d92b0
Arg [48] : 000000000000000000000000ade4e95ef5bfa0ab24a313768b3ed38741ae73db
Arg [49] : 00000000000000000000000034ef9d3655638aa0bdc6348f22a791a6891a7b50
Arg [50] : 00000000000000000000000031753ebb2672e821fa9940644a814256dfcfb1a6
Arg [51] : 0000000000000000000000000d80093b2c22029c799a8f84935b2d2493c93c20
Arg [52] : 00000000000000000000000067b79f06785404afabdd3f473c41e448aea8e9a1
Arg [53] : 0000000000000000000000004c6dab81587a76e170167ae57193348944a9a1c8
Arg [54] : 00000000000000000000000009962992628ae465499d25e9548ebb11cbb030b6
Arg [55] : 000000000000000000000000ebcaa1e2c3c3a43a348ab7646a8526fc50c7eca9


Deployed Bytecode Sourcemap

46169:4957:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35013:224;;;;;;;;;;-1:-1:-1;35013:224:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22592:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24151:221::-;;;;;;;;;;-1:-1:-1;24151:221:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23674:411::-;;;;;;;;;;-1:-1:-1;23674:411:0;;;;;:::i;:::-;;:::i;:::-;;46420:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;35653:113::-;;;;;;;;;;;;;:::i;49054:177::-;;;;;;;;;;-1:-1:-1;49054:177:0;;;;;:::i;:::-;;:::i;24901:339::-;;;;;;;;;;-1:-1:-1;24901:339:0;;;;;:::i;:::-;;:::i;35321:256::-;;;;;;;;;;-1:-1:-1;35321:256:0;;;;;:::i;:::-;;:::i;46375:32::-;;;;;;;;;;;;;:::i;50550:74::-;;;;;;;;;;;;;:::i;50952:171::-;;;:::i;25311:185::-;;;;;;;;;;-1:-1:-1;25311:185:0;;;;;:::i;:::-;;:::i;49933:336::-;;;;;;;;;;-1:-1:-1;49933:336:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;50472:74::-;;;;;;;;;;-1:-1:-1;50472:74:0;;;;;:::i;:::-;;:::i;35843:233::-;;;;;;;;;;-1:-1:-1;35843:233:0;;;;;:::i;:::-;;:::i;50630:92::-;;;;;;;;;;-1:-1:-1;50630:92:0;;;;;:::i;:::-;;:::i;22286:239::-;;;;;;;;;;-1:-1:-1;22286:239:0;;;;;:::i;:::-;;:::i;22016:208::-;;;;;;;;;;-1:-1:-1;22016:208:0;;;;;:::i;:::-;;:::i;42817:103::-;;;;;;;;;;;;;:::i;48372:544::-;;;;;;;;;;;;;:::i;42166:87::-;;;;;;;;;;;;;:::i;22761:104::-;;;;;;;;;;;;;:::i;47754:504::-;;;;;;:::i;:::-;;:::i;24444:155::-;;;;;;;;;;-1:-1:-1;24444:155:0;;;;;:::i;:::-;;:::i;50407:61::-;;;;;;;;;;;;;:::i;25567:328::-;;;;;;;;;;-1:-1:-1;25567:328:0;;;;;:::i;:::-;;:::i;49365:454::-;;;;;;;;;;-1:-1:-1;49365:454:0;;;;;:::i;:::-;;:::i;46543:28::-;;;;;;;;;;;;;:::i;24670:164::-;;;;;;;;;;-1:-1:-1;24670:164:0;;;;;:::i;:::-;;:::i;46507:31::-;;;;;;;;;;;;;:::i;50726:110::-;;;;;;;;;;-1:-1:-1;50726:110:0;;;;;:::i;:::-;;:::i;43075:201::-;;;;;;;;;;-1:-1:-1;43075:201:0;;;;;:::i;:::-;;:::i;35013:224::-;35115:4;-1:-1:-1;;;;;;35139:50:0;;-1:-1:-1;;;35139:50:0;;:90;;;35193:36;35217:11;35193:23;:36::i;:::-;35132:97;;35013:224;;;;:::o;22592:100::-;22646:13;22679:5;22672:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22592:100;:::o;24151:221::-;24227:7;24255:16;24263:7;24255;:16::i;:::-;24247:73;;;;-1:-1:-1;;;24247:73:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;24340:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;24340:24:0;;24151:221::o;23674:411::-;23755:13;23771:23;23786:7;23771:14;:23::i;:::-;23755:39;;23819:5;-1:-1:-1;;;;;23813:11:0;:2;-1:-1:-1;;;;;23813:11:0;;;23805:57;;;;-1:-1:-1;;;23805:57:0;;;;;;;:::i;:::-;23913:5;-1:-1:-1;;;;;23897:21:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;23897:21:0;;:62;;;;23922:37;23939:5;23946:12;:10;:12::i;23922:37::-;23875:168;;;;-1:-1:-1;;;23875:168:0;;;;;;;:::i;:::-;24056:21;24065:2;24069:7;24056:8;:21::i;:::-;23674:411;;;:::o;46420:39::-;;;;:::o;35653:113::-;35741:10;:17;35653:113;:::o;49054:177::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;49142:10:::1;49137:88;49158:18:::0;;::::1;49137:88;;;49221:4;49185:18;:33;49205:6;;49213:2;49205:12;;;;;-1:-1:-1::0;;;49205:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;49185:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;49185:33:0;:40;;-1:-1:-1;;49185:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;49178:4;::::1;::::0;::::1;:::i;:::-;;;;49137:88;;24901:339:::0;25096:41;25115:12;:10;:12::i;:::-;25129:7;25096:18;:41::i;:::-;25088:103;;;;-1:-1:-1;;;25088:103:0;;;;;;;:::i;:::-;25204:28;25214:4;25220:2;25224:7;25204:9;:28::i;35321:256::-;35418:7;35454:23;35471:5;35454:16;:23::i;:::-;35446:5;:31;35438:87;;;;-1:-1:-1;;;35438:87:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;35543:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;35321:256::o;46375:32::-;;;;:::o;50550:74::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;50609:12:::1;::::0;;-1:-1:-1;;50593:28:0;::::1;50609:12;::::0;;::::1;50608:13;50593:28;::::0;;50550:74::o;50952:171::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;51013:12:::1;51040:8;:5;:8::i;:::-;-1:-1:-1::0;;;;;51031:23:0::1;51062;51031:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51011:81;;;51108:7;51099:18;;;::::0;::::1;;42457:1;50952:171::o:0;25311:185::-;25449:39;25466:4;25472:2;25476:7;25449:39;;;;;;;;;;;;:16;:39::i;49933:336::-;49996:16;50025:23;50051:19;50062:6;50051:9;:19::i;:::-;50025:45;;50077:25;50120:15;50105:32;;;;;;-1:-1:-1;;;50105:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50105:32:0;;50077:60;;50150:10;50144:97;50167:15;50162:2;:20;50144:97;;;50208:33;50229:6;50237:2;50208:19;:33::i;:::-;50191:8;50201:2;50191:14;;;;;;-1:-1:-1;;;50191:14:0;;;;;;;;;;;;;;;;;;:50;50184:4;;;;:::i;:::-;;;;50144:97;;;-1:-1:-1;50255:8:0;49933:336;-1:-1:-1;;;49933:336:0:o;50472:74::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;50528:4:::1;:15:::0;50472:74::o;35843:233::-;35918:7;35954:30;:28;:30::i;:::-;35946:5;:38;35938:95;;;;-1:-1:-1;;;35938:95:0;;;;;;;:::i;:::-;36051:10;36062:5;36051:17;;;;;;-1:-1:-1;;;36051:17:0;;;;;;;;;;;;;;;;;36044:24;;35843:233;;;:::o;50630:92::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;50698:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;50630:92:::0;:::o;22286:239::-;22358:7;22394:16;;;:7;:16;;;;;;-1:-1:-1;;;;;22394:16:0;22429:19;22421:73;;;;-1:-1:-1;;;22421:73:0;;;;;;;:::i;22016:208::-;22088:7;-1:-1:-1;;;;;22116:19:0;;22108:74;;;;-1:-1:-1;;;22108:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;22200:16:0;;;;;:9;:16;;;;;;;22016:208::o;42817:103::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;42882:30:::1;42909:1;42882:18;:30::i;:::-;42817:103::o:0;48372:544::-;48477:12;;;;48468:47;;;;-1:-1:-1;;;48468:47:0;;;;;;;:::i;:::-;48522:15;48540:13;:11;:13::i;:::-;48583:10;;48522:31;;-1:-1:-1;48569:10:0;48522:31;48578:1;48569:10;:::i;:::-;:24;;48560:75;;;;-1:-1:-1;;;48560:75:0;;;;;;;:::i;:::-;48671:7;:5;:7::i;:::-;-1:-1:-1;;;;;48657:21:0;:10;-1:-1:-1;;;;;48657:21:0;;48652:138;;48716:10;48696:32;;;;:18;:32;;;;;;;;48687:103;;;;-1:-1:-1;;;48687:103:0;;;;;;;:::i;:::-;48828:10;48843:5;48808:32;;;:18;:32;;;;;:40;;-1:-1:-1;;48808:40:0;;;48875:35;;48898:10;:6;48808:40;48898:10;:::i;:::-;48875:9;:35::i;42166:87::-;42239:6;;-1:-1:-1;;;;;42239:6:0;42166:87;:::o;22761:104::-;22817:13;22850:7;22843:14;;;;;:::i;47754:504::-;47825:12;;;;47816:47;;;;-1:-1:-1;;;47816:47:0;;;;;;;:::i;:::-;47893:1;47879:11;:15;47870:57;;;;-1:-1:-1;;;47870:57:0;;;;;;;:::i;:::-;47935:14;47952:13;:11;:13::i;:::-;48005:10;;47935:30;;-1:-1:-1;47981:20:0;47990:11;47935:30;47981:20;:::i;:::-;:34;;47972:85;;;;-1:-1:-1;;;47972:85:0;;;;;;;:::i;:::-;48085:8;:5;:8::i;:::-;-1:-1:-1;;;;;48071:22:0;:10;-1:-1:-1;;;;;48071:22:0;;48066:93;;48124:11;48117:4;;:18;;;;:::i;:::-;48104:9;:31;;48095:64;;;;-1:-1:-1;;;48095:64:0;;;;;;;:::i;:::-;48187:1;48168:84;48196:11;48190:2;:17;48168:84;;48216:36;48227:10;48239:11;48248:2;48239:6;:11;:::i;48216:36::-;48209:4;;;;:::i;:::-;;;;48168:84;;24444:155;24539:52;24558:12;:10;:12::i;:::-;24572:8;24582;24539:18;:52::i;50407:61::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;50457:8:::1;::::0;;-1:-1:-1;;50445:20:0;::::1;50457:8;::::0;;;::::1;;;50456:9;50445:20:::0;;::::1;;::::0;;50407:61::o;25567:328::-;25742:41;25761:12;:10;:12::i;:::-;25775:7;25742:18;:41::i;:::-;25734:103;;;;-1:-1:-1;;;25734:103:0;;;;;;;:::i;:::-;25848:39;25862:4;25868:2;25872:7;25881:5;25848:13;:39::i;:::-;25567:328;;;;:::o;49365:454::-;49441:13;49476:18;49485:7;49476;:18::i;:::-;49467:81;;;;-1:-1:-1;;;49467:81:0;;;;;;;:::i;:::-;49572:28;49603:7;49572:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;49621:8:0;;49572:38;;-1:-1:-1;;;;49621:8:0;;;;;;49617:59;;49659:14;49642:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49617:59;49724:1;49698:14;49691:30;:34;:122;;;;;;;;;;;;;;;;;49754:14;49770:19;:7;:16;:19::i;:::-;49791:13;49736:70;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;49691:122;49684:129;49365:454;-1:-1:-1;;;49365:454:0:o;46543:28::-;;;;;;;;;:::o;24670:164::-;-1:-1:-1;;;;;24791:25:0;;;24767:4;24791:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;24670:164::o;46507:31::-;;;;;;:::o;50726:110::-;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;50803:30;;::::1;::::0;:14:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;43075:201::-:0;42397:12;:10;:12::i;:::-;-1:-1:-1;;;;;42386:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;42386:23:0;;42378:68;;;;-1:-1:-1;;;42378:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43164:22:0;::::1;43156:73;;;;-1:-1:-1::0;;;43156:73:0::1;;;;;;;:::i;:::-;43240:28;43259:8;43240:18;:28::i;10465:387::-:0;10788:20;10836:8;;;10465:387::o;21647:305::-;21749:4;-1:-1:-1;;;;;;21786:40:0;;-1:-1:-1;;;21786:40:0;;:105;;-1:-1:-1;;;;;;;21843:48:0;;-1:-1:-1;;;21843:48:0;21786:105;:158;;;;21908:36;21932:11;21908:23;:36::i;27405:127::-;27470:4;27494:16;;;:7;:16;;;;;;-1:-1:-1;;;;;27494:16:0;:30;;;27405:127::o;20115:98::-;20195:10;20115:98;:::o;31387:174::-;31462:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;31462:29:0;-1:-1:-1;;;;;31462:29:0;;;;;;;;:24;;31516:23;31462:24;31516:14;:23::i;:::-;-1:-1:-1;;;;;31507:46:0;;;;;;;;;;;31387:174;;:::o;27699:348::-;27792:4;27817:16;27825:7;27817;:16::i;:::-;27809:73;;;;-1:-1:-1;;;27809:73:0;;;;;;;:::i;:::-;27893:13;27909:23;27924:7;27909:14;:23::i;:::-;27893:39;;27962:5;-1:-1:-1;;;;;27951:16:0;:7;-1:-1:-1;;;;;27951:16:0;;:51;;;;27995:7;-1:-1:-1;;;;;27971:31:0;:20;27983:7;27971:11;:20::i;:::-;-1:-1:-1;;;;;27971:31:0;;27951:51;:87;;;;28006:32;28023:5;28030:7;28006:16;:32::i;:::-;27943:96;27699:348;-1:-1:-1;;;;27699:348:0:o;30691:578::-;30850:4;-1:-1:-1;;;;;30823:31:0;:23;30838:7;30823:14;:23::i;:::-;-1:-1:-1;;;;;30823:31:0;;30815:85;;;;-1:-1:-1;;;30815:85:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30919:16:0;;30911:65;;;;-1:-1:-1;;;30911:65:0;;;;;;;:::i;:::-;30989:39;31010:4;31016:2;31020:7;30989:20;:39::i;:::-;31093:29;31110:1;31114:7;31093:8;:29::i;:::-;-1:-1:-1;;;;;31135:15:0;;;;;;:9;:15;;;;;:20;;31154:1;;31135:15;:20;;31154:1;;31135:20;:::i;:::-;;;;-1:-1:-1;;;;;;;31166:13:0;;;;;;:9;:13;;;;;:18;;31183:1;;31166:13;:18;;31183:1;;31166:18;:::i;:::-;;;;-1:-1:-1;;31195:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;31195:21:0;-1:-1:-1;;;;;31195:21:0;;;;;;;;;31234:27;;31195:16;;31234:27;;;;;;;30691:578;;;:::o;43436:191::-;43529:6;;;-1:-1:-1;;;;;43546:17:0;;;-1:-1:-1;;;;;;43546:17:0;;;;;;;43579:40;;43529:6;;;43546:17;43529:6;;43579:40;;43510:16;;43579:40;43436:191;;:::o;28389:110::-;28465:26;28475:2;28479:7;28465:26;;;;;;;;;;;;:9;:26::i;31703:315::-;31858:8;-1:-1:-1;;;;;31849:17:0;:5;-1:-1:-1;;;;;31849:17:0;;;31841:55;;;;-1:-1:-1;;;31841:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31907:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;:46;;-1:-1:-1;;31907:46:0;;;;;;;31969:41;;;;;31907:46;;31969:41;:::i;:::-;;;;;;;;31703:315;;;:::o;26777:::-;26934:28;26944:4;26950:2;26954:7;26934:9;:28::i;:::-;26981:48;27004:4;27010:2;27014:7;27023:5;26981:22;:48::i;:::-;26973:111;;;;-1:-1:-1;;;26973:111:0;;;;;;;:::i;7939:723::-;7995:13;8216:10;8212:53;;-1:-1:-1;8243:10:0;;;;;;;;;;;;-1:-1:-1;;;8243:10:0;;;;;;8212:53;8290:5;8275:12;8331:78;8338:9;;8331:78;;8364:8;;;;:::i;:::-;;-1:-1:-1;8387:10:0;;-1:-1:-1;8395:2:0;8387:10;;:::i;:::-;;;8331:78;;;8419:19;8451:6;8441:17;;;;;;-1:-1:-1;;;8441:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8441:17:0;;8419:39;;8469:154;8476:10;;8469:154;;8503:11;8513:1;8503:11;;:::i;:::-;;-1:-1:-1;8572:10:0;8580:2;8572:5;:10;:::i;:::-;8559:24;;:2;:24;:::i;:::-;8546:39;;8529:6;8536;8529:14;;;;;;-1:-1:-1;;;8529:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;8529:56:0;;;;;;;;-1:-1:-1;8600:11:0;8609:2;8600:11;;:::i;:::-;;;8469:154;;7464:157;-1:-1:-1;;;;;;7573:40:0;;-1:-1:-1;;;7573:40:0;7464:157;;;:::o;36689:589::-;36833:45;36860:4;36866:2;36870:7;36833:26;:45::i;:::-;-1:-1:-1;;;;;36895:18:0;;36891:187;;36930:40;36962:7;36930:31;:40::i;:::-;36891:187;;;37000:2;-1:-1:-1;;;;;36992:10:0;:4;-1:-1:-1;;;;;36992:10:0;;36988:90;;37019:47;37052:4;37058:7;37019:32;:47::i;:::-;-1:-1:-1;;;;;37092:16:0;;37088:183;;37125:45;37162:7;37125:36;:45::i;:::-;37088:183;;;37198:4;-1:-1:-1;;;;;37192:10:0;:2;-1:-1:-1;;;;;37192:10:0;;37188:83;;37219:40;37247:2;37251:7;37219:27;:40::i;28726:321::-;28856:18;28862:2;28866:7;28856:5;:18::i;:::-;28907:54;28938:1;28942:2;28946:7;28955:5;28907:22;:54::i;:::-;28885:154;;;;-1:-1:-1;;;28885:154:0;;;;;;;:::i;32583:799::-;32738:4;32759:15;:2;-1:-1:-1;;;;;32759:13:0;;:15::i;:::-;32755:620;;;32811:2;-1:-1:-1;;;;;32795:36:0;;32832:12;:10;:12::i;:::-;32846:4;32852:7;32861:5;32795:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32795:72:0;;;;;;;;-1:-1:-1;;32795:72:0;;;;;;;;;;;;:::i;:::-;;;32791:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33037:13:0;;33033:272;;33080:60;;-1:-1:-1;;;33080:60:0;;;;;;;:::i;33033:272::-;33255:6;33249:13;33240:6;33236:2;33232:15;33225:38;32791:529;-1:-1:-1;;;;;;32918:51:0;-1:-1:-1;;;32918:51:0;;-1:-1:-1;32911:58:0;;32755:620;-1:-1:-1;33359:4:0;32583:799;;;;;;:::o;38001:164::-;38105:10;:17;;38078:24;;;;:15;:24;;;;;:44;;;38133:24;;;;;;;;;;;;38001:164::o;38792:988::-;39058:22;39108:1;39083:22;39100:4;39083:16;:22::i;:::-;:26;;;;:::i;:::-;39120:18;39141:26;;;:17;:26;;;;;;39058:51;;-1:-1:-1;39274:28:0;;;39270:328;;-1:-1:-1;;;;;39341:18:0;;39319:19;39341:18;;;:12;:18;;;;;;;;:34;;;;;;;;;39392:30;;;;;;:44;;;39509:30;;:17;:30;;;;;:43;;;39270:328;-1:-1:-1;39694:26:0;;;;:17;:26;;;;;;;;39687:33;;;-1:-1:-1;;;;;39738:18:0;;;;;:12;:18;;;;;:34;;;;;;;39731:41;38792:988::o;40075:1079::-;40353:10;:17;40328:22;;40353:21;;40373:1;;40353:21;:::i;:::-;40385:18;40406:24;;;:15;:24;;;;;;40779:10;:26;;40328:46;;-1:-1:-1;40406:24:0;;40328:46;;40779:26;;;;-1:-1:-1;;;40779:26:0;;;;;;;;;;;;;;;;;40757:48;;40843:11;40818:10;40829;40818:22;;;;;;-1:-1:-1;;;40818:22:0;;;;;;;;;;;;;;;;;;;;:36;;;;40923:28;;;:15;:28;;;;;;;:41;;;41095:24;;;;;41088:31;41130:10;:16;;;;;-1:-1:-1;;;41130:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;40075:1079;;;;:::o;37579:221::-;37664:14;37681:20;37698:2;37681:16;:20::i;:::-;-1:-1:-1;;;;;37712:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;37757:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;37579:221:0:o;29383:382::-;-1:-1:-1;;;;;29463:16:0;;29455:61;;;;-1:-1:-1;;;29455:61:0;;;;;;;:::i;:::-;29536:16;29544:7;29536;:16::i;:::-;29535:17;29527:58;;;;-1:-1:-1;;;29527:58:0;;;;;;;:::i;:::-;29598:45;29627:1;29631:2;29635:7;29598:20;:45::i;:::-;-1:-1:-1;;;;;29656:13:0;;;;;;:9;:13;;;;;:18;;29673:1;;29656:13;:18;;29673:1;;29656:18;:::i;:::-;;;;-1:-1:-1;;29685:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;29685:21:0;-1:-1:-1;;;;;29685:21:0;;;;;;;;29724:33;;29685:16;;;29724:33;;29685:16;;29724:33;29383:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:607:1;;110:18;151:2;143:6;140:14;137:2;;;157:18;;:::i;:::-;206:2;200:9;279:2;256:17;;-1:-1:-1;;252:31:1;240:44;;286:4;236:55;306:18;;;326:22;;;303:46;300:2;;;352:18;;:::i;:::-;388:2;381:22;436;;;421:6;-1:-1:-1;421:6:1;473:16;;;470:25;-1:-1:-1;467:2:1;;;508:1;505;498:12;467:2;558:6;553:3;546:4;538:6;534:17;521:44;613:1;606:4;597:6;589;585:19;581:30;574:41;;;90:531;;;;;:::o;626:175::-;696:20;;-1:-1:-1;;;;;745:31:1;;735:42;;725:2;;791:1;788;781:12;806:198;;918:2;906:9;897:7;893:23;889:32;886:2;;;939:6;931;924:22;886:2;967:31;988:9;967:31;:::i;1009:274::-;;;1138:2;1126:9;1117:7;1113:23;1109:32;1106:2;;;1159:6;1151;1144:22;1106:2;1187:31;1208:9;1187:31;:::i;:::-;1177:41;;1237:40;1273:2;1262:9;1258:18;1237:40;:::i;:::-;1227:50;;1096:187;;;;;:::o;1288:342::-;;;;1434:2;1422:9;1413:7;1409:23;1405:32;1402:2;;;1455:6;1447;1440:22;1402:2;1483:31;1504:9;1483:31;:::i;:::-;1473:41;;1533:40;1569:2;1558:9;1554:18;1533:40;:::i;:::-;1523:50;;1620:2;1609:9;1605:18;1592:32;1582:42;;1392:238;;;;;:::o;1635:702::-;;;;;1807:3;1795:9;1786:7;1782:23;1778:33;1775:2;;;1829:6;1821;1814:22;1775:2;1857:31;1878:9;1857:31;:::i;:::-;1847:41;;1907:40;1943:2;1932:9;1928:18;1907:40;:::i;:::-;1897:50;;1994:2;1983:9;1979:18;1966:32;1956:42;;2049:2;2038:9;2034:18;2021:32;2076:18;2068:6;2065:30;2062:2;;;2113:6;2105;2098:22;2062:2;2141:22;;2194:4;2186:13;;2182:27;-1:-1:-1;2172:2:1;;2228:6;2220;2213:22;2172:2;2256:75;2323:7;2318:2;2305:16;2300:2;2296;2292:11;2256:75;:::i;:::-;2246:85;;;1765:572;;;;;;;:::o;2342:369::-;;;2468:2;2456:9;2447:7;2443:23;2439:32;2436:2;;;2489:6;2481;2474:22;2436:2;2517:31;2538:9;2517:31;:::i;:::-;2507:41;;2598:2;2587:9;2583:18;2570:32;2645:5;2638:13;2631:21;2624:5;2621:32;2611:2;;2672:6;2664;2657:22;2611:2;2700:5;2690:15;;;2426:285;;;;;:::o;2716:266::-;;;2845:2;2833:9;2824:7;2820:23;2816:32;2813:2;;;2866:6;2858;2851:22;2813:2;2894:31;2915:9;2894:31;:::i;:::-;2884:41;2972:2;2957:18;;;;2944:32;;-1:-1:-1;;;2803:179:1:o;2987:666::-;;;3134:2;3122:9;3113:7;3109:23;3105:32;3102:2;;;3155:6;3147;3140:22;3102:2;3200:9;3187:23;3229:18;3270:2;3262:6;3259:14;3256:2;;;3291:6;3283;3276:22;3256:2;3334:6;3323:9;3319:22;3309:32;;3379:7;3372:4;3368:2;3364:13;3360:27;3350:2;;3406:6;3398;3391:22;3350:2;3451;3438:16;3477:2;3469:6;3466:14;3463:2;;;3498:6;3490;3483:22;3463:2;3557:7;3552:2;3546;3538:6;3534:15;3530:2;3526:24;3522:33;3519:46;3516:2;;;3583:6;3575;3568:22;3516:2;3619;3611:11;;;;;3641:6;;-1:-1:-1;3092:561:1;;-1:-1:-1;;;;3092:561:1:o;3658:257::-;;3769:2;3757:9;3748:7;3744:23;3740:32;3737:2;;;3790:6;3782;3775:22;3737:2;3834:9;3821:23;3853:32;3879:5;3853:32;:::i;3920:261::-;;4042:2;4030:9;4021:7;4017:23;4013:32;4010:2;;;4063:6;4055;4048:22;4010:2;4100:9;4094:16;4119:32;4145:5;4119:32;:::i;4186:482::-;;4308:2;4296:9;4287:7;4283:23;4279:32;4276:2;;;4329:6;4321;4314:22;4276:2;4374:9;4361:23;4407:18;4399:6;4396:30;4393:2;;;4444:6;4436;4429:22;4393:2;4472:22;;4525:4;4517:13;;4513:27;-1:-1:-1;4503:2:1;;4559:6;4551;4544:22;4503:2;4587:75;4654:7;4649:2;4636:16;4631:2;4627;4623:11;4587:75;:::i;4673:190::-;;4785:2;4773:9;4764:7;4760:23;4756:32;4753:2;;;4806:6;4798;4791:22;4753:2;-1:-1:-1;4834:23:1;;4743:120;-1:-1:-1;4743:120:1:o;4868:259::-;;4949:5;4943:12;4976:6;4971:3;4964:19;4992:63;5048:6;5041:4;5036:3;5032:14;5025:4;5018:5;5014:16;4992:63;:::i;:::-;5109:2;5088:15;-1:-1:-1;;5084:29:1;5075:39;;;;5116:4;5071:50;;4919:208;-1:-1:-1;;4919:208:1:o;5132:1532::-;;5394:6;5388:13;5420:4;5433:51;5477:6;5472:3;5467:2;5459:6;5455:15;5433:51;:::i;:::-;5547:13;;5506:16;;;;5569:55;5547:13;5506:16;5591:15;;;5569:55;:::i;:::-;5715:13;;5646:20;;;5686:3;;5792:1;5777:17;;5813:1;5849:18;;;;5876:2;;5954:4;5944:8;5940:19;5928:31;;5876:2;6017;6007:8;6004:16;5984:18;5981:40;5978:2;;;-1:-1:-1;;;6044:33:1;;6100:4;6097:1;6090:15;6130:4;6051:3;6118:17;5978:2;6161:18;6188:110;;;;6312:1;6307:332;;;;6154:485;;6188:110;-1:-1:-1;;6223:24:1;;6209:39;;6268:20;;;;-1:-1:-1;6188:110:1;;6307:332;6343:39;6375:6;6343:39;:::i;:::-;6404:3;6420:169;6434:8;6431:1;6428:15;6420:169;;;6516:14;;6501:13;;;6494:37;6559:16;;;;6451:10;;6420:169;;;6424:3;;6620:8;6613:5;6609:20;6602:27;;6154:485;-1:-1:-1;6655:3:1;;5364:1300;-1:-1:-1;;;;;;;;;;;5364:1300:1:o;6669:205::-;6869:3;6860:14::o;6879:203::-;-1:-1:-1;;;;;7043:32:1;;;;7025:51;;7013:2;6998:18;;6980:102::o;7087:490::-;-1:-1:-1;;;;;7356:15:1;;;7338:34;;7408:15;;7403:2;7388:18;;7381:43;7455:2;7440:18;;7433:34;;;7503:3;7498:2;7483:18;;7476:31;;;7087:490;;7524:47;;7551:19;;7543:6;7524:47;:::i;:::-;7516:55;7290:287;-1:-1:-1;;;;;;7290:287:1:o;7582:635::-;7753:2;7805:21;;;7875:13;;7778:18;;;7897:22;;;7582:635;;7753:2;7976:15;;;;7950:2;7935:18;;;7582:635;8022:169;8036:6;8033:1;8030:13;8022:169;;;8097:13;;8085:26;;8166:15;;;;8131:12;;;;8058:1;8051:9;8022:169;;;-1:-1:-1;8208:3:1;;7733:484;-1:-1:-1;;;;;;7733:484:1:o;8222:187::-;8387:14;;8380:22;8362:41;;8350:2;8335:18;;8317:92::o;8414:221::-;;8563:2;8552:9;8545:21;8583:46;8625:2;8614:9;8610:18;8602:6;8583:46;:::i;8640:344::-;8842:2;8824:21;;;8881:2;8861:18;;;8854:30;-1:-1:-1;;;8915:2:1;8900:18;;8893:50;8975:2;8960:18;;8814:170::o;8989:407::-;9191:2;9173:21;;;9230:2;9210:18;;;9203:30;9269:34;9264:2;9249:18;;9242:62;-1:-1:-1;;;9335:2:1;9320:18;;9313:41;9386:3;9371:19;;9163:233::o;9401:414::-;9603:2;9585:21;;;9642:2;9622:18;;;9615:30;9681:34;9676:2;9661:18;;9654:62;-1:-1:-1;;;9747:2:1;9732:18;;9725:48;9805:3;9790:19;;9575:240::o;9820:402::-;10022:2;10004:21;;;10061:2;10041:18;;;10034:30;10100:34;10095:2;10080:18;;10073:62;-1:-1:-1;;;10166:2:1;10151:18;;10144:36;10212:3;10197:19;;9994:228::o;10227:352::-;10429:2;10411:21;;;10468:2;10448:18;;;10441:30;10507;10502:2;10487:18;;10480:58;10570:2;10555:18;;10401:178::o;10584:342::-;10786:2;10768:21;;;10825:2;10805:18;;;10798:30;-1:-1:-1;;;10859:2:1;10844:18;;10837:48;10917:2;10902:18;;10758:168::o;10931:400::-;11133:2;11115:21;;;11172:2;11152:18;;;11145:30;11211:34;11206:2;11191:18;;11184:62;-1:-1:-1;;;11277:2:1;11262:18;;11255:34;11321:3;11306:19;;11105:226::o;11336:349::-;11538:2;11520:21;;;11577:2;11557:18;;;11550:30;11616:27;11611:2;11596:18;;11589:55;11676:2;11661:18;;11510:175::o;11690:408::-;11892:2;11874:21;;;11931:2;11911:18;;;11904:30;11970:34;11965:2;11950:18;;11943:62;-1:-1:-1;;;12036:2:1;12021:18;;12014:42;12088:3;12073:19;;11864:234::o;12103:420::-;12305:2;12287:21;;;12344:2;12324:18;;;12317:30;12383:34;12378:2;12363:18;;12356:62;12454:26;12449:2;12434:18;;12427:54;12513:3;12498:19;;12277:246::o;12528:406::-;12730:2;12712:21;;;12769:2;12749:18;;;12742:30;12808:34;12803:2;12788:18;;12781:62;-1:-1:-1;;;12874:2:1;12859:18;;12852:40;12924:3;12909:19;;12702:232::o;12939:405::-;13141:2;13123:21;;;13180:2;13160:18;;;13153:30;13219:34;13214:2;13199:18;;13192:62;-1:-1:-1;;;13285:2:1;13270:18;;13263:39;13334:3;13319:19;;13113:231::o;13349:351::-;13551:2;13533:21;;;13590:2;13570:18;;;13563:30;13629:29;13624:2;13609:18;;13602:57;13691:2;13676:18;;13523:177::o;13705:356::-;13907:2;13889:21;;;13926:18;;;13919:30;13985:34;13980:2;13965:18;;13958:62;14052:2;14037:18;;13879:182::o;14066:400::-;14268:2;14250:21;;;14307:2;14287:18;;;14280:30;14346:34;14341:2;14326:18;;14319:62;-1:-1:-1;;;14412:2:1;14397:18;;14390:34;14456:3;14441:19;;14240:226::o;14471:408::-;14673:2;14655:21;;;14712:2;14692:18;;;14685:30;14751:34;14746:2;14731:18;;14724:62;-1:-1:-1;;;14817:2:1;14802:18;;14795:42;14869:3;14854:19;;14645:234::o;14884:356::-;15086:2;15068:21;;;15105:18;;;15098:30;15164:34;15159:2;15144:18;;15137:62;15231:2;15216:18;;15058:182::o;15245:405::-;15447:2;15429:21;;;15486:2;15466:18;;;15459:30;15525:34;15520:2;15505:18;;15498:62;-1:-1:-1;;;15591:2:1;15576:18;;15569:39;15640:3;15625:19;;15419:231::o;15655:411::-;15857:2;15839:21;;;15896:2;15876:18;;;15869:30;15935:34;15930:2;15915:18;;15908:62;-1:-1:-1;;;16001:2:1;15986:18;;15979:45;16056:3;16041:19;;15829:237::o;16071:397::-;16273:2;16255:21;;;16312:2;16292:18;;;16285:30;16351:34;16346:2;16331:18;;16324:62;-1:-1:-1;;;16417:2:1;16402:18;;16395:31;16458:3;16443:19;;16245:223::o;16473:344::-;16675:2;16657:21;;;16714:2;16694:18;;;16687:30;-1:-1:-1;;;16748:2:1;16733:18;;16726:50;16808:2;16793:18;;16647:170::o;16822:413::-;17024:2;17006:21;;;17063:2;17043:18;;;17036:30;17102:34;17097:2;17082:18;;17075:62;-1:-1:-1;;;17168:2:1;17153:18;;17146:47;17225:3;17210:19;;16996:239::o;17240:408::-;17442:2;17424:21;;;17481:2;17461:18;;;17454:30;17520:34;17515:2;17500:18;;17493:62;-1:-1:-1;;;17586:2:1;17571:18;;17564:42;17638:3;17623:19;;17414:234::o;17653:420::-;17855:2;17837:21;;;17894:2;17874:18;;;17867:30;17933:34;17928:2;17913:18;;17906:62;18004:26;17999:2;17984:18;;17977:54;18063:3;18048:19;;17827:246::o;18078:177::-;18224:25;;;18212:2;18197:18;;18179:76::o;18260:129::-;;18328:17;;;18378:4;18362:21;;;18318:71::o;18394:128::-;;18465:1;18461:6;18458:1;18455:13;18452:2;;;18471:18;;:::i;:::-;-1:-1:-1;18507:9:1;;18442:80::o;18527:120::-;;18593:1;18583:2;;18598:18;;:::i;:::-;-1:-1:-1;18632:9:1;;18573:74::o;18652:168::-;;18758:1;18754;18750:6;18746:14;18743:1;18740:21;18735:1;18728:9;18721:17;18717:45;18714:2;;;18765:18;;:::i;:::-;-1:-1:-1;18805:9:1;;18704:116::o;18825:125::-;;18893:1;18890;18887:8;18884:2;;;18898:18;;:::i;:::-;-1:-1:-1;18935:9:1;;18874:76::o;18955:258::-;19027:1;19037:113;19051:6;19048:1;19045:13;19037:113;;;19127:11;;;19121:18;19108:11;;;19101:39;19073:2;19066:10;19037:113;;;19168:6;19165:1;19162:13;19159:2;;;-1:-1:-1;;19203:1:1;19185:16;;19178:27;19008:205::o;19218:380::-;19303:1;19293:12;;19350:1;19340:12;;;19361:2;;19415:4;19407:6;19403:17;19393:27;;19361:2;19468;19460:6;19457:14;19437:18;19434:38;19431:2;;;19514:10;19509:3;19505:20;19502:1;19495:31;19549:4;19546:1;19539:15;19577:4;19574:1;19567:15;19431:2;;19273:325;;;:::o;19603:135::-;;-1:-1:-1;;19663:17:1;;19660:2;;;19683:18;;:::i;:::-;-1:-1:-1;19730:1:1;19719:13;;19650:88::o;19743:112::-;;19801:1;19791:2;;19806:18;;:::i;:::-;-1:-1:-1;19840:9:1;;19781:74::o;19860:127::-;19921:10;19916:3;19912:20;19909:1;19902:31;19952:4;19949:1;19942:15;19976:4;19973:1;19966:15;19992:127;20053:10;20048:3;20044:20;20041:1;20034:31;20084:4;20081:1;20074:15;20108:4;20105:1;20098:15;20124:127;20185:10;20180:3;20176:20;20173:1;20166:31;20216:4;20213:1;20206:15;20240:4;20237:1;20230:15;20256:133;-1:-1:-1;;;;;;20332:32:1;;20322:43;;20312:2;;20379:1;20376;20369:12

Swarm Source

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