ETH Price: $3,026.75 (+4.27%)

Token

Project Sandlot (PoB)
 

Overview

Max Total Supply

443 PoB

Holders

157

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
4 PoB
0x17c3afad88c016d1807efb7e7528e5bcfda70cef
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ProjectSandlot

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-02
*/

// SPDX-License-Identifier: GPL-3.0
// File: @openzeppelin/contracts/utils/Strings.sol


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

pragma solidity ^0.8.0;

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

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

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

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

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

// File: @openzeppelin/contracts/utils/Context.sol


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

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/access/Ownable.sol


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

// File: @openzeppelin/contracts/utils/Address.sol


// 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.
     *
     * [IMPORTANT]
     * ====
     * 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].
     *
     * IMPORTANT: 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);
            }
        }
    }
}

// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol


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

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


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

pragma solidity ^0.8.0;

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

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


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

pragma solidity ^0.8.0;


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

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol


// 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;
}

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol


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

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol


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

// File: @openzeppelin/contracts/token/ERC721/ERC721.sol


// 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 {}
}

// File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol


// 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();
    }
}

// File: contracts/ProjectSandlot.sol



pragma solidity >=0.7.0 <0.9.0;



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

  string public baseURI;
  string public baseExtension = ".json";
  string public notRevealedUri;
  uint256 public cost = 0.042 ether;
  uint256 public maxSupply = 4200;
  uint256 public maxMintAmount = 5;
  uint256 public nftPerAddressLimit = 5;
  bool public paused = true;
  bool public revealed = false;
  bool public onlyWhitelisted = true;
  address[] public whitelistedAddresses;
  mapping (address => uint256) public addressMintedBalance;

  constructor(
    string memory _name,
    string memory _symbol,
    string memory _initBaseURI,
    string memory _initNotRevealedUri
  ) ERC721(_name, _symbol) {
    setBaseURI(_initBaseURI);
    setNotRevealedURI(_initNotRevealedUri);
  }

  // internal
  function _baseURI() internal view virtual override returns (string memory) {
    return baseURI;
  }

  // public
  function mint(uint256 _mintAmount) public payable {
    require(!paused, "The contract is currently paused");
    uint256 supply = totalSupply();
    require(_mintAmount > 0, "You need to mint at least 1 NFT");
    require(_mintAmount <= maxMintAmount, "Max mint amount per session exceeded");
    require(supply + _mintAmount <= maxSupply, "Max NFT limit exceeded");

    if (msg.sender != owner()) {
        if (onlyWhitelisted == true) {
            require(isWhitelisted(msg.sender), "User is not whitelisted");
            uint256 ownerMintedCount = addressMintedBalance[msg.sender];
            require(ownerMintedCount + _mintAmount <= nftPerAddressLimit, "Max NFT per address exceeded");
        }
        require(msg.value >= cost * _mintAmount, "Insufficient Funds");
    }

    for (uint256 i = 1; i <= _mintAmount; i++) {
        addressMintedBalance [msg.sender]++;
        _safeMint(msg.sender, supply + i);
    }
  }

  function isWhitelisted(address _user) public view returns (bool) {
      for(uint256 i = 0; i < whitelistedAddresses.length; i++) {
          if (whitelistedAddresses[i] == _user) {
              return true;
          }
      }
      return false;
  }

  function walletOfOwner(address _owner)
    public
    view
    returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory tokenIds = new uint256[](ownerTokenCount);
    for (uint256 i; i < ownerTokenCount; i++) {
      tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
    }
    return tokenIds;
  }

  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );
    
    if(revealed == false) {
        return notRevealedUri;
    }

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

  //only owner
  function reveal() public onlyOwner {
      revealed = true;
  }  
  
  function setNFTPerAddressLimit(uint256 _limit) public onlyOwner(){
    nftPerAddressLimit = _limit;
  }
  
  function setCost(uint256 _newCost) public onlyOwner() {
    cost = _newCost;
  }

  function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner() {
    maxMintAmount = _newmaxMintAmount;
  }
  
  function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner {
    notRevealedUri = _notRevealedURI;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }
  
  function setOnlyWhitelisted(bool _state) public onlyOwner {
    onlyWhitelisted = _state;
  }

 function whitelistUsers(address[] calldata _users) public onlyOwner {
    delete whitelistedAddresses;
    whitelistedAddresses = _users;
  }
 

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

/**
["0x801aE573Cf64A3733d51DEc4292464778020CEC6","0xE39f7D36Bd272302661551bEEa94C054000A5C73","0x3d771D6E60Ebb5A719698B57355902cDF92E0CA6","0x7333aAb680200bEe460F4Fc77d3134131EB23A36","0x9e156ab53e2801084145e50ac85f0701fd6ba7cc","0xc97b85ffdf68f86557408f2a7888f3464ac1fe93","0x4f68817763FE005da83c6e50A15f91772eb60DCb","0xaEA329e2B5fCC39884132050c632D9A03bA86F28","0x86409963CE24d4d22B11AB0530Ba992F54C9bC95","0x864b26bf0951910975a6de0bbce7be0842d6470d","0xc3394a64b9071e415B1AdD3c4944DCB5Ec93936D","0xCdB5A26B43e3c7A4d16e0F33a5410963700713EA","0xF4b3fB72dEA3569548697505e7A6f133BC1A6b54","0x9e156ab53e2801084145e50ac85f0701fd6ba7cc","0x67c772d5bc77ea0c32a1bfb9881950ece11396ce","0x1d5f2d9ce618bd6596bcaf37d843a35371033936","0x9E3c116AAAF1b453fbf6a5A71ddA7A907E38BD39","0x166876d8188b736E8F596099641Fb54c2Ca9D020","0xFA0FeE5CDC732ea135ba99Be35990D2C72006e40","0x1B6697f4817B9806063Fe0c4B04F6a2026EE5A97","0x55A83a0c8731a23F4d3B8FDf7E9833092FE59BA5","0x6E1B1548960711Cb7d2FCc41C97B3D93E6452974","0x5E9f96ceC38B684BeE7634244a4679Ca77df4FAE","0xFc0D94352de289174B0F03a45c532E5977eb5a1f","0x1C9c8d9429A9c113EC9Ab1f228bd15dE271e1757","0x39AfaF2431b33f8812E50FC45357022db7d3dAD9","0xE825dcD630aB478ccAC708a8b1f6Ed5Ee7D2901E","0x700BffCeF206B488f6bdf203CEa8C896ED112AC8","0xa5442b7eEBe30Ff0c72d8aaF3c03E9c19271FF12","0x68C9066e14967dC72e3Fc62270209d8FEA3a719c","0x3d95b53fbdF1F390Dd28CEa74cE519659Ccd92b4","0xa9298aa95B72C3aF90ce500024918230C17294A3","0xa981de1e47Eb42603D944F4e3Fc64F49787fc9c9","0x504D086811Db2B720cd51443F2b3d497743086Df","0x9a75a30ebD0fCe2ffa00445007bA530E334066c7","0x765022C21943cfCD76AE0db5e545EBB6f8122394","0x3Ce470B8Fe17348533Aea293a4E97E6a57a131fC","0x5D3ab04FBD50F0DB3D0F13e9C22F7E9e0431A0b8","0x8941F736d02646cb45A23b85B1f3310734841308","0x93a37FafeA759585B0D616bd06b384544E03E17D","0x5838180e009fe46878a127f5f8e20e572276f73d","0x37e1843574cc8d750c71275602a4e001a6e0f492","0x38d3a709357f0d937456b3ae66cf307ee43d23c4","0xaA5Bc6A355089899D82CEB417f914022Fc0FA9cb","0xc447086AE080b9Bde4c369E6bBCd668a247E9fb0","0x09994f7f7108e358b0d485ea5bd130948692f29d","0x48f46281777fb384b89EcDFBca3283ba304d6207","0x45530fe88321fF6e6F1Af604901bEcb8DfB8756B","0xe80d75e8fa54a77188d712e70ddaef0a81c41d29","0x71d2A5913d062816CB2e16947642bF40A32eAD61","0xDFFdf1262377f46866DFEAC3E9598e85b5388389","0x8d19Bc89eB4d694FbfE5eDF35FbeB18FC82fba85","0x596aCd26e6381Ccee76d8A012dBE85E18DE30f8B","0xaF612f60a7dBBDf3487B051281b2cdd8090de060","0x59F3B5B3A2a8AAC38975C233C55dF1cE7743891E","0xbb63aE1f22d66628E341D3a30f784B4292cB2a13","0x59032df1c9d4694488468B6C7742B0b621EADC0D","0xb8cbC55eAcE480F7A838c3a29c4FcfA8aB4163c7","0x3271160Da8311F3dD142964d09E2285484eF95B8","0xbDBBBbB06ded0514Ee8155edd434d6697f66B111","0x7905E599c18BAa403f01d90f11A097470aC306c6","0x64e06c110921052A6eE90a30D92F5133783eb019","0x3a4bBC8222fc21b82e3465f59b6e37BC52392160","0x58a532DDFf8fDE054603a683358a98e98007CcB1","0x6536FeD97dC52568D87c6491ddCbE77643991A7f","0x32492340ce379Da400dE9Db18E49F09c2d9503Ae","0x031134288bB3d4030ACA276A56Af290dC104B3b3","0x2a90Db4494fbA546fCbb3d1F9e7E307021A507c9","0x4CD39A3Ab0307B51AeeF3335Fc6259f4181E179a","0xd4b8C8e98386BcFdc52cd71835e21864ab97Ec76","0x8668F8B1542afaF8FF314E763e729CCe128Cc535","0xFaE6F92378A5b23fcccc19D021F2B2E586F00870","0x7ddb9F9e242b5C6beD3468542d8948fC0Dc68a86","0x4e6532bA8773e6d602DE8dc1ef2DF7cb1B97BD96","0x7EF30E206d0aF8681189dF0E45d89BF9660F7d17","0x47e2d2ef5d8cd3bffad8eb01b793e7de30e62345","0x9f9c17cd2Ed0a19cF4c77Da78559eF16e09EF4Db","0xC9598d75d4E1cEb96714d1AD1474dA5f4Ab52bB4","0x42BB83548AeeC60cee878d36D1110DAff479bF4E","0x5A9ddBBAcE01340a0095D5406d086929168d5C15","0xc97b85ffdf68f86557408f2a7888f3464ac1fe93","0x8d2ed328F87Ad0400641999C0Ef8157e4d54a6df","0xEc744006A432Aefd90127Ef36e2283A92ce2187F","0x6dB6c702fA5E74BDf21794504B3F35d21B205A42","0x1A621CE0b8a22335efF6FB6E17EbE9512c62967F","0x51e25ffA17A7f4b39057B86e4Ff160281C798fAD","0x7166bB19dbdfCA1587A5b245b73199B54d2678A6","0x5Ddc27447F1Df6184c9f13B935335b31367a4fe0","0x7Ce0d3E1D44EE9fD85Bc4bF15A8Ede0E101e2297","0xB67770530650CeE2f0e2862b50408D5B3d18F6BF","0x194b7eaef8d1876748f8b3a880b592d8da93a7c1","0x04295BA1d19e601d69f4bbdB9507F21E8590b8c1","0x957120b809aA71f4c74d5DAd406Aaf01C8994DA0","0xff6e54fce4ca04b21cdbad1a08fec7826fe0e5b5","0xa753b6f22fd72357edd50daf248a641c28bc2ac4","0x62b29c8365ea81E3788a78a0b5BBfcEC7E2174E6","0xab71685234f0807A57B33b3b55e0cda120d7A3cc","0xc5839F9098975e90B2560f76db18C659412052E1","0x8091260ae8d1AF378e57497a013da6607a5dc6Af","0x30F04A9A124972D91c9A31a64b25049288ed27D7","0x7A8bd70101F51908d83A8eff785f167f7142aA07","0x485cf6EE90a76269b40faCfB319BFCAA42CBE28B","0xEA0C03f67D457660Aef3F917013DE93cD760C4c2","0x3e1b4f49837c73849812af57abbb1ec570dc5bc2","0x362b28743eC677f56e3Bc8de1067fAb4Aeb31F58","0x0Bc7De18782B662a686822566D776e1d6139b016","0x55E71FC1a5A68ab2E420368147a210027B1e3b9F","0xAC21C8524f3E2248d85dfE1fFeAc0F716F04A91d","0x7775a0e8b0de121aB5E0eB56b53498e86814a2f5","0x2414B9308b2a468FC7DE7c3e0e632613e4c55AcA","0x2941b21c352d3d1201079284230cf15ddad590d2","0x05eE8576807ed52138c5b2983e33539bF104C264","0xD35cA26A6e25F954EC3F8b4C7e9552B6c7Ff9EF4","0xC3f0496B59F720a00c0a31B5114ac0698fdF0896","0xa0b87e0d3e301e4de876a2fe2fc1a72a71d9efce","0xC469623A43a420664E8F5e2c5D1B048e46F507ED","0xC365B481cD9c3a980ee92B3ff4C754150A34f2Ae","0x43C59a0B50bf8893af1f9aA1Ba3888d2d0b7c898","0x75F142Cbe6715A0c9b305584543AB7f9B835cCaa","0xf2441a4dad2060434ca5a9c2d053352e63bb72bf","0xD3d6b9dA01FE75522A0BED1301F207CF8DeB0602","0x6be8EAc932C0e0b95040f1ccf7209A37331d4109","0x25A304E4d1eAeE5C2eD3381F9D7ccD102b5DD24C","0xfaE7604CFB91B4ADCCB27177065Ba00eA622bdd3","0xe97c8a65bfaf3db6491181d8aa1dcca6782b4e85","0x8a65e7699c853c1dbcc910b09e61e1f8359ee5d9","0x65dABfe189e7d6Bd5dE97EE1a88d3cBEb319a9E3","0x754C6EF6e5cFE7D740B3375FB3d0a7a98b2A6b0e","0xb3ec944aC209aE896378F6d133A42aCA07365069","0x7886DBA2263D1fCF912199Fd064D591ed40BA6BC","0x061b6e995246c30c32f403639f72224d0a06a25f","0x7b5453c76D508208774e2e5a78f68758E9f770b5","0x3d6F52E22eC933F848CAdfa1DEb0464B4035758E","0xc838a6237dba14629212276cc28f017929a096fb","0x560bDF9419DEc9Fd66ff1FBa0F91D669bE116952","0xb0abd5e82d81ad7a69d0cfead5a8e0d133717fb5","0x1F2cdd73135473716F3408b25B6fe50b067f5a1F","0xc91338f3312b3540edDBF62F726E5780e4f421Ea","0xC60972c01325292eF315cb0Db78C2B07B0Dff273","0x50e7811c95698af9ad4b630351c0eb94627383a7","0x8d8ccb957763afaecba6a906665ab1e237d99fd0","0x7bdc7389A344Fb92C45d2a059b2D4C4F5B6eeADE","0x99eE4CC2a252BCA34578225EBc603A6f0978Bd78","0xceEf176dCfD70408160663da7015d9F1E48a8B49","0x8C3c2C2e7719a74cD42D53218b9E6E8295B3c584","0x8c60c18820BCa32e75bB96322292D4A85d6bfE31","0x285Acae09291CFBc7980619aA0c0166a0dE39bA4","0x82515A0B21BA2BF8C711050AB6F0E1522B03d12e","0x1D7fcc8697faF3ffBFc3797B5707E709758F4333","0xf5BECB24d4cC6F910D26218B05ba6C8B7E7F4052","0x8044D05D8B87213A92a6D4DdC1A212c1BfD1d818","0x9605879A4Cd2c4307825780E14986a04604fE68D","0x50052c2F571b36e68371958D01534eBc98c8f91B","0x17C3aFaD88c016d1807eFB7E7528E5bCFDa70CEf","0x147DffA9e729DAa9054c296C163Df0c9F937C01d","0x1b8f0495f81F9cA0a48d3839Dc94e54284B42705","0x6F69242222a16781294A257d1fd399B8551Ce468","0x8EB8b0787e019EBa0b4c516a9A0054d884Fa3A06","0xbDB5C7752a36b60578d306DD4D6b9Ba93723Bb6e","0xF30052A6217aefDB1624B9745ebCEc1EFDF8c20E","0xbb63b721ba41969bc4d740d7ff5c260290894122","0xe9aB6182a9991CcDbD7a03A42057670a4ebbb464","0xb60253BbF2614c00F99bC100aFD0CA0BE5215cA9","0xa88C37d634679BC892AA3d5c8B7a28604Ab3Af8e","0xD4a681dfc8652aDf509599267b6C03ad11e0Ea1d","0xC46ed81C2502bF6751B692CdeA3Da75Da800A532","0x3D6e177791F02298e29516dd95085Cb1200C2B47","0xf0585696abA6BE68E4f99473607C6db0CDD08FAE","0x9f062cf88456ac60f873a55dd95ea81d1d87b548","0x6563Af1eD39167F9655d31380b7765BdB3957099","0xa91efC789Aec492C37325535764a56334E3269Af","0xaD31d108723a2d0a4a05E1A5F2df8719Ba297834","0x74aCeC96591cF1852f1836F7b65C67D0742b1907","0x8f5212b02d8460abc259565764039bf042680a53","0x7c4d66195c8255b418d41b1b2e83309162ac806f","0x021199ba49F344A3CbfB0D88d086d5A561e532DC","0xa4BFc58c2237Dd448ac1dF6D7d44978eced962a1","0xeFAA0ab976e8628e19B1bAC6B2334E1D6AdA789b","0x7ebA3Fe8f6ccDbd8c81632E8d1b29C6cb3223258","0xC4DaF64B51b16C25a7015F878EcD9609a295E19B","0xcfEB94769C14949334f1d70DBd720D4e905e6C14","0x63633B39523DF3aC2d64b355C5B18B3402035Bd9","0x7f107debb79b15aeBecA39c584aA71B22871f560","0x0A133944166Fdb5dAfa29534a33D6c7709885516","0x3abD78aAbBdC35984Ec7823BD51e77a1Cbfe2E73","0x4ae3fa85BF419FB30Cd5bA1b0604AD295914219B","0x1AC4773d9A0B626eA14a152f6e4211588935E49e","0x8454bB21aFF9c6108c19571C2b2cc3b8cEEb1850","0x26504c6C7aAf26fF1ff69B7025A25EBba2610137","0x36011fFea941cFa6d8fA8c096270375E42804129","0x37bf0519f152a3aab7f13fbd0b92486e9f5d6a35","0x3211e1b58164F56Fd5fC5dD9e108aa34f1c298CC","0xEe4ca246Eee0C11cF98D9534f5B8262f058B1d5f","0x7627657ec44B108434b1E4aA54e1Bb47f4eC049e","0xa15fd1b0289e6fc90c152cf2450e6b6d2f419b77","0x3F036A9755f16F9fE548D92f08DB36ce9CC1F9E3","0xE9483b66F9775B7B02a62E1D9e09836B6d2a4b3d","0x8d48aD9cB1289f21279402b4CBEC4c54eB6DB7e6","0xf947881415a63cc186fc3706e615a8bbdb87c912","0x294241337c0c09ea33bb0aa9502932b4cbda704c","0x361613Da3F6082F650f2152C49eCd5BF2901bF12","0x3d844c391e7806157aE42D653d1D7E2919926a61","0xe27247481ca9AAA5518da004e030D1fa6C465986","0xcc160544e55b2E9d2b30d3FF32320982712f7639","0x5D3CAAc80F527D5Df48bB66e46086f2B36BC28A8","0x21a002acfac6a3433f313ed5622cab05ab5499f0","0x0845e294019E41662E3292426A8CA0F71b54Fb8A","0xc07fB98300C41120E5Bb3F4641e6Eb82f9DC0aFD","0x628ED6016197Cd6Ff0b3a8c285BA4AA0744c20aC","0xdb6428c5fa405b9ba438bba5c1c2c4f099684004","0x21A05ef2659993D556EBaD4bd6dfaC27c50EC863","0xa151A5fD66C3838B8D295da4Da60d96c6162821f","0x55D9FC8D5f84Cf151D9578C6713A0c0eC35E0e5f","0x00939Db1c2ec7582b56A3e89dCc6D595e252a6B9","0xe4D876257c2Ad0857337234d56dF5298C12D1132","0xeCa5D0b717FbC513802Bc809b2F4192EEC1821c6","0xE8c6a4CA74c43445a75330556Fac7e3f1E06E3c5","0x9e58DB24680F47d932a7e0D60a55E053425ED387","0x3e486DaE19407c7772030a0fC3Aa689ED92B8c49","0x64517d6c504D02F50089cc30E5F6A2E7280964A5","0x61d022513732Cb9F034D5da7DA7811D9353f1B78","0x4b2f318c82D1A94a01a645233Fcf01F5E811Db4D","0x0F1265b60C1ed1a21F689ebC1E52cD3C24724649","0xC0A779ef7C443A3A7C8E03B49ea97372f6D32569","0xccCF5493c75860d998b31bE68B8aC188a30FC0f9",
"0xAd79ae126b2644C5B8C0b0C1610Fc24bb4828DfF","0x9aA55526AF86a95f477A1940Ab9B296AA5B5Df08","0xd683a7e18b9a2f2A55BdF58b4C06F46f2dDaEB53","0x441311060454adc0a569f1fc425ec6a5741003f3","0xb39a7f6bfb506236bb1049c9c2404e845fcb455c","0x08646201768fcd19b58a34CA012b5BaD75db3870","0xef486d5B9f4859107c1795E26f0035718E0b09a3","0x4ebe485c1df060f6fc6e3c3b200ebc21fe11a94d","0x8eC6e0f6239703604C344Bd6755e1C7b6a4d5988","0x32bfac34fbc1fc356c79d07971e7f245ec1d9bca","0x4F97066b22875CC666739928c48C328A39d2C9B7","0x54ca169cD926E0284a08f0777068D88D51670A36","0x840baA2595f45c3080eAf48B4bfeaD40Ccd8aa23","0x0a89e15EFCE55918a8Db221b6DD7Ae2516D3d77f","0xdd33f858213217a03ca150633da5dfc8f6d52850","0x9a0527f463C66FaF4d16f80607DFCd94075D88D7","0x762140ccde6372e9ebf99da144e78331c3936931","0x770C9AC2E2710C82fBab6049E97DAC7f17015E6a","0x823EF5455faCBE1e26A072714bEdd5071c01d27a","0x4f4b83f5157960fa566b5ae8a3dbd720d2e119db","0x38CC4b2eD70f9D44aEBfB48e84cE98ed42741F75","0x6f20Ca4ea7147D238df7ebF16cF7Bd55cA849573","0x9b930C9289F4172Ade3Ac4eA0bc508c3eaeD38Ca","0x136f8e2e4de3F18fAd5aA9Ef6167A3aBD748D8c6","0x859eAcdD7fC775c0F1ba12CdCc1e88ec6C085e94","0x4f9499bff005309fa809e5557f32a35cf31b1e98","0xe5897d53954e8e7b0491c52c0b6fb967a117aa42","0x1299ebbd37b485dcc1fc2ec720671cb97f65a069","0xe39f7d36bd272302661551beea94c054000a5c73","0xeDCdDCd24673C97b6DA5508Bf918Ab82eDb18E6a","0x20b997184e5C0c11f7a67F313Cc989d496B63774","0x83d98b8BdeEF5CEAbEe93d37075D63c634fF1745","0x0fc4c74ecc85169dd1bc87d088f06c586b6d78b3","0x0A67595121228690D7a550ae0ab9F395368aCfc5","0xde7B18949997c0B41F8dE86987278c23d5242d85","0xD29BdaC3BcAA96b2F2E60675d4f0F2a3Bec1551e","0xfbac3516677cc50dea378bc6452377e3bdfae7dc","0x85a9093fc93b12ED9Fbf3a9bD56eaFcB0125d29D","0xE3aC02F59D2014A43475B7b8D457cE2331b3e6e2","0xfC3b273Ec8b57867bB13251989bd43E2B7C28c1a","0x4C75a149051355781Da82aE9364b8Fc884e2d309","0x9EB177785aeb034bf46481ff7C56F4E94f88C9E3","0x5802f2ce3ddf754a84a9602095410b49cda44682","0x6e85E758AEd0e2a452607c7Ba1895a03c8500750","0x303CeDb1a88e0Fd09594dFFCb43ea1AccEd7C842","0xE9EF2A9652D6207beFd0B61C3b3917f5a226008B","0x7bF5B2dCA8C3975D516C999b108D528A5238C2A3","0xde60d6ec63dfd40f1014f1173a2aa3659cd7710e","0x82d1b6ae058c62a9ea6648512fb2ea84f87399f7","0x651aa29ccbaff0ed91300cfd4ffa4d73e617a006","0xE02789c5A804e178754D868Bc20499a2DfD4b038","0x5C6019f08844d755dE46A650DA1e4E50f440B970","0xD01c98b8dB1A364a9c37FD213F18db32294e2E2a","0x504D086811Db2B720cd51443F2b3d497743086Df","0xAefEe802A4b29b94963Fe62a3DD490D9C7f34c19","0xa897c9D9482037C5B40C91B230414F5A0b70F701","0x2f157a5723ef081f5180f0b76785fd40d4a5e675","0x1376D82C20Ad860E8d9A3a7389a62974732995ea","0xf53BB1c82f00fB842750287FEDf4C1D92cB732Db","0xc447086AE080b9Bde4c369E6bBCd668a247E9fb0","0x4b91a4c44fe9a0e4fB18134dDb4572c932BFAA7A","0x421CA4bA76828d61926EB0Bbd00c5205F70A922e","0x385b98E94d2D15E19B83C14983ffd2cA2E30342e","0x566538978e11d716730ad62a519ee7c9aa595b10","0x3343CE7d8410cc6Ff906b99D5c3a3cbDfAEA3ab2","0x49DF9478bcbf1867b6cDFdC667AD604E3744B6ad","0x63633B39523DF3aC2d64b355C5B18B3402035Bd9","0x5FbB94e984e675e52CB92Bca9a72516a725b5064","0x1890a1c04c66a42BE26b8Df121336620B1137b45","0x333d2601B1bcd456B79ebd07d79EA66B33004164","0xa761c9301407a36C6b26D5F4b9393f5Ab601717b","0x686c83B39bB744a455d849978Ae32cC3D50D694D","0xfA5E2931e3A48209B5D0d5D8F857f97f1818A87B","0x1376D82C20Ad860E8d9A3a7389a62974732995ea","0xD5Ea006057772C428A4718732523C4772f466A37","0x1f27eCfEa2c6B575560955662166D2781B0c5111","0x3D6e177791F02298e29516dd95085Cb1200C2B47","0x455237074B7dcf29eC3303817E5A51C74A2c253E","0x0ad0e4eA5B897dCD30752B511316972ACC7dA016","0xe202b69DCCF5883C4a6D605d3dBdB6F30858b80e","0xf8DF491Ae6d454461bE51306440A74Ef94C59788","0xcF3694f4E76837Fb5444b9bd93724212e449eafd","0xd2C67689a0033a53DbE3392d89cD6175d4b5465c","0xDb6428c5FA405b9BA438bba5C1c2c4f099684004","0x64fc678d17baefa06d96e214544d5d82fa8f1734","0x09cCc5EbAe37a0ed322649ae03Fbc5cDf9683508","0x0c7cf39362441d4637c9434a764241d6f31668aa","0x62633F5670DfF2eA044DCDf3FD27168e9846Aa49","0xab897f8A63CAd6d76D91AA799eEe5903D5367021","0x9B05E02F7d1639c54C1BD6980eB64A11D2cd708f","0x3C841eE6bf7b6e7546b6EFc04B356504727fEF62","0x11436EE79814f04b71594D651E8A23D16f0eA519","0xE0f2c379BeDc3392bDe10f8352Eb51340AD35405","0xe2545B6138873E3b7cDC12e078d3fc71a165092e","0xc9d72cB5d19a1FE78a144f7FC80531418B6b67D4","0xBdFC087A5C32F6B6E425697c1A19a10E378136eE","0xb9950696E4EE05Ea2030C3eBcEA9a4a8f276F746","0x8bb8fc35375650d38fe68b026bd1a38a14ccb551","0xA8fBe0452eedFC4598d4C64C33615d942a70Af6e","0x8f289FDee17AC14fD4F6Af03663Aae19A6959015","0xfB631e9cA881bd9cbd717B1D211a420Dc32e3352","0x4C68f443036faA64a200B0c6AE654D779D7b6969","0xDcD082a4520929dcE240cD1E5233339f7e15c661","0x3b826A060319E5067883887153b88Df04f2FF0D4","0xA0E3387Ca51f6a5877F52Fe2FC70aDfaD15d6B63","0xe4254cf33F8E1276549F010989dE8Eb9251Fb917","0x1b19fCA9EAD4248BD27b26ea135194Fce270c440","0x003960E60110FbD8E2b790f1dB1948A798258016","0xdbe5bF83415D69344C451438E10e4Ce4c7Ad3868","0x39e11416c6A152850b7d27F9899DFC179b865cAF","0xb433f89264aA9300A1EeFe799776fbd53719D82b","0x0d8C5e8a3399A4f98C744d32A7aDb1613c03ee04","0x11093F75cd269327ee966770EF308b4269d146Ca","0x380606e57b28C11aAEf06217e5dD8F94A75F6BF2","0x3DcDf0239911954a4b30A38818d3D35909b3b110","0x3DcDf0239911954a4b30A38818d3D35909b3b110","0xD0C34b90B43A2A2e6F7929b6D477e846D5Ae7BB6","0x527Cc9cFBC3d9dcc6ecBe318eA87E9E25cBD114a","0x12d4182B4125fcd4251302c034613daaAdA66396","0xd8a75Fa01e12Afc0223B5b394e0a03d33A9589a5","0x53a245D400ceba92dE13BB24efE3C457A2146A63","0x104C411E9acF483c7d15FA246f21A516c9DB9504","0x16921f39b5172d0E558eca9f429CaE718C6c2cc4","0x2fDCDf5BE7683c6000b93DaE4EeCcaE8F4c06C0f","0x570315A30684Db24221E43dAfB9c5FC3c63781dF","0x2d91C4d517443F3265726F00BdEa495769E8C5Ea","0x75c8dB318612FA80b39bE6169C108A4AA417098d","0xd160412d3a9ac2c9488ab877f08be9d49ad5074d","0x4376B9A7558b20BbD9700819859BD3CbEec02e34","0xe9b0F81Bd05A232F9153fb7e23A752dC467959dA","0xcdBc8cd9299808F377C420d2E9fb6E6076F6ee81","0xC1e5f5D34630044aAa08fB543F77d16714E74b14","0xf1a9b96032aB9898B7DE9738b77aa8e3211A4437","0xb197C4EB43029B9D80Cb72Da90366D8700399e1B","0xAdD448f2F1603B810762EeBEa7bBE893002b7b08","0x950DFff6C1E00c05491774e3883316e6895B0DD1","0x9ccd56aa8f9a1a39cb98331cc40804f70c1af5e1","0x7187B2eACBE4a878876A9885a04E111EAE5C8286","0xeB10b8584b41ff0961f519bBe76504679CD22c65","0x909e9308ad396eC9b6cff99a3F8272E30df47071","0xd3F332cF93Cb42dBF4f39dF4001f157165eaC1E6","0x4d331aCABA7138674fD7c5f9C214595010aFb54f","0x08908d18DDD4dbE255fceB3762EaeC37eB68B61D","0x30156BF005f98CFDee572C96E7ec946EfF8282F9","0x37c9494dc38DD56236D857F2676F8B61Cd67bE2f","0xC93620784FAceae8B644C905de0eaB95A68cb45e","0x843af2E0B80bF12843549de413353634BC4fB702","0x617fFB54868076B7E9ac5f527c80a920bd295C88","0x36BEF46Dfd4E17f9c6CAE37e408540DC7C6527d6","0xcF1561890d28eae36194E3A589E77B2E98de2F80","0x177285a6B63Aa2F01D6914432a35aDf0855b5Af4","0xbb1b447a421CFe5F8BceFdFc501Ec86d3f0b7CDB","0xA72041Df6391e940cfAeE65A6a04bB73de1D6787","0xc59f7a2c055e594b7088cf2ab13111e68c6b2036","0x508Cd390E93853748Ee1BdEf0ae326E12e390cB5","0xc37FEe96390421274CdaE6515427da083cb638F8","0x792570f2775700a2ad7f0a3a0a8d834491713bf0","0xcFE0FC16bAF9459E9c7F4f0234A04Dc994580D0e","0xc5AA32182a7BfcCBCAD5907A334DE1957CE4Ccd6","0x3447449ACE6691f9D1eB9EfDD2b1Eb847e045D41","0x0B49C3EC016224beFf20D3F410E1F1C508295810","0xfe6814a34dccc54de31bf3a4577a27aee88b3d5d","0x26c03Df4f1710f01F6595e54e6d966506A3eC12C","0x15cb1f0d4cd7925A4A542Ae39c5C742C5d164DC3","0xc798024440b9cECBB3C8F8Db40C21B7947C6B2F9","0xC109d5Db062C15544129Df5a4f20F7c8CFFf57F8","0x8537643CC87d0f88E9CA84BF951E46dBb96b333d","0x15F202D284e777E0df2963da6e31F250Eed278A5","0x760eD8aB2d44120FEE69F794B6A38154F5Ad2d2F","0x65f63255f230751de8fadb2c9469398b888aa5ff","0x562f6ac10723ef6af9f077a83cf25135fb369612","0x15F7C941287a5Cb1d2303dbF34Af1cD7DF7A5877","0xC721777ede7d0133D7302d8D464e073a5244Db07","0x9eCde9196484527388E3e05cC2fb5efD846ED498","0x6E0467F35fBE9F94E90A1cF57de72e27F8694D3D","0xB26af1D869B0e240F7701061892B68456344Ccb1","0xCD283D906Ad26efe66390Af164ee9332FFBA61b0","0x31Ea254A433b013fc3E848549b89D5Dea5459d54","0x98b68f4967a242b13F9253a73A0Ca7d65cAC7e13","0x9b0d58C7F636Cf97b289D8CD4e21E3a0d1A30320","0xc78787b9b422679fE55F8E093ff355FD6C3765F9","0xaa9120109c02f48d24b9f48f6ca6db46cf82c2e8","0x277e03AC0911AfBE52C004F1D1a42a83d1dDad12","0x314c0f3e51acb3cb5af5665a00aa4ef87bc6f4d1","0x050D2364f1241cb8380B7bc245fbe0561651112A","0xF6F3a98db74cB159550488660AA5B616b7B019BC","0x25cC8Fa0A46467a01f6ac33EC78360391D7b0C6a","0x3C469cbb8A35d753abcFb364b121647a4E6FEbc2","0x25c9abf0e3135368d5d7ebc3b82e94d59233d5de","0xd1907b6f10eb35006f701b749df93d9812f23c48","0xE6bbe9F9F98369bBAb70BD6308C9C522734cCF83","0x6D084D38dD12c1F44c0Ba170145dA70cD57E3907","0x34929bC7065B3E433cE1c1f097B9D25a573db15C","0x15cb1f0d4cd7925A4A542Ae39c5C742C5d164DC3"]
*/

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"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"addressMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"_user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","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":"uint256","name":"_limit","type":"uint256"}],"name":"setNFTPerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","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":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistedAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

60c06040526005608081905264173539b7b760d91b60a09081526200002891600c91906200020a565b50669536c708910000600e55611068600f55600560108190556011556012805462ffffff1916620100011790553480156200006257600080fd5b5060405162002ebf38038062002ebf833981016040819052620000859162000367565b8351849084906200009e9060009060208501906200020a565b508051620000b49060019060208401906200020a565b505050620000d1620000cb620000f160201b60201c565b620000f5565b620000dc8262000147565b620000e781620001af565b5050505062000473565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314620001965760405162461bcd60e51b8152602060048201819052602482015260008051602062002e9f83398151915260448201526064015b60405180910390fd5b8051620001ab90600b9060208401906200020a565b5050565b600a546001600160a01b03163314620001fa5760405162461bcd60e51b8152602060048201819052602482015260008051602062002e9f83398151915260448201526064016200018d565b8051620001ab90600d9060208401905b828054620002189062000420565b90600052602060002090601f0160209004810192826200023c576000855562000287565b82601f106200025757805160ff191683800117855562000287565b8280016001018555821562000287579182015b82811115620002875782518255916020019190600101906200026a565b506200029592915062000299565b5090565b5b808211156200029557600081556001016200029a565b600082601f830112620002c257600080fd5b81516001600160401b0380821115620002df57620002df6200045d565b604051601f8301601f19908116603f011681019082821181831017156200030a576200030a6200045d565b816040528381526020925086838588010111156200032757600080fd5b600091505b838210156200034b57858201830151818301840152908201906200032c565b838211156200035d5760008385830101525b9695505050505050565b600080600080608085870312156200037e57600080fd5b84516001600160401b03808211156200039657600080fd5b620003a488838901620002b0565b95506020870151915080821115620003bb57600080fd5b620003c988838901620002b0565b94506040870151915080821115620003e057600080fd5b620003ee88838901620002b0565b935060608701519150808211156200040557600080fd5b506200041487828801620002b0565b91505092959194509250565b600181811c908216806200043557607f821691505b602082108114156200045757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612a1c80620004836000396000f3fe6080604052600436106102725760003560e01c80636352211e1161014f578063a475b5dd116100c1578063d5abeb011161007a578063d5abeb0114610717578063da3ef23f1461072d578063e985e9c51461074d578063edec5f2714610796578063f2c4ce1e146107b6578063f2fde38b146107d657600080fd5b8063a475b5dd14610677578063b88d4fde1461068c578063ba4e5c49146106ac578063ba7d2c76146106cc578063c6682862146106e2578063c87b56dd146106f757600080fd5b80637f00c7a6116101135780637f00c7a6146105d15780638da5cb5b146105f157806395d89b411461060f5780639c70b51214610624578063a0712d6814610644578063a22cb4651461065757600080fd5b80636352211e146105475780636c0360eb146105675780636d47bcab1461057c57806370a082311461059c578063715018a6146105bc57600080fd5b80632f745c59116101e8578063438b6300116101ac578063438b63001461048157806344a0d68a146104ae5780634f6ccce7146104ce57806351830227146104ee57806355f804b31461050d5780635c975abb1461052d57600080fd5b80632f745c59146103f95780633af32abf146104195780633c952764146104395780633ccfd60b1461045957806342842e0e1461046157600080fd5b8063095ea7b31161023a578063095ea7b31461033d57806313faede61461035d57806318160ddd1461038157806318cae26914610396578063239c70ae146103c357806323b872dd146103d957600080fd5b806301ffc9a71461027757806302329a29146102ac57806306fdde03146102ce578063081812fc146102f0578063081c8c4414610328575b600080fd5b34801561028357600080fd5b50610297610292366004612572565b6107f6565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004612557565b610821565b005b3480156102da57600080fd5b506102e3610867565b6040516102a3919061277f565b3480156102fc57600080fd5b5061031061030b3660046125f5565b6108f9565b6040516001600160a01b0390911681526020016102a3565b34801561033457600080fd5b506102e361098e565b34801561034957600080fd5b506102cc6103583660046124b8565b610a1c565b34801561036957600080fd5b50610373600e5481565b6040519081526020016102a3565b34801561038d57600080fd5b50600854610373565b3480156103a257600080fd5b506103736103b1366004612388565b60146020526000908152604090205481565b3480156103cf57600080fd5b5061037360105481565b3480156103e557600080fd5b506102cc6103f43660046123d6565b610b32565b34801561040557600080fd5b506103736104143660046124b8565b610b63565b34801561042557600080fd5b50610297610434366004612388565b610bf9565b34801561044557600080fd5b506102cc610454366004612557565b610c63565b6102cc610ca9565b34801561046d57600080fd5b506102cc61047c3660046123d6565b610d47565b34801561048d57600080fd5b506104a161049c366004612388565b610d62565b6040516102a3919061273b565b3480156104ba57600080fd5b506102cc6104c93660046125f5565b610e04565b3480156104da57600080fd5b506103736104e93660046125f5565b610e33565b3480156104fa57600080fd5b5060125461029790610100900460ff1681565b34801561051957600080fd5b506102cc6105283660046125ac565b610ec6565b34801561053957600080fd5b506012546102979060ff1681565b34801561055357600080fd5b506103106105623660046125f5565b610f07565b34801561057357600080fd5b506102e3610f7e565b34801561058857600080fd5b506102cc6105973660046125f5565b610f8b565b3480156105a857600080fd5b506103736105b7366004612388565b610fba565b3480156105c857600080fd5b506102cc611041565b3480156105dd57600080fd5b506102cc6105ec3660046125f5565b611077565b3480156105fd57600080fd5b50600a546001600160a01b0316610310565b34801561061b57600080fd5b506102e36110a6565b34801561063057600080fd5b506012546102979062010000900460ff1681565b6102cc6106523660046125f5565b6110b5565b34801561066357600080fd5b506102cc61067236600461248e565b6113a3565b34801561068357600080fd5b506102cc6113ae565b34801561069857600080fd5b506102cc6106a7366004612412565b6113e9565b3480156106b857600080fd5b506103106106c73660046125f5565b611421565b3480156106d857600080fd5b5061037360115481565b3480156106ee57600080fd5b506102e361144b565b34801561070357600080fd5b506102e36107123660046125f5565b611458565b34801561072357600080fd5b50610373600f5481565b34801561073957600080fd5b506102cc6107483660046125ac565b6115d7565b34801561075957600080fd5b506102976107683660046123a3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107a257600080fd5b506102cc6107b13660046124e2565b611614565b3480156107c257600080fd5b506102cc6107d13660046125ac565b611656565b3480156107e257600080fd5b506102cc6107f1366004612388565b611693565b60006001600160e01b0319821663780e9d6360e01b148061081b575061081b8261172b565b92915050565b600a546001600160a01b031633146108545760405162461bcd60e51b815260040161084b906127e4565b60405180910390fd5b6012805460ff1916911515919091179055565b606060008054610876906128f8565b80601f01602080910402602001604051908101604052809291908181526020018280546108a2906128f8565b80156108ef5780601f106108c4576101008083540402835291602001916108ef565b820191906000526020600020905b8154815290600101906020018083116108d257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109725760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161084b565b506000908152600460205260409020546001600160a01b031690565b600d805461099b906128f8565b80601f01602080910402602001604051908101604052809291908181526020018280546109c7906128f8565b8015610a145780601f106109e957610100808354040283529160200191610a14565b820191906000526020600020905b8154815290600101906020018083116109f757829003601f168201915b505050505081565b6000610a2782610f07565b9050806001600160a01b0316836001600160a01b03161415610a955760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161084b565b336001600160a01b0382161480610ab15750610ab18133610768565b610b235760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161084b565b610b2d838361177b565b505050565b610b3c33826117e9565b610b585760405162461bcd60e51b815260040161084b90612819565b610b2d8383836118e0565b6000610b6e83610fba565b8210610bd05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161084b565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000805b601354811015610c5a57826001600160a01b031660138281548110610c2457610c246129a4565b6000918252602090912001546001600160a01b03161415610c485750600192915050565b80610c5281612933565b915050610bfd565b50600092915050565b600a546001600160a01b03163314610c8d5760405162461bcd60e51b815260040161084b906127e4565b60128054911515620100000262ff000019909216919091179055565b600a546001600160a01b03163314610cd35760405162461bcd60e51b815260040161084b906127e4565b6000610ce7600a546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610d31576040519150601f19603f3d011682016040523d82523d6000602084013e610d36565b606091505b5050905080610d4457600080fd5b50565b610b2d838383604051806020016040528060008152506113e9565b60606000610d6f83610fba565b905060008167ffffffffffffffff811115610d8c57610d8c6129ba565b604051908082528060200260200182016040528015610db5578160200160208202803683370190505b50905060005b82811015610dfc57610dcd8582610b63565b828281518110610ddf57610ddf6129a4565b602090810291909101015280610df481612933565b915050610dbb565b509392505050565b600a546001600160a01b03163314610e2e5760405162461bcd60e51b815260040161084b906127e4565b600e55565b6000610e3e60085490565b8210610ea15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161084b565b60088281548110610eb457610eb46129a4565b90600052602060002001549050919050565b600a546001600160a01b03163314610ef05760405162461bcd60e51b815260040161084b906127e4565b8051610f0390600b9060208401906121dc565b5050565b6000818152600260205260408120546001600160a01b03168061081b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161084b565b600b805461099b906128f8565b600a546001600160a01b03163314610fb55760405162461bcd60e51b815260040161084b906127e4565b601155565b60006001600160a01b0382166110255760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161084b565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b0316331461106b5760405162461bcd60e51b815260040161084b906127e4565b6110756000611a8b565b565b600a546001600160a01b031633146110a15760405162461bcd60e51b815260040161084b906127e4565b601055565b606060018054610876906128f8565b60125460ff16156111085760405162461bcd60e51b815260206004820181905260248201527f54686520636f6e74726163742069732063757272656e746c7920706175736564604482015260640161084b565b600061111360085490565b9050600082116111655760405162461bcd60e51b815260206004820152601f60248201527f596f75206e65656420746f206d696e74206174206c656173742031204e465400604482015260640161084b565b6010548211156111c35760405162461bcd60e51b8152602060048201526024808201527f4d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656044820152631959195960e21b606482015260840161084b565b600f546111d0838361286a565b11156112175760405162461bcd60e51b815260206004820152601660248201527513585e08139195081b1a5b5a5d08195e18d95959195960521b604482015260640161084b565b600a546001600160a01b031633146113535760125462010000900460ff161515600114156113015761124833610bf9565b6112945760405162461bcd60e51b815260206004820152601760248201527f55736572206973206e6f742077686974656c6973746564000000000000000000604482015260640161084b565b336000908152601460205260409020546011546112b1848361286a565b11156112ff5760405162461bcd60e51b815260206004820152601c60248201527f4d6178204e465420706572206164647265737320657863656564656400000000604482015260640161084b565b505b81600e5461130f9190612896565b3410156113535760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742046756e647360701b604482015260640161084b565b60015b828111610b2d5733600090815260146020526040812080549161137883612933565b9091555061139190503361138c838561286a565b611add565b8061139b81612933565b915050611356565b610f03338383611af7565b600a546001600160a01b031633146113d85760405162461bcd60e51b815260040161084b906127e4565b6012805461ff001916610100179055565b6113f333836117e9565b61140f5760405162461bcd60e51b815260040161084b90612819565b61141b84848484611bc6565b50505050565b6013818154811061143157600080fd5b6000918252602090912001546001600160a01b0316905081565b600c805461099b906128f8565b6000818152600260205260409020546060906001600160a01b03166114d75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161084b565b601254610100900460ff1661157857600d80546114f3906128f8565b80601f016020809104026020016040519081016040528092919081815260200182805461151f906128f8565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b50505050509050919050565b6000611582611bf9565b905060008151116115a257604051806020016040528060008152506115d0565b806115ac84611c08565b600c6040516020016115c09392919061263a565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146116015760405162461bcd60e51b815260040161084b906127e4565b8051610f0390600c9060208401906121dc565b600a546001600160a01b0316331461163e5760405162461bcd60e51b815260040161084b906127e4565b61164a60136000612260565b610b2d6013838361227e565b600a546001600160a01b031633146116805760405162461bcd60e51b815260040161084b906127e4565b8051610f0390600d9060208401906121dc565b600a546001600160a01b031633146116bd5760405162461bcd60e51b815260040161084b906127e4565b6001600160a01b0381166117225760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161084b565b610d4481611a8b565b60006001600160e01b031982166380ac58cd60e01b148061175c57506001600160e01b03198216635b5e139f60e01b145b8061081b57506301ffc9a760e01b6001600160e01b031983161461081b565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906117b082610f07565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166118625760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161084b565b600061186d83610f07565b9050806001600160a01b0316846001600160a01b031614806118a85750836001600160a01b031661189d846108f9565b6001600160a01b0316145b806118d857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166118f382610f07565b6001600160a01b03161461195b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161084b565b6001600160a01b0382166119bd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161084b565b6119c8838383611d06565b6119d360008261177b565b6001600160a01b03831660009081526003602052604081208054600192906119fc9084906128b5565b90915550506001600160a01b0382166000908152600360205260408120805460019290611a2a90849061286a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610f03828260405180602001604052806000815250611dbe565b816001600160a01b0316836001600160a01b03161415611b595760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161084b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611bd18484846118e0565b611bdd84848484611df1565b61141b5760405162461bcd60e51b815260040161084b90612792565b6060600b8054610876906128f8565b606081611c2c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c565780611c4081612933565b9150611c4f9050600a83612882565b9150611c30565b60008167ffffffffffffffff811115611c7157611c716129ba565b6040519080825280601f01601f191660200182016040528015611c9b576020820181803683370190505b5090505b84156118d857611cb06001836128b5565b9150611cbd600a8661294e565b611cc890603061286a565b60f81b818381518110611cdd57611cdd6129a4565b60200101906001600160f81b031916908160001a905350611cff600a86612882565b9450611c9f565b6001600160a01b038316611d6157611d5c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611d84565b816001600160a01b0316836001600160a01b031614611d8457611d848382611efe565b6001600160a01b038216611d9b57610b2d81611f9b565b826001600160a01b0316826001600160a01b031614610b2d57610b2d828261204a565b611dc8838361208e565b611dd56000848484611df1565b610b2d5760405162461bcd60e51b815260040161084b90612792565b60006001600160a01b0384163b15611ef357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611e359033908990889088906004016126fe565b602060405180830381600087803b158015611e4f57600080fd5b505af1925050508015611e7f575060408051601f3d908101601f19168201909252611e7c9181019061258f565b60015b611ed9573d808015611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b508051611ed15760405162461bcd60e51b815260040161084b90612792565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506118d8565b506001949350505050565b60006001611f0b84610fba565b611f1591906128b5565b600083815260076020526040902054909150808214611f68576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611fad906001906128b5565b60008381526009602052604081205460088054939450909284908110611fd557611fd56129a4565b906000526020600020015490508060088381548110611ff657611ff66129a4565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061202e5761202e61298e565b6001900381819060005260206000200160009055905550505050565b600061205583610fba565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166120e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161084b565b6000818152600260205260409020546001600160a01b0316156121495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161084b565b61215560008383611d06565b6001600160a01b038216600090815260036020526040812080546001929061217e90849061286a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546121e8906128f8565b90600052602060002090601f01602090048101928261220a5760008555612250565b82601f1061222357805160ff1916838001178555612250565b82800160010185558215612250579182015b82811115612250578251825591602001919060010190612235565b5061225c9291506122d1565b5090565b5080546000825590600052602060002090810190610d4491906122d1565b828054828255906000526020600020908101928215612250579160200282015b828111156122505781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061229e565b5b8082111561225c57600081556001016122d2565b600067ffffffffffffffff80841115612301576123016129ba565b604051601f8501601f19908116603f01168101908282118183101715612329576123296129ba565b8160405280935085815286868601111561234257600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461237357600080fd5b919050565b8035801515811461237357600080fd5b60006020828403121561239a57600080fd5b6115d08261235c565b600080604083850312156123b657600080fd5b6123bf8361235c565b91506123cd6020840161235c565b90509250929050565b6000806000606084860312156123eb57600080fd5b6123f48461235c565b92506124026020850161235c565b9150604084013590509250925092565b6000806000806080858703121561242857600080fd5b6124318561235c565b935061243f6020860161235c565b925060408501359150606085013567ffffffffffffffff81111561246257600080fd5b8501601f8101871361247357600080fd5b612482878235602084016122e6565b91505092959194509250565b600080604083850312156124a157600080fd5b6124aa8361235c565b91506123cd60208401612378565b600080604083850312156124cb57600080fd5b6124d48361235c565b946020939093013593505050565b600080602083850312156124f557600080fd5b823567ffffffffffffffff8082111561250d57600080fd5b818501915085601f83011261252157600080fd5b81358181111561253057600080fd5b8660208260051b850101111561254557600080fd5b60209290920196919550909350505050565b60006020828403121561256957600080fd5b6115d082612378565b60006020828403121561258457600080fd5b81356115d0816129d0565b6000602082840312156125a157600080fd5b81516115d0816129d0565b6000602082840312156125be57600080fd5b813567ffffffffffffffff8111156125d557600080fd5b8201601f810184136125e657600080fd5b6118d8848235602084016122e6565b60006020828403121561260757600080fd5b5035919050565b600081518084526126268160208601602086016128cc565b601f01601f19169290920160200192915050565b60008451602061264d8285838a016128cc565b8551918401916126608184848a016128cc565b8554920191600090600181811c908083168061267d57607f831692505b85831081141561269b57634e487b7160e01b85526022600452602485fd5b8080156126af57600181146126c0576126ed565b60ff198516885283880195506126ed565b60008b81526020902060005b858110156126e55781548a8201529084019088016126cc565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127319083018461260e565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561277357835183529284019291840191600101612757565b50909695505050505050565b6020815260006115d0602083018461260e565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561287d5761287d612962565b500190565b60008261289157612891612978565b500490565b60008160001904831182151516156128b0576128b0612962565b500290565b6000828210156128c7576128c7612962565b500390565b60005b838110156128e75781810151838201526020016128cf565b8381111561141b5750506000910152565b600181811c9082168061290c57607f821691505b6020821081141561292d57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561294757612947612962565b5060010190565b60008261295d5761295d612978565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610d4457600080fdfea264697066735822122040cfab25d3732138efc7118814769f3bcc407fcdc8aadbe71fe7d034eb2da67064736f6c634300080700334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000f50726f6a6563742053616e646c6f7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003506f4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d657362356a4c4c6e5839725159367231664744594570434b355562674e6e36684a5836356b7932344d5445462f000000000000000000000000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d536d646f7767546834667879516b715343595378797a6d653756314e74555a4a6b4154427737346d6e4a74642f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102725760003560e01c80636352211e1161014f578063a475b5dd116100c1578063d5abeb011161007a578063d5abeb0114610717578063da3ef23f1461072d578063e985e9c51461074d578063edec5f2714610796578063f2c4ce1e146107b6578063f2fde38b146107d657600080fd5b8063a475b5dd14610677578063b88d4fde1461068c578063ba4e5c49146106ac578063ba7d2c76146106cc578063c6682862146106e2578063c87b56dd146106f757600080fd5b80637f00c7a6116101135780637f00c7a6146105d15780638da5cb5b146105f157806395d89b411461060f5780639c70b51214610624578063a0712d6814610644578063a22cb4651461065757600080fd5b80636352211e146105475780636c0360eb146105675780636d47bcab1461057c57806370a082311461059c578063715018a6146105bc57600080fd5b80632f745c59116101e8578063438b6300116101ac578063438b63001461048157806344a0d68a146104ae5780634f6ccce7146104ce57806351830227146104ee57806355f804b31461050d5780635c975abb1461052d57600080fd5b80632f745c59146103f95780633af32abf146104195780633c952764146104395780633ccfd60b1461045957806342842e0e1461046157600080fd5b8063095ea7b31161023a578063095ea7b31461033d57806313faede61461035d57806318160ddd1461038157806318cae26914610396578063239c70ae146103c357806323b872dd146103d957600080fd5b806301ffc9a71461027757806302329a29146102ac57806306fdde03146102ce578063081812fc146102f0578063081c8c4414610328575b600080fd5b34801561028357600080fd5b50610297610292366004612572565b6107f6565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b506102cc6102c7366004612557565b610821565b005b3480156102da57600080fd5b506102e3610867565b6040516102a3919061277f565b3480156102fc57600080fd5b5061031061030b3660046125f5565b6108f9565b6040516001600160a01b0390911681526020016102a3565b34801561033457600080fd5b506102e361098e565b34801561034957600080fd5b506102cc6103583660046124b8565b610a1c565b34801561036957600080fd5b50610373600e5481565b6040519081526020016102a3565b34801561038d57600080fd5b50600854610373565b3480156103a257600080fd5b506103736103b1366004612388565b60146020526000908152604090205481565b3480156103cf57600080fd5b5061037360105481565b3480156103e557600080fd5b506102cc6103f43660046123d6565b610b32565b34801561040557600080fd5b506103736104143660046124b8565b610b63565b34801561042557600080fd5b50610297610434366004612388565b610bf9565b34801561044557600080fd5b506102cc610454366004612557565b610c63565b6102cc610ca9565b34801561046d57600080fd5b506102cc61047c3660046123d6565b610d47565b34801561048d57600080fd5b506104a161049c366004612388565b610d62565b6040516102a3919061273b565b3480156104ba57600080fd5b506102cc6104c93660046125f5565b610e04565b3480156104da57600080fd5b506103736104e93660046125f5565b610e33565b3480156104fa57600080fd5b5060125461029790610100900460ff1681565b34801561051957600080fd5b506102cc6105283660046125ac565b610ec6565b34801561053957600080fd5b506012546102979060ff1681565b34801561055357600080fd5b506103106105623660046125f5565b610f07565b34801561057357600080fd5b506102e3610f7e565b34801561058857600080fd5b506102cc6105973660046125f5565b610f8b565b3480156105a857600080fd5b506103736105b7366004612388565b610fba565b3480156105c857600080fd5b506102cc611041565b3480156105dd57600080fd5b506102cc6105ec3660046125f5565b611077565b3480156105fd57600080fd5b50600a546001600160a01b0316610310565b34801561061b57600080fd5b506102e36110a6565b34801561063057600080fd5b506012546102979062010000900460ff1681565b6102cc6106523660046125f5565b6110b5565b34801561066357600080fd5b506102cc61067236600461248e565b6113a3565b34801561068357600080fd5b506102cc6113ae565b34801561069857600080fd5b506102cc6106a7366004612412565b6113e9565b3480156106b857600080fd5b506103106106c73660046125f5565b611421565b3480156106d857600080fd5b5061037360115481565b3480156106ee57600080fd5b506102e361144b565b34801561070357600080fd5b506102e36107123660046125f5565b611458565b34801561072357600080fd5b50610373600f5481565b34801561073957600080fd5b506102cc6107483660046125ac565b6115d7565b34801561075957600080fd5b506102976107683660046123a3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107a257600080fd5b506102cc6107b13660046124e2565b611614565b3480156107c257600080fd5b506102cc6107d13660046125ac565b611656565b3480156107e257600080fd5b506102cc6107f1366004612388565b611693565b60006001600160e01b0319821663780e9d6360e01b148061081b575061081b8261172b565b92915050565b600a546001600160a01b031633146108545760405162461bcd60e51b815260040161084b906127e4565b60405180910390fd5b6012805460ff1916911515919091179055565b606060008054610876906128f8565b80601f01602080910402602001604051908101604052809291908181526020018280546108a2906128f8565b80156108ef5780601f106108c4576101008083540402835291602001916108ef565b820191906000526020600020905b8154815290600101906020018083116108d257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109725760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161084b565b506000908152600460205260409020546001600160a01b031690565b600d805461099b906128f8565b80601f01602080910402602001604051908101604052809291908181526020018280546109c7906128f8565b8015610a145780601f106109e957610100808354040283529160200191610a14565b820191906000526020600020905b8154815290600101906020018083116109f757829003601f168201915b505050505081565b6000610a2782610f07565b9050806001600160a01b0316836001600160a01b03161415610a955760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161084b565b336001600160a01b0382161480610ab15750610ab18133610768565b610b235760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161084b565b610b2d838361177b565b505050565b610b3c33826117e9565b610b585760405162461bcd60e51b815260040161084b90612819565b610b2d8383836118e0565b6000610b6e83610fba565b8210610bd05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161084b565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6000805b601354811015610c5a57826001600160a01b031660138281548110610c2457610c246129a4565b6000918252602090912001546001600160a01b03161415610c485750600192915050565b80610c5281612933565b915050610bfd565b50600092915050565b600a546001600160a01b03163314610c8d5760405162461bcd60e51b815260040161084b906127e4565b60128054911515620100000262ff000019909216919091179055565b600a546001600160a01b03163314610cd35760405162461bcd60e51b815260040161084b906127e4565b6000610ce7600a546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610d31576040519150601f19603f3d011682016040523d82523d6000602084013e610d36565b606091505b5050905080610d4457600080fd5b50565b610b2d838383604051806020016040528060008152506113e9565b60606000610d6f83610fba565b905060008167ffffffffffffffff811115610d8c57610d8c6129ba565b604051908082528060200260200182016040528015610db5578160200160208202803683370190505b50905060005b82811015610dfc57610dcd8582610b63565b828281518110610ddf57610ddf6129a4565b602090810291909101015280610df481612933565b915050610dbb565b509392505050565b600a546001600160a01b03163314610e2e5760405162461bcd60e51b815260040161084b906127e4565b600e55565b6000610e3e60085490565b8210610ea15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161084b565b60088281548110610eb457610eb46129a4565b90600052602060002001549050919050565b600a546001600160a01b03163314610ef05760405162461bcd60e51b815260040161084b906127e4565b8051610f0390600b9060208401906121dc565b5050565b6000818152600260205260408120546001600160a01b03168061081b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161084b565b600b805461099b906128f8565b600a546001600160a01b03163314610fb55760405162461bcd60e51b815260040161084b906127e4565b601155565b60006001600160a01b0382166110255760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161084b565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b0316331461106b5760405162461bcd60e51b815260040161084b906127e4565b6110756000611a8b565b565b600a546001600160a01b031633146110a15760405162461bcd60e51b815260040161084b906127e4565b601055565b606060018054610876906128f8565b60125460ff16156111085760405162461bcd60e51b815260206004820181905260248201527f54686520636f6e74726163742069732063757272656e746c7920706175736564604482015260640161084b565b600061111360085490565b9050600082116111655760405162461bcd60e51b815260206004820152601f60248201527f596f75206e65656420746f206d696e74206174206c656173742031204e465400604482015260640161084b565b6010548211156111c35760405162461bcd60e51b8152602060048201526024808201527f4d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656044820152631959195960e21b606482015260840161084b565b600f546111d0838361286a565b11156112175760405162461bcd60e51b815260206004820152601660248201527513585e08139195081b1a5b5a5d08195e18d95959195960521b604482015260640161084b565b600a546001600160a01b031633146113535760125462010000900460ff161515600114156113015761124833610bf9565b6112945760405162461bcd60e51b815260206004820152601760248201527f55736572206973206e6f742077686974656c6973746564000000000000000000604482015260640161084b565b336000908152601460205260409020546011546112b1848361286a565b11156112ff5760405162461bcd60e51b815260206004820152601c60248201527f4d6178204e465420706572206164647265737320657863656564656400000000604482015260640161084b565b505b81600e5461130f9190612896565b3410156113535760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742046756e647360701b604482015260640161084b565b60015b828111610b2d5733600090815260146020526040812080549161137883612933565b9091555061139190503361138c838561286a565b611add565b8061139b81612933565b915050611356565b610f03338383611af7565b600a546001600160a01b031633146113d85760405162461bcd60e51b815260040161084b906127e4565b6012805461ff001916610100179055565b6113f333836117e9565b61140f5760405162461bcd60e51b815260040161084b90612819565b61141b84848484611bc6565b50505050565b6013818154811061143157600080fd5b6000918252602090912001546001600160a01b0316905081565b600c805461099b906128f8565b6000818152600260205260409020546060906001600160a01b03166114d75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161084b565b601254610100900460ff1661157857600d80546114f3906128f8565b80601f016020809104026020016040519081016040528092919081815260200182805461151f906128f8565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b50505050509050919050565b6000611582611bf9565b905060008151116115a257604051806020016040528060008152506115d0565b806115ac84611c08565b600c6040516020016115c09392919061263a565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146116015760405162461bcd60e51b815260040161084b906127e4565b8051610f0390600c9060208401906121dc565b600a546001600160a01b0316331461163e5760405162461bcd60e51b815260040161084b906127e4565b61164a60136000612260565b610b2d6013838361227e565b600a546001600160a01b031633146116805760405162461bcd60e51b815260040161084b906127e4565b8051610f0390600d9060208401906121dc565b600a546001600160a01b031633146116bd5760405162461bcd60e51b815260040161084b906127e4565b6001600160a01b0381166117225760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161084b565b610d4481611a8b565b60006001600160e01b031982166380ac58cd60e01b148061175c57506001600160e01b03198216635b5e139f60e01b145b8061081b57506301ffc9a760e01b6001600160e01b031983161461081b565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906117b082610f07565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166118625760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161084b565b600061186d83610f07565b9050806001600160a01b0316846001600160a01b031614806118a85750836001600160a01b031661189d846108f9565b6001600160a01b0316145b806118d857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166118f382610f07565b6001600160a01b03161461195b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161084b565b6001600160a01b0382166119bd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161084b565b6119c8838383611d06565b6119d360008261177b565b6001600160a01b03831660009081526003602052604081208054600192906119fc9084906128b5565b90915550506001600160a01b0382166000908152600360205260408120805460019290611a2a90849061286a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610f03828260405180602001604052806000815250611dbe565b816001600160a01b0316836001600160a01b03161415611b595760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161084b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611bd18484846118e0565b611bdd84848484611df1565b61141b5760405162461bcd60e51b815260040161084b90612792565b6060600b8054610876906128f8565b606081611c2c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611c565780611c4081612933565b9150611c4f9050600a83612882565b9150611c30565b60008167ffffffffffffffff811115611c7157611c716129ba565b6040519080825280601f01601f191660200182016040528015611c9b576020820181803683370190505b5090505b84156118d857611cb06001836128b5565b9150611cbd600a8661294e565b611cc890603061286a565b60f81b818381518110611cdd57611cdd6129a4565b60200101906001600160f81b031916908160001a905350611cff600a86612882565b9450611c9f565b6001600160a01b038316611d6157611d5c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611d84565b816001600160a01b0316836001600160a01b031614611d8457611d848382611efe565b6001600160a01b038216611d9b57610b2d81611f9b565b826001600160a01b0316826001600160a01b031614610b2d57610b2d828261204a565b611dc8838361208e565b611dd56000848484611df1565b610b2d5760405162461bcd60e51b815260040161084b90612792565b60006001600160a01b0384163b15611ef357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611e359033908990889088906004016126fe565b602060405180830381600087803b158015611e4f57600080fd5b505af1925050508015611e7f575060408051601f3d908101601f19168201909252611e7c9181019061258f565b60015b611ed9573d808015611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b508051611ed15760405162461bcd60e51b815260040161084b90612792565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506118d8565b506001949350505050565b60006001611f0b84610fba565b611f1591906128b5565b600083815260076020526040902054909150808214611f68576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611fad906001906128b5565b60008381526009602052604081205460088054939450909284908110611fd557611fd56129a4565b906000526020600020015490508060088381548110611ff657611ff66129a4565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061202e5761202e61298e565b6001900381819060005260206000200160009055905550505050565b600061205583610fba565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166120e45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161084b565b6000818152600260205260409020546001600160a01b0316156121495760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161084b565b61215560008383611d06565b6001600160a01b038216600090815260036020526040812080546001929061217e90849061286a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546121e8906128f8565b90600052602060002090601f01602090048101928261220a5760008555612250565b82601f1061222357805160ff1916838001178555612250565b82800160010185558215612250579182015b82811115612250578251825591602001919060010190612235565b5061225c9291506122d1565b5090565b5080546000825590600052602060002090810190610d4491906122d1565b828054828255906000526020600020908101928215612250579160200282015b828111156122505781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061229e565b5b8082111561225c57600081556001016122d2565b600067ffffffffffffffff80841115612301576123016129ba565b604051601f8501601f19908116603f01168101908282118183101715612329576123296129ba565b8160405280935085815286868601111561234257600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461237357600080fd5b919050565b8035801515811461237357600080fd5b60006020828403121561239a57600080fd5b6115d08261235c565b600080604083850312156123b657600080fd5b6123bf8361235c565b91506123cd6020840161235c565b90509250929050565b6000806000606084860312156123eb57600080fd5b6123f48461235c565b92506124026020850161235c565b9150604084013590509250925092565b6000806000806080858703121561242857600080fd5b6124318561235c565b935061243f6020860161235c565b925060408501359150606085013567ffffffffffffffff81111561246257600080fd5b8501601f8101871361247357600080fd5b612482878235602084016122e6565b91505092959194509250565b600080604083850312156124a157600080fd5b6124aa8361235c565b91506123cd60208401612378565b600080604083850312156124cb57600080fd5b6124d48361235c565b946020939093013593505050565b600080602083850312156124f557600080fd5b823567ffffffffffffffff8082111561250d57600080fd5b818501915085601f83011261252157600080fd5b81358181111561253057600080fd5b8660208260051b850101111561254557600080fd5b60209290920196919550909350505050565b60006020828403121561256957600080fd5b6115d082612378565b60006020828403121561258457600080fd5b81356115d0816129d0565b6000602082840312156125a157600080fd5b81516115d0816129d0565b6000602082840312156125be57600080fd5b813567ffffffffffffffff8111156125d557600080fd5b8201601f810184136125e657600080fd5b6118d8848235602084016122e6565b60006020828403121561260757600080fd5b5035919050565b600081518084526126268160208601602086016128cc565b601f01601f19169290920160200192915050565b60008451602061264d8285838a016128cc565b8551918401916126608184848a016128cc565b8554920191600090600181811c908083168061267d57607f831692505b85831081141561269b57634e487b7160e01b85526022600452602485fd5b8080156126af57600181146126c0576126ed565b60ff198516885283880195506126ed565b60008b81526020902060005b858110156126e55781548a8201529084019088016126cc565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127319083018461260e565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561277357835183529284019291840191600101612757565b50909695505050505050565b6020815260006115d0602083018461260e565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561287d5761287d612962565b500190565b60008261289157612891612978565b500490565b60008160001904831182151516156128b0576128b0612962565b500290565b6000828210156128c7576128c7612962565b500390565b60005b838110156128e75781810151838201526020016128cf565b8381111561141b5750506000910152565b600181811c9082168061290c57607f821691505b6020821081141561292d57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561294757612947612962565b5060010190565b60008261295d5761295d612978565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610d4457600080fdfea264697066735822122040cfab25d3732138efc7118814769f3bcc407fcdc8aadbe71fe7d034eb2da67064736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000f50726f6a6563742053616e646c6f7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003506f4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d657362356a4c4c6e5839725159367231664744594570434b355562674e6e36684a5836356b7932344d5445462f000000000000000000000000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d536d646f7767546834667879516b715343595378797a6d653756314e74555a4a6b4154427737346d6e4a74642f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Project Sandlot
Arg [1] : _symbol (string): PoB
Arg [2] : _initBaseURI (string): ipfs://Qmesb5jLLnX9rQY6r1fGDYEpCK5UbgNn6hJX65ky24MTEF/
Arg [3] : _initNotRevealedUri (string): ipfs://QmSmdowgTh4fxyQkqSCYSxyzme7V1NtUZJkATBw74mnJtd/hidden.json

-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 50726f6a6563742053616e646c6f740000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 506f420000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [9] : 697066733a2f2f516d657362356a4c4c6e583972515936723166474459457043
Arg [10] : 4b355562674e6e36684a5836356b7932344d5445462f00000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000041
Arg [12] : 697066733a2f2f516d536d646f7767546834667879516b715343595378797a6d
Arg [13] : 653756314e74555a4a6b4154427737346d6e4a74642f68696464656e2e6a736f
Arg [14] : 6e00000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

44535:4289:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38303:224;;;;;;;;;;-1:-1:-1;38303:224:0;;;;;:::i;:::-;;:::i;:::-;;;8427:14:1;;8420:22;8402:41;;8390:2;8375:18;38303:224:0;;;;;;;;48332:73;;;;;;;;;;-1:-1:-1;48332:73:0;;;;;:::i;:::-;;:::i;:::-;;25797:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;27356:221::-;;;;;;;;;;-1:-1:-1;27356:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7088:32:1;;;7070:51;;7058:2;7043:18;27356:221:0;6924:203:1;44693:28:0;;;;;;;;;;;;;:::i;26879:411::-;;;;;;;;;;-1:-1:-1;26879:411:0;;;;;:::i;:::-;;:::i;44726:33::-;;;;;;;;;;;;;;;;;;;18564:25:1;;;18552:2;18537:18;44726:33:0;18418:177:1;38943:113:0;;;;;;;;;;-1:-1:-1;39031:10:0;:17;38943:113;;45023:56;;;;;;;;;;-1:-1:-1;45023:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;44800:32;;;;;;;;;;;;;;;;28106:339;;;;;;;;;;-1:-1:-1;28106:339:0;;;;;:::i;:::-;;:::i;38611:256::-;;;;;;;;;;-1:-1:-1;38611:256:0;;;;;:::i;:::-;;:::i;46434:259::-;;;;;;;;;;-1:-1:-1;46434:259:0;;;;;:::i;:::-;;:::i;48413:95::-;;;;;;;;;;-1:-1:-1;48413:95:0;;;;;:::i;:::-;;:::i;48666:155::-;;;:::i;28516:185::-;;;;;;;;;;-1:-1:-1;28516:185:0;;;;;:::i;:::-;;:::i;46699:348::-;;;;;;;;;;-1:-1:-1;46699:348:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;47760:82::-;;;;;;;;;;-1:-1:-1;47760:82:0;;;;;:::i;:::-;;:::i;39133:233::-;;;;;;;;;;-1:-1:-1;39133:233:0;;;;;:::i;:::-;;:::i;44909:28::-;;;;;;;;;;-1:-1:-1;44909:28:0;;;;;;;;;;;48100:98;;;;;;;;;;-1:-1:-1;48100:98:0;;;;;:::i;:::-;;:::i;44879:25::-;;;;;;;;;;-1:-1:-1;44879:25:0;;;;;;;;25491:239;;;;;;;;;;-1:-1:-1;25491:239:0;;;;;:::i;:::-;;:::i;44625:21::-;;;;;;;;;;;;;:::i;47647:105::-;;;;;;;;;;-1:-1:-1;47647:105:0;;;;;:::i;:::-;;:::i;25221:208::-;;;;;;;;;;-1:-1:-1;25221:208:0;;;;;:::i;:::-;;:::i;4767:103::-;;;;;;;;;;;;;:::i;47848:118::-;;;;;;;;;;-1:-1:-1;47848:118:0;;;;;:::i;:::-;;:::i;4116:87::-;;;;;;;;;;-1:-1:-1;4189:6:0;;-1:-1:-1;;;;;4189:6:0;4116:87;;25966:104;;;;;;;;;;;;;:::i;44942:34::-;;;;;;;;;;-1:-1:-1;44942:34:0;;;;;;;;;;;45477:951;;;;;;:::i;:::-;;:::i;27649:155::-;;;;;;;;;;-1:-1:-1;27649:155:0;;;;;:::i;:::-;;:::i;47572:65::-;;;;;;;;;;;;;:::i;28772:328::-;;;;;;;;;;-1:-1:-1;28772:328:0;;;;;:::i;:::-;;:::i;44981:37::-;;;;;;;;;;-1:-1:-1;44981:37:0;;;;;:::i;:::-;;:::i;44837:::-;;;;;;;;;;;;;;;;44651;;;;;;;;;;;;;:::i;47053:497::-;;;;;;;;;;-1:-1:-1;47053:497:0;;;;;:::i;:::-;;:::i;44764:31::-;;;;;;;;;;;;;;;;48204:122;;;;;;;;;;-1:-1:-1;48204:122:0;;;;;:::i;:::-;;:::i;27875:164::-;;;;;;;;;;-1:-1:-1;27875:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;27996:25:0;;;27972:4;27996:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;27875:164;48513:144;;;;;;;;;;-1:-1:-1;48513:144:0;;;;;:::i;:::-;;:::i;47974:120::-;;;;;;;;;;-1:-1:-1;47974:120:0;;;;;:::i;:::-;;:::i;5025:201::-;;;;;;;;;;-1:-1:-1;5025:201:0;;;;;:::i;:::-;;:::i;38303:224::-;38405:4;-1:-1:-1;;;;;;38429:50:0;;-1:-1:-1;;;38429:50:0;;:90;;;38483:36;38507:11;38483:23;:36::i;:::-;38422:97;38303:224;-1:-1:-1;;38303:224:0:o;48332:73::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;;;;;;;;;48384:6:::1;:15:::0;;-1:-1:-1;;48384:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;48332:73::o;25797:100::-;25851:13;25884:5;25877:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25797:100;:::o;27356:221::-;27432:7;30699:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30699:16:0;27452:73;;;;-1:-1:-1;;;27452:73:0;;15070:2:1;27452:73:0;;;15052:21:1;15109:2;15089:18;;;15082:30;15148:34;15128:18;;;15121:62;-1:-1:-1;;;15199:18:1;;;15192:42;15251:19;;27452:73:0;14868:408:1;27452:73:0;-1:-1:-1;27545:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;27545:24:0;;27356:221::o;44693:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26879:411::-;26960:13;26976:23;26991:7;26976:14;:23::i;:::-;26960:39;;27024:5;-1:-1:-1;;;;;27018:11:0;:2;-1:-1:-1;;;;;27018:11:0;;;27010:57;;;;-1:-1:-1;;;27010:57:0;;17027:2:1;27010:57:0;;;17009:21:1;17066:2;17046:18;;;17039:30;17105:34;17085:18;;;17078:62;-1:-1:-1;;;17156:18:1;;;17149:31;17197:19;;27010:57:0;16825:397:1;27010:57:0;2920:10;-1:-1:-1;;;;;27102:21:0;;;;:62;;-1:-1:-1;27127:37:0;27144:5;2920:10;27875:164;:::i;27127:37::-;27080:168;;;;-1:-1:-1;;;27080:168:0;;13112:2:1;27080:168:0;;;13094:21:1;13151:2;13131:18;;;13124:30;13190:34;13170:18;;;13163:62;13261:26;13241:18;;;13234:54;13305:19;;27080:168:0;12910:420:1;27080:168:0;27261:21;27270:2;27274:7;27261:8;:21::i;:::-;26949:341;26879:411;;:::o;28106:339::-;28301:41;2920:10;28334:7;28301:18;:41::i;:::-;28293:103;;;;-1:-1:-1;;;28293:103:0;;;;;;;:::i;:::-;28409:28;28419:4;28425:2;28429:7;28409:9;:28::i;38611:256::-;38708:7;38744:23;38761:5;38744:16;:23::i;:::-;38736:5;:31;38728:87;;;;-1:-1:-1;;;38728:87:0;;9241:2:1;38728:87:0;;;9223:21:1;9280:2;9260:18;;;9253:30;9319:34;9299:18;;;9292:62;-1:-1:-1;;;9370:18:1;;;9363:41;9421:19;;38728:87:0;9039:407:1;38728:87:0;-1:-1:-1;;;;;;38833:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;38611:256::o;46434:259::-;46493:4;;46508:159;46531:20;:27;46527:31;;46508:159;;;46609:5;-1:-1:-1;;;;;46582:32:0;:20;46603:1;46582:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;46582:23:0;:32;46578:80;;;-1:-1:-1;46640:4:0;;46434:259;-1:-1:-1;;46434:259:0:o;46578:80::-;46560:3;;;;:::i;:::-;;;;46508:159;;;-1:-1:-1;46682:5:0;;46434:259;-1:-1:-1;;46434:259:0:o;48413:95::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;48478:15:::1;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;48478:24:0;;::::1;::::0;;;::::1;::::0;;48413:95::o;48666:155::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;48719:12:::1;48745:7;4189:6:::0;;-1:-1:-1;;;;;4189:6:0;;4116:87;48745:7:::1;-1:-1:-1::0;;;;;48737:21:0::1;48766;48737:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48718:74;;;48807:7;48799:16;;;::::0;::::1;;48711:110;48666:155::o:0;28516:185::-;28654:39;28671:4;28677:2;28681:7;28654:39;;;;;;;;;;;;:16;:39::i;46699:348::-;46774:16;46802:23;46828:17;46838:6;46828:9;:17::i;:::-;46802:43;;46852:25;46894:15;46880:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46880:30:0;;46852:58;;46922:9;46917:103;46937:15;46933:1;:19;46917:103;;;46982:30;47002:6;47010:1;46982:19;:30::i;:::-;46968:8;46977:1;46968:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;46954:3;;;;:::i;:::-;;;;46917:103;;;-1:-1:-1;47033:8:0;46699:348;-1:-1:-1;;;46699:348:0:o;47760:82::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;47821:4:::1;:15:::0;47760:82::o;39133:233::-;39208:7;39244:30;39031:10;:17;;38943:113;39244:30;39236:5;:38;39228:95;;;;-1:-1:-1;;;39228:95:0;;17847:2:1;39228:95:0;;;17829:21:1;17886:2;17866:18;;;17859:30;17925:34;17905:18;;;17898:62;-1:-1:-1;;;17976:18:1;;;17969:42;18028:19;;39228:95:0;17645:408:1;39228:95:0;39341:10;39352:5;39341:17;;;;;;;;:::i;:::-;;;;;;;;;39334:24;;39133:233;;;:::o;48100:98::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;48171:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;48100:98:::0;:::o;25491:239::-;25563:7;25599:16;;;:7;:16;;;;;;-1:-1:-1;;;;;25599:16:0;25634:19;25626:73;;;;-1:-1:-1;;;25626:73:0;;13948:2:1;25626:73:0;;;13930:21:1;13987:2;13967:18;;;13960:30;14026:34;14006:18;;;13999:62;-1:-1:-1;;;14077:18:1;;;14070:39;14126:19;;25626:73:0;13746:405:1;44625:21:0;;;;;;;:::i;47647:105::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;47719:18:::1;:27:::0;47647:105::o;25221:208::-;25293:7;-1:-1:-1;;;;;25321:19:0;;25313:74;;;;-1:-1:-1;;;25313:74:0;;13537:2:1;25313:74:0;;;13519:21:1;13576:2;13556:18;;;13549:30;13615:34;13595:18;;;13588:62;-1:-1:-1;;;13666:18:1;;;13659:40;13716:19;;25313:74:0;13335:406:1;25313:74:0;-1:-1:-1;;;;;;25405:16:0;;;;;:9;:16;;;;;;;25221:208::o;4767:103::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;4832:30:::1;4859:1;4832:18;:30::i;:::-;4767:103::o:0;47848:118::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;47927:13:::1;:33:::0;47848:118::o;25966:104::-;26022:13;26055:7;26048:14;;;;;:::i;45477:951::-;45543:6;;;;45542:7;45534:52;;;;-1:-1:-1;;;45534:52:0;;8880:2:1;45534:52:0;;;8862:21:1;;;8899:18;;;8892:30;8958:34;8938:18;;;8931:62;9010:18;;45534:52:0;8678:356:1;45534:52:0;45593:14;45610:13;39031:10;:17;;38943:113;45610:13;45593:30;;45652:1;45638:11;:15;45630:59;;;;-1:-1:-1;;;45630:59:0;;18260:2:1;45630:59:0;;;18242:21:1;18299:2;18279:18;;;18272:30;18338:33;18318:18;;;18311:61;18389:18;;45630:59:0;18058:355:1;45630:59:0;45719:13;;45704:11;:28;;45696:77;;;;-1:-1:-1;;;45696:77:0;;12355:2:1;45696:77:0;;;12337:21:1;12394:2;12374:18;;;12367:30;12433:34;12413:18;;;12406:62;-1:-1:-1;;;12484:18:1;;;12477:34;12528:19;;45696:77:0;12153:400:1;45696:77:0;45812:9;;45788:20;45797:11;45788:6;:20;:::i;:::-;:33;;45780:68;;;;-1:-1:-1;;;45780:68:0;;14358:2:1;45780:68:0;;;14340:21:1;14397:2;14377:18;;;14370:30;-1:-1:-1;;;14416:18:1;;;14409:52;14478:18;;45780:68:0;14156:346:1;45780:68:0;4189:6;;-1:-1:-1;;;;;4189:6:0;45861:10;:21;45857:417;;45899:15;;;;;;;:23;;45918:4;45899:23;45895:299;;;45947:25;45961:10;45947:13;:25::i;:::-;45939:61;;;;-1:-1:-1;;;45939:61:0;;12760:2:1;45939:61:0;;;12742:21:1;12799:2;12779:18;;;12772:30;12838:25;12818:18;;;12811:53;12881:18;;45939:61:0;12558:347:1;45939:61:0;46063:10;46015:24;46042:32;;;:20;:32;;;;;;46131:18;;46097:30;46116:11;46042:32;46097:30;:::i;:::-;:52;;46089:93;;;;-1:-1:-1;;;46089:93:0;;16670:2:1;46089:93:0;;;16652:21:1;16709:2;16689:18;;;16682:30;16748;16728:18;;;16721:58;16796:18;;46089:93:0;16468:352:1;46089:93:0;45924:270;45895:299;46232:11;46225:4;;:18;;;;:::i;:::-;46212:9;:31;;46204:62;;;;-1:-1:-1;;;46204:62:0;;10836:2:1;46204:62:0;;;10818:21:1;10875:2;10855:18;;;10848:30;-1:-1:-1;;;10894:18:1;;;10887:48;10952:18;;46204:62:0;10634:342:1;46204:62:0;46299:1;46282:141;46307:11;46302:1;:16;46282:141;;46358:10;46336:33;;;;:20;:33;;;;;:35;;;;;;:::i;:::-;;;;-1:-1:-1;46382:33:0;;-1:-1:-1;46392:10:0;46404;46413:1;46404:6;:10;:::i;:::-;46382:9;:33::i;:::-;46320:3;;;;:::i;:::-;;;;46282:141;;27649:155;27744:52;2920:10;27777:8;27787;27744:18;:52::i;47572:65::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;47616:8:::1;:15:::0;;-1:-1:-1;;47616:15:0::1;;;::::0;;47572:65::o;28772:328::-;28947:41;2920:10;28980:7;28947:18;:41::i;:::-;28939:103;;;;-1:-1:-1;;;28939:103:0;;;;;;;:::i;:::-;29053:39;29067:4;29073:2;29077:7;29086:5;29053:13;:39::i;:::-;28772:328;;;;:::o;44981:37::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44981:37:0;;-1:-1:-1;44981:37:0;:::o;44651:::-;;;;;;;:::i;47053:497::-;30675:4;30699:16;;;:7;:16;;;;;;47151:13;;-1:-1:-1;;;;;30699:16:0;47176:97;;;;-1:-1:-1;;;47176:97:0;;16254:2:1;47176:97:0;;;16236:21:1;16293:2;16273:18;;;16266:30;16332:34;16312:18;;;16305:62;-1:-1:-1;;;16383:18:1;;;16376:45;16438:19;;47176:97:0;16052:411:1;47176:97:0;47289:8;;;;;;;47286:62;;47326:14;47319:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47053:497;;;:::o;47286:62::-;47356:28;47387:10;:8;:10::i;:::-;47356:41;;47442:1;47417:14;47411:28;:32;:133;;;;;;;;;;;;;;;;;47479:14;47495:18;:7;:16;:18::i;:::-;47515:13;47462:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;47411:133;47404:140;47053:497;-1:-1:-1;;;47053:497:0:o;48204:122::-;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;48287:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;48513:144::-:0;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;48588:27:::1;48595:20;;48588:27;:::i;:::-;48622:29;:20;48645:6:::0;;48622:29:::1;:::i;47974:120::-:0;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;48056:32;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;5025:201::-:0;4189:6;;-1:-1:-1;;;;;4189:6:0;2920:10;4336:23;4328:68;;;;-1:-1:-1;;;4328:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5114:22:0;::::1;5106:73;;;::::0;-1:-1:-1;;;5106:73:0;;10072:2:1;5106:73:0::1;::::0;::::1;10054:21:1::0;10111:2;10091:18;;;10084:30;10150:34;10130:18;;;10123:62;-1:-1:-1;;;10201:18:1;;;10194:36;10247:19;;5106:73:0::1;9870:402:1::0;5106:73:0::1;5190:28;5209:8;5190:18;:28::i;24852:305::-:0;24954:4;-1:-1:-1;;;;;;24991:40:0;;-1:-1:-1;;;24991:40:0;;:105;;-1:-1:-1;;;;;;;25048:48:0;;-1:-1:-1;;;25048:48:0;24991:105;:158;;;-1:-1:-1;;;;;;;;;;16657:40:0;;;25113:36;16548:157;34592:174;34667:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;34667:29:0;-1:-1:-1;;;;;34667:29:0;;;;;;;;:24;;34721:23;34667:24;34721:14;:23::i;:::-;-1:-1:-1;;;;;34712:46:0;;;;;;;;;;;34592:174;;:::o;30904:348::-;30997:4;30699:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30699:16:0;31014:73;;;;-1:-1:-1;;;31014:73:0;;11942:2:1;31014:73:0;;;11924:21:1;11981:2;11961:18;;;11954:30;12020:34;12000:18;;;11993:62;-1:-1:-1;;;12071:18:1;;;12064:42;12123:19;;31014:73:0;11740:408:1;31014:73:0;31098:13;31114:23;31129:7;31114:14;:23::i;:::-;31098:39;;31167:5;-1:-1:-1;;;;;31156:16:0;:7;-1:-1:-1;;;;;31156:16:0;;:51;;;;31200:7;-1:-1:-1;;;;;31176:31:0;:20;31188:7;31176:11;:20::i;:::-;-1:-1:-1;;;;;31176:31:0;;31156:51;:87;;;-1:-1:-1;;;;;;27996:25:0;;;27972:4;27996:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;31211:32;31148:96;30904:348;-1:-1:-1;;;;30904:348:0:o;33896:578::-;34055:4;-1:-1:-1;;;;;34028:31:0;:23;34043:7;34028:14;:23::i;:::-;-1:-1:-1;;;;;34028:31:0;;34020:85;;;;-1:-1:-1;;;34020:85:0;;15844:2:1;34020:85:0;;;15826:21:1;15883:2;15863:18;;;15856:30;15922:34;15902:18;;;15895:62;-1:-1:-1;;;15973:18:1;;;15966:39;16022:19;;34020:85:0;15642:405:1;34020:85:0;-1:-1:-1;;;;;34124:16:0;;34116:65;;;;-1:-1:-1;;;34116:65:0;;11183:2:1;34116:65:0;;;11165:21:1;11222:2;11202:18;;;11195:30;11261:34;11241:18;;;11234:62;-1:-1:-1;;;11312:18:1;;;11305:34;11356:19;;34116:65:0;10981:400:1;34116:65:0;34194:39;34215:4;34221:2;34225:7;34194:20;:39::i;:::-;34298:29;34315:1;34319:7;34298:8;:29::i;:::-;-1:-1:-1;;;;;34340:15:0;;;;;;:9;:15;;;;;:20;;34359:1;;34340:15;:20;;34359:1;;34340:20;:::i;:::-;;;;-1:-1:-1;;;;;;;34371:13:0;;;;;;:9;:13;;;;;:18;;34388:1;;34371:13;:18;;34388:1;;34371:18;:::i;:::-;;;;-1:-1:-1;;34400:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;34400:21:0;-1:-1:-1;;;;;34400:21:0;;;;;;;;;34439:27;;34400:16;;34439:27;;;;;;;33896:578;;;:::o;5386:191::-;5479:6;;;-1:-1:-1;;;;;5496:17:0;;;-1:-1:-1;;;;;;5496:17:0;;;;;;;5529:40;;5479:6;;;5496:17;5479:6;;5529:40;;5460:16;;5529:40;5449:128;5386:191;:::o;31594:110::-;31670:26;31680:2;31684:7;31670:26;;;;;;;;;;;;:9;:26::i;34908:315::-;35063:8;-1:-1:-1;;;;;35054:17:0;:5;-1:-1:-1;;;;;35054:17:0;;;35046:55;;;;-1:-1:-1;;;35046:55:0;;11588:2:1;35046:55:0;;;11570:21:1;11627:2;11607:18;;;11600:30;11666:27;11646:18;;;11639:55;11711:18;;35046:55:0;11386:349:1;35046:55:0;-1:-1:-1;;;;;35112:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;35112:46:0;;;;;;;;;;35174:41;;8402::1;;;35174::0;;8375:18:1;35174:41:0;;;;;;;34908:315;;;:::o;29982:::-;30139:28;30149:4;30155:2;30159:7;30139:9;:28::i;:::-;30186:48;30209:4;30215:2;30219:7;30228:5;30186:22;:48::i;:::-;30178:111;;;;-1:-1:-1;;;30178:111:0;;;;;;;:::i;45356:102::-;45416:13;45445:7;45438:14;;;;;:::i;402:723::-;458:13;679:10;675:53;;-1:-1:-1;;706:10:0;;;;;;;;;;;;-1:-1:-1;;;706:10:0;;;;;402:723::o;675:53::-;753:5;738:12;794:78;801:9;;794:78;;827:8;;;;:::i;:::-;;-1:-1:-1;850:10:0;;-1:-1:-1;858:2:0;850:10;;:::i;:::-;;;794:78;;;882:19;914:6;904:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;904:17:0;;882:39;;932:154;939:10;;932:154;;966:11;976:1;966:11;;:::i;:::-;;-1:-1:-1;1035:10:0;1043:2;1035:5;:10;:::i;:::-;1022:24;;:2;:24;:::i;:::-;1009:39;;992:6;999;992:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;992:56:0;;;;;;;;-1:-1:-1;1063:11:0;1072:2;1063:11;;:::i;:::-;;;932:154;;39979:589;-1:-1:-1;;;;;40185:18:0;;40181:187;;40220:40;40252:7;41395:10;:17;;41368:24;;;;:15;:24;;;;;:44;;;41423:24;;;;;;;;;;;;41291:164;40220:40;40181:187;;;40290:2;-1:-1:-1;;;;;40282:10:0;:4;-1:-1:-1;;;;;40282:10:0;;40278:90;;40309:47;40342:4;40348:7;40309:32;:47::i;:::-;-1:-1:-1;;;;;40382:16:0;;40378:183;;40415:45;40452:7;40415:36;:45::i;40378:183::-;40488:4;-1:-1:-1;;;;;40482:10:0;:2;-1:-1:-1;;;;;40482:10:0;;40478:83;;40509:40;40537:2;40541:7;40509:27;:40::i;31931:321::-;32061:18;32067:2;32071:7;32061:5;:18::i;:::-;32112:54;32143:1;32147:2;32151:7;32160:5;32112:22;:54::i;:::-;32090:154;;;;-1:-1:-1;;;32090:154:0;;;;;;;:::i;35788:799::-;35943:4;-1:-1:-1;;;;;35964:13:0;;6727:20;6775:8;35960:620;;36000:72;;-1:-1:-1;;;36000:72:0;;-1:-1:-1;;;;;36000:36:0;;;;;:72;;2920:10;;36051:4;;36057:7;;36066:5;;36000:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36000:72:0;;;;;;;;-1:-1:-1;;36000:72:0;;;;;;;;;;;;:::i;:::-;;;35996:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36242:13:0;;36238:272;;36285:60;;-1:-1:-1;;;36285:60:0;;;;;;;:::i;36238:272::-;36460:6;36454:13;36445:6;36441:2;36437:15;36430:38;35996:529;-1:-1:-1;;;;;;36123:51:0;-1:-1:-1;;;36123:51:0;;-1:-1:-1;36116:58:0;;35960:620;-1:-1:-1;36564:4:0;35788:799;;;;;;:::o;42082:988::-;42348:22;42398:1;42373:22;42390:4;42373:16;:22::i;:::-;:26;;;;:::i;:::-;42410:18;42431:26;;;:17;:26;;;;;;42348:51;;-1:-1:-1;42564:28:0;;;42560:328;;-1:-1:-1;;;;;42631:18:0;;42609:19;42631:18;;;:12;:18;;;;;;;;:34;;;;;;;;;42682:30;;;;;;:44;;;42799:30;;:17;:30;;;;;:43;;;42560:328;-1:-1:-1;42984:26:0;;;;:17;:26;;;;;;;;42977:33;;;-1:-1:-1;;;;;43028:18:0;;;;;:12;:18;;;;;:34;;;;;;;43021:41;42082:988::o;43365:1079::-;43643:10;:17;43618:22;;43643:21;;43663:1;;43643:21;:::i;:::-;43675:18;43696:24;;;:15;:24;;;;;;44069:10;:26;;43618:46;;-1:-1:-1;43696:24:0;;43618:46;;44069:26;;;;;;:::i;:::-;;;;;;;;;44047:48;;44133:11;44108:10;44119;44108:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;44213:28;;;:15;:28;;;;;;;:41;;;44385:24;;;;;44378:31;44420:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;43436:1008;;;43365:1079;:::o;40869:221::-;40954:14;40971:20;40988:2;40971:16;:20::i;:::-;-1:-1:-1;;;;;41002:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;41047:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;40869:221:0:o;32588:382::-;-1:-1:-1;;;;;32668:16:0;;32660:61;;;;-1:-1:-1;;;32660:61:0;;14709:2:1;32660:61:0;;;14691:21:1;;;14728:18;;;14721:30;14787:34;14767:18;;;14760:62;14839:18;;32660:61:0;14507:356:1;32660:61:0;30675:4;30699:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30699:16:0;:30;32732:58;;;;-1:-1:-1;;;32732:58:0;;10479:2:1;32732:58:0;;;10461:21:1;10518:2;10498:18;;;10491:30;10557;10537:18;;;10530:58;10605:18;;32732:58:0;10277:352:1;32732:58:0;32803:45;32832:1;32836:2;32840:7;32803:20;:45::i;:::-;-1:-1:-1;;;;;32861:13:0;;;;;;:9;:13;;;;;:18;;32878:1;;32861:13;:18;;32878:1;;32861:18;:::i;:::-;;;;-1:-1:-1;;32890:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;32890:21:0;-1:-1:-1;;;;;32890:21:0;;;;;;;;32929:33;;32890:16;;;32929:33;;32890:16;;32929:33;32588:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:615::-;3057:6;3065;3118:2;3106:9;3097:7;3093:23;3089:32;3086:52;;;3134:1;3131;3124:12;3086:52;3174:9;3161:23;3203:18;3244:2;3236:6;3233:14;3230:34;;;3260:1;3257;3250:12;3230:34;3298:6;3287:9;3283:22;3273:32;;3343:7;3336:4;3332:2;3328:13;3324:27;3314:55;;3365:1;3362;3355:12;3314:55;3405:2;3392:16;3431:2;3423:6;3420:14;3417:34;;;3447:1;3444;3437:12;3417:34;3500:7;3495:2;3485:6;3482:1;3478:14;3474:2;3470:23;3466:32;3463:45;3460:65;;;3521:1;3518;3511:12;3460:65;3552:2;3544:11;;;;;3574:6;;-1:-1:-1;2971:615:1;;-1:-1:-1;;;;2971:615:1:o;3591:180::-;3647:6;3700:2;3688:9;3679:7;3675:23;3671:32;3668:52;;;3716:1;3713;3706:12;3668:52;3739:26;3755:9;3739:26;:::i;3776:245::-;3834:6;3887:2;3875:9;3866:7;3862:23;3858:32;3855:52;;;3903:1;3900;3893:12;3855:52;3942:9;3929:23;3961:30;3985:5;3961:30;:::i;4026:249::-;4095:6;4148:2;4136:9;4127:7;4123:23;4119:32;4116:52;;;4164:1;4161;4154:12;4116:52;4196:9;4190:16;4215:30;4239:5;4215:30;:::i;4280:450::-;4349:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:52;;;4418:1;4415;4408:12;4370:52;4458:9;4445:23;4491:18;4483:6;4480:30;4477:50;;;4523:1;4520;4513:12;4477:50;4546:22;;4599:4;4591:13;;4587:27;-1:-1:-1;4577:55:1;;4628:1;4625;4618:12;4577:55;4651:73;4716:7;4711:2;4698:16;4693:2;4689;4685:11;4651:73;:::i;4735:180::-;4794:6;4847:2;4835:9;4826:7;4822:23;4818:32;4815:52;;;4863:1;4860;4853:12;4815:52;-1:-1:-1;4886:23:1;;4735:180;-1:-1:-1;4735:180:1:o;4920:257::-;4961:3;4999:5;4993:12;5026:6;5021:3;5014:19;5042:63;5098:6;5091:4;5086:3;5082:14;5075:4;5068:5;5064:16;5042:63;:::i;:::-;5159:2;5138:15;-1:-1:-1;;5134:29:1;5125:39;;;;5166:4;5121:50;;4920:257;-1:-1:-1;;4920:257:1:o;5182:1527::-;5406:3;5444:6;5438:13;5470:4;5483:51;5527:6;5522:3;5517:2;5509:6;5505:15;5483:51;:::i;:::-;5597:13;;5556:16;;;;5619:55;5597:13;5556:16;5641:15;;;5619:55;:::i;:::-;5763:13;;5696:20;;;5736:1;;5823;5845:18;;;;5898;;;;5925:93;;6003:4;5993:8;5989:19;5977:31;;5925:93;6066:2;6056:8;6053:16;6033:18;6030:40;6027:167;;;-1:-1:-1;;;6093:33:1;;6149:4;6146:1;6139:15;6179:4;6100:3;6167:17;6027:167;6210:18;6237:110;;;;6361:1;6356:328;;;;6203:481;;6237:110;-1:-1:-1;;6272:24:1;;6258:39;;6317:20;;;;-1:-1:-1;6237:110:1;;6356:328;18673:1;18666:14;;;18710:4;18697:18;;6451:1;6465:169;6479:8;6476:1;6473:15;6465:169;;;6561:14;;6546:13;;;6539:37;6604:16;;;;6496:10;;6465:169;;;6469:3;;6665:8;6658:5;6654:20;6647:27;;6203:481;-1:-1:-1;6700:3:1;;5182:1527;-1:-1:-1;;;;;;;;;;;5182:1527:1:o;7132:488::-;-1:-1:-1;;;;;7401:15:1;;;7383:34;;7453:15;;7448:2;7433:18;;7426:43;7500:2;7485:18;;7478:34;;;7548:3;7543:2;7528:18;;7521:31;;;7326:4;;7569:45;;7594:19;;7586:6;7569:45;:::i;:::-;7561:53;7132:488;-1:-1:-1;;;;;;7132:488:1:o;7625:632::-;7796:2;7848:21;;;7918:13;;7821:18;;;7940:22;;;7767:4;;7796:2;8019:15;;;;7993:2;7978:18;;;7767:4;8062:169;8076:6;8073:1;8070:13;8062:169;;;8137:13;;8125:26;;8206:15;;;;8171:12;;;;8098:1;8091:9;8062:169;;;-1:-1:-1;8248:3:1;;7625:632;-1:-1:-1;;;;;;7625:632:1:o;8454:219::-;8603:2;8592:9;8585:21;8566:4;8623:44;8663:2;8652:9;8648:18;8640:6;8623:44;:::i;9451:414::-;9653:2;9635:21;;;9692:2;9672:18;;;9665:30;9731:34;9726:2;9711:18;;9704:62;-1:-1:-1;;;9797:2:1;9782:18;;9775:48;9855:3;9840:19;;9451:414::o;15281:356::-;15483:2;15465:21;;;15502:18;;;15495:30;15561:34;15556:2;15541:18;;15534:62;15628:2;15613:18;;15281:356::o;17227:413::-;17429:2;17411:21;;;17468:2;17448:18;;;17441:30;17507:34;17502:2;17487:18;;17480:62;-1:-1:-1;;;17573:2:1;17558:18;;17551:47;17630:3;17615:19;;17227:413::o;18726:128::-;18766:3;18797:1;18793:6;18790:1;18787:13;18784:39;;;18803:18;;:::i;:::-;-1:-1:-1;18839:9:1;;18726:128::o;18859:120::-;18899:1;18925;18915:35;;18930:18;;:::i;:::-;-1:-1:-1;18964:9:1;;18859:120::o;18984:168::-;19024:7;19090:1;19086;19082:6;19078:14;19075:1;19072:21;19067:1;19060:9;19053:17;19049:45;19046:71;;;19097:18;;:::i;:::-;-1:-1:-1;19137:9:1;;18984:168::o;19157:125::-;19197:4;19225:1;19222;19219:8;19216:34;;;19230:18;;:::i;:::-;-1:-1:-1;19267:9:1;;19157:125::o;19287:258::-;19359:1;19369:113;19383:6;19380:1;19377:13;19369:113;;;19459:11;;;19453:18;19440:11;;;19433:39;19405:2;19398:10;19369:113;;;19500:6;19497:1;19494:13;19491:48;;;-1:-1:-1;;19535:1:1;19517:16;;19510:27;19287:258::o;19550:380::-;19629:1;19625:12;;;;19672;;;19693:61;;19747:4;19739:6;19735:17;19725:27;;19693:61;19800:2;19792:6;19789:14;19769:18;19766:38;19763:161;;;19846:10;19841:3;19837:20;19834:1;19827:31;19881:4;19878:1;19871:15;19909:4;19906:1;19899:15;19763:161;;19550:380;;;:::o;19935:135::-;19974:3;-1:-1:-1;;19995:17:1;;19992:43;;;20015:18;;:::i;:::-;-1:-1:-1;20062:1:1;20051:13;;19935:135::o;20075:112::-;20107:1;20133;20123:35;;20138:18;;:::i;:::-;-1:-1:-1;20172:9:1;;20075:112::o;20192:127::-;20253:10;20248:3;20244:20;20241:1;20234:31;20284:4;20281:1;20274:15;20308:4;20305:1;20298:15;20324:127;20385:10;20380:3;20376:20;20373:1;20366:31;20416:4;20413:1;20406:15;20440:4;20437:1;20430:15;20456:127;20517:10;20512:3;20508:20;20505:1;20498:31;20548:4;20545:1;20538:15;20572:4;20569:1;20562:15;20588:127;20649:10;20644:3;20640:20;20637:1;20630:31;20680:4;20677:1;20670:15;20704:4;20701:1;20694:15;20720:127;20781:10;20776:3;20772:20;20769:1;20762:31;20812:4;20809:1;20802:15;20836:4;20833:1;20826:15;20852:131;-1:-1:-1;;;;;;20926:32:1;;20916:43;;20906:71;;20973:1;20970;20963:12

Swarm Source

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