ETH Price: $2,483.51 (-7.92%)

Contract

0x8441dCfad9cdE04E67CE784dD058Bf599EcAd4EC
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...171345352023-04-27 2:25:23489 days ago1682562323IN
Headspace Hunters: Token
0 ETH0.0017234236.93908529
Safe Transfer Fr...170948052023-04-21 12:35:59494 days ago1682080559IN
Headspace Hunters: Token
0 ETH0.0020717433.14161572
Set Approval For...167739682023-03-07 4:10:35540 days ago1678162235IN
Headspace Hunters: Token
0 ETH0.001177725.24236656
Set Approval For...167588802023-03-05 1:17:23542 days ago1677979043IN
Headspace Hunters: Token
0 ETH0.001074923.03898047
Set Approval For...167137312023-02-26 16:56:35548 days ago1677430595IN
Headspace Hunters: Token
0 ETH0.0010538422.58756083
Transfer From167013012023-02-24 22:59:59550 days ago1677279599IN
Headspace Hunters: Token
0 ETH0.0018478129.08066662
Safe Transfer Fr...166794732023-02-21 21:13:23553 days ago1677014003IN
Headspace Hunters: Token
0 ETH0.0013380726.65492865
Safe Transfer Fr...166794662023-02-21 21:11:59553 days ago1677013919IN
Headspace Hunters: Token
0 ETH0.0017612626.17040226
Set Open166580132023-02-18 20:53:35556 days ago1676753615IN
Headspace Hunters: Token
0 ETH0.0005503418.91613014
Withdraw166580072023-02-18 20:52:23556 days ago1676753543IN
Headspace Hunters: Token
0 ETH0.0005741718.74750231
Mint166565452023-02-18 15:55:59556 days ago1676735759IN
Headspace Hunters: Token
0.1665 ETH0.0051775329.95011262
Set Approval For...166551642023-02-18 11:16:35556 days ago1676718995IN
Headspace Hunters: Token
0 ETH0.0010657822.84342217
Mint166550852023-02-18 11:00:23556 days ago1676718023IN
Headspace Hunters: Token
0.0333 ETH0.0015617523.03334092
Mint166550482023-02-18 10:52:59556 days ago1676717579IN
Headspace Hunters: Token
0.0666 ETH0.0022130223.52509021
Mint166549922023-02-18 10:41:47556 days ago1676716907IN
Headspace Hunters: Token
0.0333 ETH0.0014790521.81369122
Mint166549772023-02-18 10:38:47556 days ago1676716727IN
Headspace Hunters: Token
0.0333 ETH0.0015487422.84156241
Mint166549252023-02-18 10:27:59556 days ago1676716079IN
Headspace Hunters: Token
0.0999 ETH0.0027463722.82217922
Mint166549132023-02-18 10:25:23556 days ago1676715923IN
Headspace Hunters: Token
0.0999 ETH0.0025846321.47815866
Mint166548372023-02-18 10:09:47556 days ago1676714987IN
Headspace Hunters: Token
0.0333 ETH0.0018108126.70667195
Mint166547052023-02-18 9:42:47556 days ago1676713367IN
Headspace Hunters: Token
0.0333 ETH0.0015581522.98030498
Mint166533952023-02-18 5:17:23557 days ago1676697443IN
Headspace Hunters: Token
0.0333 ETH0.0018531621.82660065
Set Max Per Mint166533862023-02-18 5:15:35557 days ago1676697335IN
Headspace Hunters: Token
0 ETH0.0007189424.74426785
Set Max Per Wall...166533762023-02-18 5:13:35557 days ago1676697215IN
Headspace Hunters: Token
0 ETH0.0006759823.2770425
Transfer Ownersh...166533572023-02-18 5:09:35557 days ago1676696975IN
Headspace Hunters: Token
0 ETH0.0006928323.85532343
Withdraw166531822023-02-18 4:34:23557 days ago1676694863IN
Headspace Hunters: Token
0 ETH0.0006556321.40717824
View all transactions

Latest 13 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
166580072023-02-18 20:52:23556 days ago1676753543
Headspace Hunters: Token
0.6327 ETH
166531822023-02-18 4:34:23557 days ago1676694863
Headspace Hunters: Token
1.5318 ETH
164299772023-01-18 0:02:35588 days ago1674000155
Headspace Hunters: Token
0.8991 ETH
163461992023-01-06 7:17:47599 days ago1672989467
Headspace Hunters: Token
0.5994 ETH
163221292023-01-02 22:39:23603 days ago1672699163
Headspace Hunters: Token
0.2664 ETH
163079802022-12-31 23:18:11605 days ago1672528691
Headspace Hunters: Token
0.9657 ETH
162583312022-12-25 0:58:59612 days ago1671929939
Headspace Hunters: Token
2.1312 ETH
161898832022-12-15 11:46:11621 days ago1671104771
Headspace Hunters: Token
1.1056 ETH
155254782022-09-13 6:39:08714 days ago1663051148
Headspace Hunters: Token
0.08 ETH
153935872022-08-23 1:02:09736 days ago1661216529
Headspace Hunters: Token
0.48 ETH
153108122022-08-09 23:05:34749 days ago1660086334
Headspace Hunters: Token
0.24 ETH
151654132022-07-18 7:55:34771 days ago1658130934
Headspace Hunters: Token
1.2 ETH
151240162022-07-11 22:23:47778 days ago1657578227
Headspace Hunters: Token
4.96 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HeadspaceHuntersPresale

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-25
*/

// File: contracts/HeadspaceHunters1.sol

// Sources flattened with hardhat v2.8.0 https://hardhat.org

// File @openzeppelin/contracts/utils/introspection/[email protected]

// 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/token/ERC721/[email protected]

// 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/[email protected]

// 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/token/ERC721/extensions/[email protected]

// 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/utils/[email protected]

// 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/utils/[email protected]

// 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/utils/[email protected]

// 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/introspection/[email protected]

// 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/[email protected]

// 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/access/[email protected]

// 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 contracts/HeadspaceHunters.sol


pragma solidity ^0.8.4;

contract HeadspaceHunters is ERC721, Ownable {
//    string internal baseUri;
		string public baseTokenURI;

    uint256 public cost = 0.095 ether;
    uint32 public maxPerMint = 5;
    uint32 public maxPerWallet = 12;
    uint32 public supply = 0;
    uint32 public totalSupply = 10671;
    bool public open = false;
		address public contractOwner;

    mapping(address => uint256) internal addressMintedMap;


    constructor(
        string memory _uri,
        string memory _name,
        string memory _symbol
    ) ERC721(_name, _symbol) {
				setBaseURI(_uri);
				contractOwner = msg.sender;
    }



    // ------ Owner Only ------

		// Override empty function to return baseTokenURI
		// to tell our contract that baseTokenURI is the base URI our contract must use
		function _baseURI() internal view virtual override returns (string memory) {
			return baseTokenURI;
		}

		function setBaseURI(string memory _baseTokenURI) public onlyOwner {
			baseTokenURI = _baseTokenURI;
		}

    function setCost(uint256 _cost) public onlyOwner {
        cost = _cost;
    }

    function setOpen(bool _open) public onlyOwner {
        open = _open;
    }

    function setMaxPerWallet(uint32 _max) public onlyOwner {
        maxPerWallet = _max;
    }

    function setMaxPerMint(uint32 _max) public onlyOwner {
        maxPerMint = _max;
    }

    function airdrop(address[] calldata to) public onlyOwner {
        for (uint32 i = 0; i < to.length; i++) {
            require(1 + supply <= totalSupply, "Limit reached");
            _safeMint(to[i], ++supply, "");
        }
    }

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

    // ------ Mint! ------

    function mint(uint32 count) external payable preMintChecks(count) {
        require(open == true, "Mint not open");
        performMint(count);
    }

    function performMint(uint32 count) internal {
        for (uint32 i = 0; i < count; i++) {
            _safeMint(msg.sender, ++supply, "");
        }
        
        addressMintedMap[msg.sender] += count;
    }

    // ------ Read ------

    // ------ Modifiers ------

    modifier preMintChecks(uint32 count) {
        require(count > 0, "Mint at least one.");
        require(count < maxPerMint + 1, "Max mint reached.");
        require(msg.value >= cost * count, "Not enough fund.");
        require(supply + count < totalSupply + 1, "Mint sold out");

				// #8526 to #10671 is reserved for airdrop
				if(supply + count >=8527) {
					require(msg.sender == contractOwner, "Only author can mint");
				}
        require(
            addressMintedMap[msg.sender] + count <= maxPerWallet,
            "Max total mint reached"
        );
        _;
    }
}


// File @openzeppelin/contracts/utils/cryptography/[email protected]

// OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }
        return computedHash;
    }
}


// contracts/utils/Presaleable.sol
pragma solidity ^0.8.4;

abstract contract Presaleable is HeadspaceHunters {
    bool public presaleOpen = false;
    bytes32 private merkleRoot;
		uint256 public presaleCost = 0.05 ether;
		uint32 public presaleMaxPerMint = 5;
    uint32 public presaleMaxPerWallet = 12;


		/**
			* Presale functions
			*/
		// Only owner
    function setPresaleOpen(bool _open) public onlyOwner {
        presaleOpen = _open;
    }

    function setPreSaleAddresses(bytes32 root) public onlyOwner {
        merkleRoot = root;
    }

		function setPresaleCost(uint256 _cost) public onlyOwner {
			presaleCost = _cost;
    }

		function setPresaleMaxPerWallet(uint32 _max) public onlyOwner {
        presaleMaxPerWallet = _max;
    }

    function setPresaleMaxPerMint(uint32 _max) public onlyOwner {
        presaleMaxPerMint = _max;
    }

		// Public
    function presaleMint(uint32 count, bytes32[] calldata proof)
        external
        payable
        prePresaleMintChecks(count)
    {
        require(presaleOpen, "Presale not open");
        require(merkleRoot != "", "Presale not ready");
        require(
            MerkleProof.verify(
                proof,
                merkleRoot,
                keccak256(abi.encodePacked(msg.sender))
            ),
            "Not a presale member"
        );

        performMint(count);
    }

		// Modifiers
		modifier prePresaleMintChecks(uint32 count) {
			require(count > 0, "Mint at least one.");
			require(count < presaleMaxPerMint + 1, "Max mint reached.");
			require(msg.value >= presaleCost * count, "Not enough fund.");
			require(supply + count < totalSupply + 1, "Mint sold out");

			// #8527 to #10671 is reserved for airdrop
			if(supply + count >=8527) {
				require(msg.sender == contractOwner, "Only author can mint");

			}
			require(
					addressMintedMap[msg.sender] + count <= presaleMaxPerWallet,
					"Max total mint reached"
			);
			_;
    }
}




// File contracts/extensions/Presale.sol


pragma solidity ^0.8.4;



contract HeadspaceHuntersPresale is HeadspaceHunters, Presaleable {
    constructor(
        string memory _uri,
        string memory _name,
        string memory _symbol
    ) HeadspaceHunters(_uri, _name, _symbol) {}

    function tokenURI(uint256 _tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(_tokenId <= supply, "Not minted yet");

        return
            string(
                abi.encodePacked(baseTokenURI, Strings.toString(_tokenId), ".json")
            );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_uri","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","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":"to","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"maxPerMint","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"open","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":[],"name":"presaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleMaxPerMint","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleMaxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"presaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"presaleOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseTokenURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_max","type":"uint32"}],"name":"setMaxPerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_max","type":"uint32"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_open","type":"bool"}],"name":"setOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"setPreSaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setPresaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_max","type":"uint32"}],"name":"setPresaleMaxPerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_max","type":"uint32"}],"name":"setPresaleMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_open","type":"bool"}],"name":"setPresaleOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","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":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"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":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

608060405267015181ff25a980006008556005600960006101000a81548163ffffffff021916908363ffffffff160217905550600c600960046101000a81548163ffffffff021916908363ffffffff1602179055506000600960086101000a81548163ffffffff021916908363ffffffff1602179055506129af6009600c6101000a81548163ffffffff021916908363ffffffff1602179055506000600960106101000a81548160ff0219169083151502179055506000600c60006101000a81548160ff02191690831515021790555066b1a2bc2ec50000600e556005600f60006101000a81548163ffffffff021916908363ffffffff160217905550600c600f60046101000a81548163ffffffff021916908363ffffffff1602179055503480156200012b57600080fd5b50604051620056d2380380620056d28339818101604052810190620001519190620004d9565b828282818181600090805190602001906200016e929190620003ab565b50806001908051906020019062000187929190620003ab565b505050620001aa6200019e6200020860201b60201c565b6200021060201b60201c565b620001bb83620002d660201b60201c565b33600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000799565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002e66200020860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200030c6200038160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000365576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035c90620005b9565b60405180910390fd5b80600790805190602001906200037d929190620003ab565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003b99062000681565b90600052602060002090601f016020900481019282620003dd576000855562000429565b82601f10620003f857805160ff191683800117855562000429565b8280016001018555821562000429579182015b82811115620004285782518255916020019190600101906200040b565b5b5090506200043891906200043c565b5090565b5b80821115620004575760008160009055506001016200043d565b5090565b6000620004726200046c8462000604565b620005db565b90508281526020810184848401111562000491576200049062000750565b5b6200049e8482856200064b565b509392505050565b600082601f830112620004be57620004bd6200074b565b5b8151620004d08482602086016200045b565b91505092915050565b600080600060608486031215620004f557620004f46200075a565b5b600084015167ffffffffffffffff81111562000516576200051562000755565b5b6200052486828701620004a6565b935050602084015167ffffffffffffffff81111562000548576200054762000755565b5b6200055686828701620004a6565b925050604084015167ffffffffffffffff8111156200057a576200057962000755565b5b6200058886828701620004a6565b9150509250925092565b6000620005a16020836200063a565b9150620005ae8262000770565b602082019050919050565b60006020820190508181036000830152620005d48162000592565b9050919050565b6000620005e7620005fa565b9050620005f58282620006b7565b919050565b6000604051905090565b600067ffffffffffffffff8211156200062257620006216200071c565b5b6200062d826200075f565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200066b5780820151818401526020810190506200064e565b838111156200067b576000848401525b50505050565b600060028204905060018216806200069a57607f821691505b60208210811415620006b157620006b0620006ed565b5b50919050565b620006c2826200075f565b810181811067ffffffffffffffff82111715620006e457620006e36200071c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b614f2980620007a96000396000f3fe6080604052600436106102515760003560e01c8063715018a611610139578063b88d4fde116100b6578063d547cfb71161007a578063d547cfb71461084d578063e985e9c514610878578063f2fde38b146108b5578063f5b96621146108de578063f8048d8f14610907578063fcfff16f1461093057610251565b8063b88d4fde14610768578063be3c27f414610791578063bee6348a146107ba578063c87b56dd146107e5578063ce606ee01461082257610251565b80638fdcf942116100fd5780638fdcf942146106a657806395d89b41146106cf5780639e5666cd146106fa578063a22cb46514610723578063a71bbebe1461074c57610251565b8063715018a6146105e7578063729ad39e146105fe57806374164e361461062757806377bbe28b146106525780638da5cb5b1461067b57610251565b80632a23d07d116101d2578063453c231011610196578063453c2310146104c5578063507e094f146104f057806355f804b31461051b5780636352211e146105445780636fdca5e01461058157806370a08231146105aa57610251565b80632a23d07d146104155780633006b543146104405780633ccfd60b1461046957806342842e0e1461047357806344a0d68a1461049c57610251565b8063095ea7b311610219578063095ea7b31461034257806312c23bd81461036b57806313faede61461039657806318160ddd146103c157806323b872dd146103ec57610251565b806301ffc9a7146102565780630364d22a14610293578063047fc9aa146102af57806306fdde03146102da578063081812fc14610305575b600080fd5b34801561026257600080fd5b5061027d6004803603810190610278919061373b565b61095b565b60405161028a9190613f0d565b60405180910390f35b6102ad60048036038101906102a89190613838565b610a3d565b005b3480156102bb57600080fd5b506102c4610e91565b6040516102d191906142c5565b60405180910390f35b3480156102e657600080fd5b506102ef610ea7565b6040516102fc9190613f28565b60405180910390f35b34801561031157600080fd5b5061032c600480360381019061032791906137de565b610f39565b6040516103399190613ea6565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190613654565b610fbe565b005b34801561037757600080fd5b506103806110d6565b60405161038d91906142c5565b60405180910390f35b3480156103a257600080fd5b506103ab6110ec565b6040516103b891906142aa565b60405180910390f35b3480156103cd57600080fd5b506103d66110f2565b6040516103e391906142c5565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e919061353e565b611108565b005b34801561042157600080fd5b5061042a611168565b60405161043791906142aa565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061380b565b61116e565b005b61047161120e565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061353e565b611303565b005b3480156104a857600080fd5b506104c360048036038101906104be91906137de565b611323565b005b3480156104d157600080fd5b506104da6113a9565b6040516104e791906142c5565b60405180910390f35b3480156104fc57600080fd5b506105056113bf565b60405161051291906142c5565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190613795565b6113d5565b005b34801561055057600080fd5b5061056b600480360381019061056691906137de565b61146b565b6040516105789190613ea6565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a391906136e1565b61151d565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906134d1565b6115b6565b6040516105de91906142aa565b60405180910390f35b3480156105f357600080fd5b506105fc61166e565b005b34801561060a57600080fd5b5061062560048036038101906106209190613694565b6116f6565b005b34801561063357600080fd5b5061063c6118a4565b60405161064991906142c5565b60405180910390f35b34801561065e57600080fd5b506106796004803603810190610674919061380b565b6118ba565b005b34801561068757600080fd5b5061069061195a565b60405161069d9190613ea6565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c891906137de565b611984565b005b3480156106db57600080fd5b506106e4611a0a565b6040516106f19190613f28565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c919061370e565b611a9c565b005b34801561072f57600080fd5b5061074a60048036038101906107459190613614565b611b22565b005b6107666004803603810190610761919061380b565b611b38565b005b34801561077457600080fd5b5061078f600480360381019061078a9190613591565b611e98565b005b34801561079d57600080fd5b506107b860048036038101906107b3919061380b565b611efa565b005b3480156107c657600080fd5b506107cf611f9a565b6040516107dc9190613f0d565b60405180910390f35b3480156107f157600080fd5b5061080c600480360381019061080791906137de565b611fad565b6040516108199190613f28565b60405180910390f35b34801561082e57600080fd5b5061083761203c565b6040516108449190613ea6565b60405180910390f35b34801561085957600080fd5b50610862612062565b60405161086f9190613f28565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a91906134fe565b6120f0565b6040516108ac9190613f0d565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d791906134d1565b612184565b005b3480156108ea57600080fd5b50610905600480360381019061090091906136e1565b61227c565b005b34801561091357600080fd5b5061092e6004803603810190610929919061380b565b612315565b005b34801561093c57600080fd5b506109456123b5565b6040516109529190613f0d565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a2657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a365750610a35826123c8565b5b9050919050565b8260008163ffffffff1611610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e9061428a565b60405180910390fd5b6001600f60009054906101000a900463ffffffff16610aa69190614420565b63ffffffff168163ffffffff1610610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea9061426a565b60405180910390fd5b8063ffffffff16600e54610b07919061448b565b341015610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b409061424a565b60405180910390fd5b60016009600c9054906101000a900463ffffffff16610b689190614420565b63ffffffff1681600960089054906101000a900463ffffffff16610b8c9190614420565b63ffffffff1610610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc99061418a565b60405180910390fd5b61214f81600960089054906101000a900463ffffffff16610bf39190614420565b63ffffffff1610610c8f57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c85906141aa565b60405180910390fd5b5b600f60049054906101000a900463ffffffff1663ffffffff168163ffffffff16600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf991906143ca565b1115610d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d319061400a565b60405180910390fd5b600c60009054906101000a900460ff16610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d809061420a565b60405180910390fd5b6000600d541415610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690613f4a565b60405180910390fd5b610e43838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600d5433604051602001610e289190613e1b565b60405160208183030381529060405280519060200120612432565b610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990613fea565b60405180910390fd5b610e8b84612449565b50505050565b600960089054906101000a900463ffffffff1681565b606060008054610eb6906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee2906145e9565b8015610f2f5780601f10610f0457610100808354040283529160200191610f2f565b820191906000526020600020905b815481529060010190602001808311610f1257829003601f168201915b5050505050905090565b6000610f448261252d565b610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a9061412a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610fc98261146b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561103a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611031906141ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611059612599565b73ffffffffffffffffffffffffffffffffffffffff161480611088575061108781611082612599565b6120f0565b5b6110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be906140aa565b60405180910390fd5b6110d183836125a1565b505050565b600f60049054906101000a900463ffffffff1681565b60085481565b6009600c9054906101000a900463ffffffff1681565b611119611113612599565b8261265a565b611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f9061422a565b60405180910390fd5b611163838383612738565b505050565b600e5481565b611176612599565b73ffffffffffffffffffffffffffffffffffffffff1661119461195a565b73ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e19061414a565b60405180910390fd5b80600960046101000a81548163ffffffff021916908363ffffffff16021790555050565b611216612599565b73ffffffffffffffffffffffffffffffffffffffff1661123461195a565b73ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112819061414a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516112b090613e91565b60006040518083038185875af1925050503d80600081146112ed576040519150601f19603f3d011682016040523d82523d6000602084013e6112f2565b606091505b505090508061130057600080fd5b50565b61131e83838360405180602001604052806000815250611e98565b505050565b61132b612599565b73ffffffffffffffffffffffffffffffffffffffff1661134961195a565b73ffffffffffffffffffffffffffffffffffffffff161461139f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113969061414a565b60405180910390fd5b8060088190555050565b600960049054906101000a900463ffffffff1681565b600960009054906101000a900463ffffffff1681565b6113dd612599565b73ffffffffffffffffffffffffffffffffffffffff166113fb61195a565b73ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114489061414a565b60405180910390fd5b806007908051906020019061146792919061320f565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b906140ea565b60405180910390fd5b80915050919050565b611525612599565b73ffffffffffffffffffffffffffffffffffffffff1661154361195a565b73ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115909061414a565b60405180910390fd5b80600960106101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e906140ca565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611676612599565b73ffffffffffffffffffffffffffffffffffffffff1661169461195a565b73ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e19061414a565b60405180910390fd5b6116f46000612994565b565b6116fe612599565b73ffffffffffffffffffffffffffffffffffffffff1661171c61195a565b73ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117699061414a565b60405180910390fd5b60005b828290508163ffffffff16101561189f576009600c9054906101000a900463ffffffff1663ffffffff16600960089054906101000a900463ffffffff1660016117be9190614420565b63ffffffff161115611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc9061406a565b60405180910390fd5b61188c83838363ffffffff16818110611821576118206147ae565b5b905060200201602081019061183691906134d1565b6009600881819054906101000a900463ffffffff1661185490614695565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250612a5a565b808061189790614695565b915050611775565b505050565b600f60009054906101000a900463ffffffff1681565b6118c2612599565b73ffffffffffffffffffffffffffffffffffffffff166118e061195a565b73ffffffffffffffffffffffffffffffffffffffff1614611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061414a565b60405180910390fd5b80600f60006101000a81548163ffffffff021916908363ffffffff16021790555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61198c612599565b73ffffffffffffffffffffffffffffffffffffffff166119aa61195a565b73ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061414a565b60405180910390fd5b80600e8190555050565b606060018054611a19906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054611a45906145e9565b8015611a925780601f10611a6757610100808354040283529160200191611a92565b820191906000526020600020905b815481529060010190602001808311611a7557829003601f168201915b5050505050905090565b611aa4612599565b73ffffffffffffffffffffffffffffffffffffffff16611ac261195a565b73ffffffffffffffffffffffffffffffffffffffff1614611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f9061414a565b60405180910390fd5b80600d8190555050565b611b34611b2d612599565b8383612ab5565b5050565b8060008163ffffffff1611611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b799061428a565b60405180910390fd5b6001600960009054906101000a900463ffffffff16611ba19190614420565b63ffffffff168163ffffffff1610611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be59061426a565b60405180910390fd5b8063ffffffff16600854611c02919061448b565b341015611c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3b9061424a565b60405180910390fd5b60016009600c9054906101000a900463ffffffff16611c639190614420565b63ffffffff1681600960089054906101000a900463ffffffff16611c879190614420565b63ffffffff1610611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc49061418a565b60405180910390fd5b61214f81600960089054906101000a900463ffffffff16611cee9190614420565b63ffffffff1610611d8a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d80906141aa565b60405180910390fd5b5b600960049054906101000a900463ffffffff1663ffffffff168163ffffffff16600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df491906143ca565b1115611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c9061400a565b60405180910390fd5b60011515600960109054906101000a900460ff16151514611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e82906141ea565b60405180910390fd5b611e9482612449565b5050565b611ea9611ea3612599565b8361265a565b611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf9061422a565b60405180910390fd5b611ef484848484612c22565b50505050565b611f02612599565b73ffffffffffffffffffffffffffffffffffffffff16611f2061195a565b73ffffffffffffffffffffffffffffffffffffffff1614611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d9061414a565b60405180910390fd5b80600f60046101000a81548163ffffffff021916908363ffffffff16021790555050565b600c60009054906101000a900460ff1681565b6060600960089054906101000a900463ffffffff1663ffffffff1682111561200a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200190613f8a565b60405180910390fd5b600761201583612c7e565b604051602001612026929190613e62565b6040516020818303038152906040529050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007805461206f906145e9565b80601f016020809104026020016040519081016040528092919081815260200182805461209b906145e9565b80156120e85780601f106120bd576101008083540402835291602001916120e8565b820191906000526020600020905b8154815290600101906020018083116120cb57829003601f168201915b505050505081565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61218c612599565b73ffffffffffffffffffffffffffffffffffffffff166121aa61195a565b73ffffffffffffffffffffffffffffffffffffffff1614612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f79061414a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226790613faa565b60405180910390fd5b61227981612994565b50565b612284612599565b73ffffffffffffffffffffffffffffffffffffffff166122a261195a565b73ffffffffffffffffffffffffffffffffffffffff16146122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef9061414a565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b61231d612599565b73ffffffffffffffffffffffffffffffffffffffff1661233b61195a565b73ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123889061414a565b60405180910390fd5b80600960006101000a81548163ffffffff021916908363ffffffff16021790555050565b600960109054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008261243f8584612ddf565b1490509392505050565b60005b8163ffffffff168163ffffffff1610156124cd576124ba336009600881819054906101000a900463ffffffff1661248290614695565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250612a5a565b80806124c590614695565b91505061244c565b508063ffffffff16600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461252391906143ca565b9250508190555050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126148361146b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006126658261252d565b6126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b9061408a565b60405180910390fd5b60006126af8361146b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061271e57508373ffffffffffffffffffffffffffffffffffffffff1661270684610f39565b73ffffffffffffffffffffffffffffffffffffffff16145b8061272f575061272e81856120f0565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166127588261146b565b73ffffffffffffffffffffffffffffffffffffffff16146127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a59061416a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561281e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128159061402a565b60405180910390fd5b612829838383612e92565b6128346000826125a1565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461288491906144e5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128db91906143ca565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a648383612e97565b612a716000848484613065565b612ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa790613f6a565b60405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1b9061404a565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612c159190613f0d565b60405180910390a3505050565b612c2d848484612738565b612c3984848484613065565b612c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6f90613f6a565b60405180910390fd5b50505050565b60606000821415612cc6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612dda565b600082905060005b60008214612cf8578080612ce19061464c565b915050600a82612cf1919061445a565b9150612cce565b60008167ffffffffffffffff811115612d1457612d136147dd565b5b6040519080825280601f01601f191660200182016040528015612d465781602001600182028036833780820191505090505b5090505b60008514612dd357600182612d5f91906144e5565b9150600a85612d6e91906146f0565b6030612d7a91906143ca565b60f81b818381518110612d9057612d8f6147ae565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612dcc919061445a565b9450612d4a565b8093505050505b919050565b60008082905060005b8451811015612e87576000858281518110612e0657612e056147ae565b5b60200260200101519050808311612e47578281604051602001612e2a929190613e36565b604051602081830303815290604052805190602001209250612e73565b8083604051602001612e5a929190613e36565b6040516020818303038152906040528051906020012092505b508080612e7f9061464c565b915050612de8565b508091505092915050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe9061410a565b60405180910390fd5b612f108161252d565b15612f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4790613fca565b60405180910390fd5b612f5c60008383612e92565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fac91906143ca565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006130868473ffffffffffffffffffffffffffffffffffffffff166131fc565b156131ef578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026130af612599565b8786866040518563ffffffff1660e01b81526004016130d19493929190613ec1565b602060405180830381600087803b1580156130eb57600080fd5b505af192505050801561311c57506040513d601f19601f820116820180604052508101906131199190613768565b60015b61319f573d806000811461314c576040519150601f19603f3d011682016040523d82523d6000602084013e613151565b606091505b50600081511415613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e90613f6a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506131f4565b600190505b949350505050565b600080823b905060008111915050919050565b82805461321b906145e9565b90600052602060002090601f01602090048101928261323d5760008555613284565b82601f1061325657805160ff1916838001178555613284565b82800160010185558215613284579182015b82811115613283578251825591602001919060010190613268565b5b5090506132919190613295565b5090565b5b808211156132ae576000816000905550600101613296565b5090565b60006132c56132c084614305565b6142e0565b9050828152602081018484840111156132e1576132e061481b565b5b6132ec8482856145a7565b509392505050565b600061330761330284614336565b6142e0565b9050828152602081018484840111156133235761332261481b565b5b61332e8482856145a7565b509392505050565b60008135905061334581614e69565b92915050565b60008083601f84011261336157613360614811565b5b8235905067ffffffffffffffff81111561337e5761337d61480c565b5b60208301915083602082028301111561339a57613399614816565b5b9250929050565b60008083601f8401126133b7576133b6614811565b5b8235905067ffffffffffffffff8111156133d4576133d361480c565b5b6020830191508360208202830111156133f0576133ef614816565b5b9250929050565b60008135905061340681614e80565b92915050565b60008135905061341b81614e97565b92915050565b60008135905061343081614eae565b92915050565b60008151905061344581614eae565b92915050565b600082601f8301126134605761345f614811565b5b81356134708482602086016132b2565b91505092915050565b600082601f83011261348e5761348d614811565b5b813561349e8482602086016132f4565b91505092915050565b6000813590506134b681614ec5565b92915050565b6000813590506134cb81614edc565b92915050565b6000602082840312156134e7576134e6614825565b5b60006134f584828501613336565b91505092915050565b6000806040838503121561351557613514614825565b5b600061352385828601613336565b925050602061353485828601613336565b9150509250929050565b60008060006060848603121561355757613556614825565b5b600061356586828701613336565b935050602061357686828701613336565b9250506040613587868287016134a7565b9150509250925092565b600080600080608085870312156135ab576135aa614825565b5b60006135b987828801613336565b94505060206135ca87828801613336565b93505060406135db878288016134a7565b925050606085013567ffffffffffffffff8111156135fc576135fb614820565b5b6136088782880161344b565b91505092959194509250565b6000806040838503121561362b5761362a614825565b5b600061363985828601613336565b925050602061364a858286016133f7565b9150509250929050565b6000806040838503121561366b5761366a614825565b5b600061367985828601613336565b925050602061368a858286016134a7565b9150509250929050565b600080602083850312156136ab576136aa614825565b5b600083013567ffffffffffffffff8111156136c9576136c8614820565b5b6136d58582860161334b565b92509250509250929050565b6000602082840312156136f7576136f6614825565b5b6000613705848285016133f7565b91505092915050565b60006020828403121561372457613723614825565b5b60006137328482850161340c565b91505092915050565b60006020828403121561375157613750614825565b5b600061375f84828501613421565b91505092915050565b60006020828403121561377e5761377d614825565b5b600061378c84828501613436565b91505092915050565b6000602082840312156137ab576137aa614825565b5b600082013567ffffffffffffffff8111156137c9576137c8614820565b5b6137d584828501613479565b91505092915050565b6000602082840312156137f4576137f3614825565b5b6000613802848285016134a7565b91505092915050565b60006020828403121561382157613820614825565b5b600061382f848285016134bc565b91505092915050565b60008060006040848603121561385157613850614825565b5b600061385f868287016134bc565b935050602084013567ffffffffffffffff8111156138805761387f614820565b5b61388c868287016133a1565b92509250509250925092565b6138a181614519565b82525050565b6138b86138b382614519565b6146c2565b82525050565b6138c78161452b565b82525050565b6138de6138d982614537565b6146d4565b82525050565b60006138ef8261437c565b6138f98185614392565b93506139098185602086016145b6565b6139128161482a565b840191505092915050565b600061392882614387565b61393281856143ae565b93506139428185602086016145b6565b61394b8161482a565b840191505092915050565b600061396182614387565b61396b81856143bf565b935061397b8185602086016145b6565b80840191505092915050565b60008154613994816145e9565b61399e81866143bf565b945060018216600081146139b957600181146139ca576139fd565b60ff198316865281860193506139fd565b6139d385614367565b60005b838110156139f5578154818901526001820191506020810190506139d6565b838801955050505b50505092915050565b6000613a136011836143ae565b9150613a1e82614848565b602082019050919050565b6000613a366032836143ae565b9150613a4182614871565b604082019050919050565b6000613a59600e836143ae565b9150613a64826148c0565b602082019050919050565b6000613a7c6026836143ae565b9150613a87826148e9565b604082019050919050565b6000613a9f601c836143ae565b9150613aaa82614938565b602082019050919050565b6000613ac26014836143ae565b9150613acd82614961565b602082019050919050565b6000613ae56016836143ae565b9150613af08261498a565b602082019050919050565b6000613b086024836143ae565b9150613b13826149b3565b604082019050919050565b6000613b2b6019836143ae565b9150613b3682614a02565b602082019050919050565b6000613b4e600d836143ae565b9150613b5982614a2b565b602082019050919050565b6000613b71602c836143ae565b9150613b7c82614a54565b604082019050919050565b6000613b946038836143ae565b9150613b9f82614aa3565b604082019050919050565b6000613bb7602a836143ae565b9150613bc282614af2565b604082019050919050565b6000613bda6029836143ae565b9150613be582614b41565b604082019050919050565b6000613bfd6020836143ae565b9150613c0882614b90565b602082019050919050565b6000613c20602c836143ae565b9150613c2b82614bb9565b604082019050919050565b6000613c436005836143bf565b9150613c4e82614c08565b600582019050919050565b6000613c666020836143ae565b9150613c7182614c31565b602082019050919050565b6000613c896029836143ae565b9150613c9482614c5a565b604082019050919050565b6000613cac600d836143ae565b9150613cb782614ca9565b602082019050919050565b6000613ccf6014836143ae565b9150613cda82614cd2565b602082019050919050565b6000613cf26021836143ae565b9150613cfd82614cfb565b604082019050919050565b6000613d15600d836143ae565b9150613d2082614d4a565b602082019050919050565b6000613d386010836143ae565b9150613d4382614d73565b602082019050919050565b6000613d5b6000836143a3565b9150613d6682614d9c565b600082019050919050565b6000613d7e6031836143ae565b9150613d8982614d9f565b604082019050919050565b6000613da16010836143ae565b9150613dac82614dee565b602082019050919050565b6000613dc46011836143ae565b9150613dcf82614e17565b602082019050919050565b6000613de76012836143ae565b9150613df282614e40565b602082019050919050565b613e068161458d565b82525050565b613e1581614597565b82525050565b6000613e2782846138a7565b60148201915081905092915050565b6000613e4282856138cd565b602082019150613e5282846138cd565b6020820191508190509392505050565b6000613e6e8285613987565b9150613e7a8284613956565b9150613e8582613c36565b91508190509392505050565b6000613e9c82613d4e565b9150819050919050565b6000602082019050613ebb6000830184613898565b92915050565b6000608082019050613ed66000830187613898565b613ee36020830186613898565b613ef06040830185613dfd565b8181036060830152613f0281846138e4565b905095945050505050565b6000602082019050613f2260008301846138be565b92915050565b60006020820190508181036000830152613f42818461391d565b905092915050565b60006020820190508181036000830152613f6381613a06565b9050919050565b60006020820190508181036000830152613f8381613a29565b9050919050565b60006020820190508181036000830152613fa381613a4c565b9050919050565b60006020820190508181036000830152613fc381613a6f565b9050919050565b60006020820190508181036000830152613fe381613a92565b9050919050565b6000602082019050818103600083015261400381613ab5565b9050919050565b6000602082019050818103600083015261402381613ad8565b9050919050565b6000602082019050818103600083015261404381613afb565b9050919050565b6000602082019050818103600083015261406381613b1e565b9050919050565b6000602082019050818103600083015261408381613b41565b9050919050565b600060208201905081810360008301526140a381613b64565b9050919050565b600060208201905081810360008301526140c381613b87565b9050919050565b600060208201905081810360008301526140e381613baa565b9050919050565b6000602082019050818103600083015261410381613bcd565b9050919050565b6000602082019050818103600083015261412381613bf0565b9050919050565b6000602082019050818103600083015261414381613c13565b9050919050565b6000602082019050818103600083015261416381613c59565b9050919050565b6000602082019050818103600083015261418381613c7c565b9050919050565b600060208201905081810360008301526141a381613c9f565b9050919050565b600060208201905081810360008301526141c381613cc2565b9050919050565b600060208201905081810360008301526141e381613ce5565b9050919050565b6000602082019050818103600083015261420381613d08565b9050919050565b6000602082019050818103600083015261422381613d2b565b9050919050565b6000602082019050818103600083015261424381613d71565b9050919050565b6000602082019050818103600083015261426381613d94565b9050919050565b6000602082019050818103600083015261428381613db7565b9050919050565b600060208201905081810360008301526142a381613dda565b9050919050565b60006020820190506142bf6000830184613dfd565b92915050565b60006020820190506142da6000830184613e0c565b92915050565b60006142ea6142fb565b90506142f6828261461b565b919050565b6000604051905090565b600067ffffffffffffffff8211156143205761431f6147dd565b5b6143298261482a565b9050602081019050919050565b600067ffffffffffffffff821115614351576143506147dd565b5b61435a8261482a565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143d58261458d565b91506143e08361458d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561441557614414614721565b5b828201905092915050565b600061442b82614597565b915061443683614597565b92508263ffffffff0382111561444f5761444e614721565b5b828201905092915050565b60006144658261458d565b91506144708361458d565b9250826144805761447f614750565b5b828204905092915050565b60006144968261458d565b91506144a18361458d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144da576144d9614721565b5b828202905092915050565b60006144f08261458d565b91506144fb8361458d565b92508282101561450e5761450d614721565b5b828203905092915050565b60006145248261456d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156145d45780820151818401526020810190506145b9565b838111156145e3576000848401525b50505050565b6000600282049050600182168061460157607f821691505b602082108114156146155761461461477f565b5b50919050565b6146248261482a565b810181811067ffffffffffffffff82111715614643576146426147dd565b5b80604052505050565b60006146578261458d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561468a57614689614721565b5b600182019050919050565b60006146a082614597565b915063ffffffff8214156146b7576146b6614721565b5b600182019050919050565b60006146cd826146de565b9050919050565b6000819050919050565b60006146e98261483b565b9050919050565b60006146fb8261458d565b91506147068361458d565b92508261471657614715614750565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f50726573616c65206e6f74207265616479000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e6f74206d696e74656420796574000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4e6f7420612070726573616c65206d656d626572000000000000000000000000600082015250565b7f4d617820746f74616c206d696e74207265616368656400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4c696d6974207265616368656400000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4d696e7420736f6c64206f757400000000000000000000000000000000000000600082015250565b7f4f6e6c7920617574686f722063616e206d696e74000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74206e6f74206f70656e00000000000000000000000000000000000000600082015250565b7f50726573616c65206e6f74206f70656e00000000000000000000000000000000600082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682066756e642e00000000000000000000000000000000600082015250565b7f4d6178206d696e7420726561636865642e000000000000000000000000000000600082015250565b7f4d696e74206174206c65617374206f6e652e0000000000000000000000000000600082015250565b614e7281614519565b8114614e7d57600080fd5b50565b614e898161452b565b8114614e9457600080fd5b50565b614ea081614537565b8114614eab57600080fd5b50565b614eb781614541565b8114614ec257600080fd5b50565b614ece8161458d565b8114614ed957600080fd5b50565b614ee581614597565b8114614ef057600080fd5b5056fea2646970667358221220d262028bafac514a2ee7e4a2521511bf03bc39174935b9a499534d2a1a4055d164736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d6358417275314d3778525034736570376a7745687252463447746476316a556d357862484236374a79356b4d2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000114865616473706163652048756e746572730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102515760003560e01c8063715018a611610139578063b88d4fde116100b6578063d547cfb71161007a578063d547cfb71461084d578063e985e9c514610878578063f2fde38b146108b5578063f5b96621146108de578063f8048d8f14610907578063fcfff16f1461093057610251565b8063b88d4fde14610768578063be3c27f414610791578063bee6348a146107ba578063c87b56dd146107e5578063ce606ee01461082257610251565b80638fdcf942116100fd5780638fdcf942146106a657806395d89b41146106cf5780639e5666cd146106fa578063a22cb46514610723578063a71bbebe1461074c57610251565b8063715018a6146105e7578063729ad39e146105fe57806374164e361461062757806377bbe28b146106525780638da5cb5b1461067b57610251565b80632a23d07d116101d2578063453c231011610196578063453c2310146104c5578063507e094f146104f057806355f804b31461051b5780636352211e146105445780636fdca5e01461058157806370a08231146105aa57610251565b80632a23d07d146104155780633006b543146104405780633ccfd60b1461046957806342842e0e1461047357806344a0d68a1461049c57610251565b8063095ea7b311610219578063095ea7b31461034257806312c23bd81461036b57806313faede61461039657806318160ddd146103c157806323b872dd146103ec57610251565b806301ffc9a7146102565780630364d22a14610293578063047fc9aa146102af57806306fdde03146102da578063081812fc14610305575b600080fd5b34801561026257600080fd5b5061027d6004803603810190610278919061373b565b61095b565b60405161028a9190613f0d565b60405180910390f35b6102ad60048036038101906102a89190613838565b610a3d565b005b3480156102bb57600080fd5b506102c4610e91565b6040516102d191906142c5565b60405180910390f35b3480156102e657600080fd5b506102ef610ea7565b6040516102fc9190613f28565b60405180910390f35b34801561031157600080fd5b5061032c600480360381019061032791906137de565b610f39565b6040516103399190613ea6565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190613654565b610fbe565b005b34801561037757600080fd5b506103806110d6565b60405161038d91906142c5565b60405180910390f35b3480156103a257600080fd5b506103ab6110ec565b6040516103b891906142aa565b60405180910390f35b3480156103cd57600080fd5b506103d66110f2565b6040516103e391906142c5565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e919061353e565b611108565b005b34801561042157600080fd5b5061042a611168565b60405161043791906142aa565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061380b565b61116e565b005b61047161120e565b005b34801561047f57600080fd5b5061049a6004803603810190610495919061353e565b611303565b005b3480156104a857600080fd5b506104c360048036038101906104be91906137de565b611323565b005b3480156104d157600080fd5b506104da6113a9565b6040516104e791906142c5565b60405180910390f35b3480156104fc57600080fd5b506105056113bf565b60405161051291906142c5565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190613795565b6113d5565b005b34801561055057600080fd5b5061056b600480360381019061056691906137de565b61146b565b6040516105789190613ea6565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a391906136e1565b61151d565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906134d1565b6115b6565b6040516105de91906142aa565b60405180910390f35b3480156105f357600080fd5b506105fc61166e565b005b34801561060a57600080fd5b5061062560048036038101906106209190613694565b6116f6565b005b34801561063357600080fd5b5061063c6118a4565b60405161064991906142c5565b60405180910390f35b34801561065e57600080fd5b506106796004803603810190610674919061380b565b6118ba565b005b34801561068757600080fd5b5061069061195a565b60405161069d9190613ea6565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c891906137de565b611984565b005b3480156106db57600080fd5b506106e4611a0a565b6040516106f19190613f28565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c919061370e565b611a9c565b005b34801561072f57600080fd5b5061074a60048036038101906107459190613614565b611b22565b005b6107666004803603810190610761919061380b565b611b38565b005b34801561077457600080fd5b5061078f600480360381019061078a9190613591565b611e98565b005b34801561079d57600080fd5b506107b860048036038101906107b3919061380b565b611efa565b005b3480156107c657600080fd5b506107cf611f9a565b6040516107dc9190613f0d565b60405180910390f35b3480156107f157600080fd5b5061080c600480360381019061080791906137de565b611fad565b6040516108199190613f28565b60405180910390f35b34801561082e57600080fd5b5061083761203c565b6040516108449190613ea6565b60405180910390f35b34801561085957600080fd5b50610862612062565b60405161086f9190613f28565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a91906134fe565b6120f0565b6040516108ac9190613f0d565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d791906134d1565b612184565b005b3480156108ea57600080fd5b50610905600480360381019061090091906136e1565b61227c565b005b34801561091357600080fd5b5061092e6004803603810190610929919061380b565b612315565b005b34801561093c57600080fd5b506109456123b5565b6040516109529190613f0d565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a2657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a365750610a35826123c8565b5b9050919050565b8260008163ffffffff1611610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e9061428a565b60405180910390fd5b6001600f60009054906101000a900463ffffffff16610aa69190614420565b63ffffffff168163ffffffff1610610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea9061426a565b60405180910390fd5b8063ffffffff16600e54610b07919061448b565b341015610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b409061424a565b60405180910390fd5b60016009600c9054906101000a900463ffffffff16610b689190614420565b63ffffffff1681600960089054906101000a900463ffffffff16610b8c9190614420565b63ffffffff1610610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc99061418a565b60405180910390fd5b61214f81600960089054906101000a900463ffffffff16610bf39190614420565b63ffffffff1610610c8f57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c85906141aa565b60405180910390fd5b5b600f60049054906101000a900463ffffffff1663ffffffff168163ffffffff16600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf991906143ca565b1115610d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d319061400a565b60405180910390fd5b600c60009054906101000a900460ff16610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d809061420a565b60405180910390fd5b6000600d541415610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690613f4a565b60405180910390fd5b610e43838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600d5433604051602001610e289190613e1b565b60405160208183030381529060405280519060200120612432565b610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990613fea565b60405180910390fd5b610e8b84612449565b50505050565b600960089054906101000a900463ffffffff1681565b606060008054610eb6906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee2906145e9565b8015610f2f5780601f10610f0457610100808354040283529160200191610f2f565b820191906000526020600020905b815481529060010190602001808311610f1257829003601f168201915b5050505050905090565b6000610f448261252d565b610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a9061412a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610fc98261146b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561103a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611031906141ca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611059612599565b73ffffffffffffffffffffffffffffffffffffffff161480611088575061108781611082612599565b6120f0565b5b6110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be906140aa565b60405180910390fd5b6110d183836125a1565b505050565b600f60049054906101000a900463ffffffff1681565b60085481565b6009600c9054906101000a900463ffffffff1681565b611119611113612599565b8261265a565b611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f9061422a565b60405180910390fd5b611163838383612738565b505050565b600e5481565b611176612599565b73ffffffffffffffffffffffffffffffffffffffff1661119461195a565b73ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e19061414a565b60405180910390fd5b80600960046101000a81548163ffffffff021916908363ffffffff16021790555050565b611216612599565b73ffffffffffffffffffffffffffffffffffffffff1661123461195a565b73ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112819061414a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516112b090613e91565b60006040518083038185875af1925050503d80600081146112ed576040519150601f19603f3d011682016040523d82523d6000602084013e6112f2565b606091505b505090508061130057600080fd5b50565b61131e83838360405180602001604052806000815250611e98565b505050565b61132b612599565b73ffffffffffffffffffffffffffffffffffffffff1661134961195a565b73ffffffffffffffffffffffffffffffffffffffff161461139f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113969061414a565b60405180910390fd5b8060088190555050565b600960049054906101000a900463ffffffff1681565b600960009054906101000a900463ffffffff1681565b6113dd612599565b73ffffffffffffffffffffffffffffffffffffffff166113fb61195a565b73ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114489061414a565b60405180910390fd5b806007908051906020019061146792919061320f565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b906140ea565b60405180910390fd5b80915050919050565b611525612599565b73ffffffffffffffffffffffffffffffffffffffff1661154361195a565b73ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115909061414a565b60405180910390fd5b80600960106101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e906140ca565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611676612599565b73ffffffffffffffffffffffffffffffffffffffff1661169461195a565b73ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e19061414a565b60405180910390fd5b6116f46000612994565b565b6116fe612599565b73ffffffffffffffffffffffffffffffffffffffff1661171c61195a565b73ffffffffffffffffffffffffffffffffffffffff1614611772576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117699061414a565b60405180910390fd5b60005b828290508163ffffffff16101561189f576009600c9054906101000a900463ffffffff1663ffffffff16600960089054906101000a900463ffffffff1660016117be9190614420565b63ffffffff161115611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc9061406a565b60405180910390fd5b61188c83838363ffffffff16818110611821576118206147ae565b5b905060200201602081019061183691906134d1565b6009600881819054906101000a900463ffffffff1661185490614695565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250612a5a565b808061189790614695565b915050611775565b505050565b600f60009054906101000a900463ffffffff1681565b6118c2612599565b73ffffffffffffffffffffffffffffffffffffffff166118e061195a565b73ffffffffffffffffffffffffffffffffffffffff1614611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061414a565b60405180910390fd5b80600f60006101000a81548163ffffffff021916908363ffffffff16021790555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61198c612599565b73ffffffffffffffffffffffffffffffffffffffff166119aa61195a565b73ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061414a565b60405180910390fd5b80600e8190555050565b606060018054611a19906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054611a45906145e9565b8015611a925780601f10611a6757610100808354040283529160200191611a92565b820191906000526020600020905b815481529060010190602001808311611a7557829003601f168201915b5050505050905090565b611aa4612599565b73ffffffffffffffffffffffffffffffffffffffff16611ac261195a565b73ffffffffffffffffffffffffffffffffffffffff1614611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f9061414a565b60405180910390fd5b80600d8190555050565b611b34611b2d612599565b8383612ab5565b5050565b8060008163ffffffff1611611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b799061428a565b60405180910390fd5b6001600960009054906101000a900463ffffffff16611ba19190614420565b63ffffffff168163ffffffff1610611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be59061426a565b60405180910390fd5b8063ffffffff16600854611c02919061448b565b341015611c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3b9061424a565b60405180910390fd5b60016009600c9054906101000a900463ffffffff16611c639190614420565b63ffffffff1681600960089054906101000a900463ffffffff16611c879190614420565b63ffffffff1610611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc49061418a565b60405180910390fd5b61214f81600960089054906101000a900463ffffffff16611cee9190614420565b63ffffffff1610611d8a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d80906141aa565b60405180910390fd5b5b600960049054906101000a900463ffffffff1663ffffffff168163ffffffff16600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df491906143ca565b1115611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c9061400a565b60405180910390fd5b60011515600960109054906101000a900460ff16151514611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e82906141ea565b60405180910390fd5b611e9482612449565b5050565b611ea9611ea3612599565b8361265a565b611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf9061422a565b60405180910390fd5b611ef484848484612c22565b50505050565b611f02612599565b73ffffffffffffffffffffffffffffffffffffffff16611f2061195a565b73ffffffffffffffffffffffffffffffffffffffff1614611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d9061414a565b60405180910390fd5b80600f60046101000a81548163ffffffff021916908363ffffffff16021790555050565b600c60009054906101000a900460ff1681565b6060600960089054906101000a900463ffffffff1663ffffffff1682111561200a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200190613f8a565b60405180910390fd5b600761201583612c7e565b604051602001612026929190613e62565b6040516020818303038152906040529050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007805461206f906145e9565b80601f016020809104026020016040519081016040528092919081815260200182805461209b906145e9565b80156120e85780601f106120bd576101008083540402835291602001916120e8565b820191906000526020600020905b8154815290600101906020018083116120cb57829003601f168201915b505050505081565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61218c612599565b73ffffffffffffffffffffffffffffffffffffffff166121aa61195a565b73ffffffffffffffffffffffffffffffffffffffff1614612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f79061414a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226790613faa565b60405180910390fd5b61227981612994565b50565b612284612599565b73ffffffffffffffffffffffffffffffffffffffff166122a261195a565b73ffffffffffffffffffffffffffffffffffffffff16146122f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ef9061414a565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b61231d612599565b73ffffffffffffffffffffffffffffffffffffffff1661233b61195a565b73ffffffffffffffffffffffffffffffffffffffff1614612391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123889061414a565b60405180910390fd5b80600960006101000a81548163ffffffff021916908363ffffffff16021790555050565b600960109054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008261243f8584612ddf565b1490509392505050565b60005b8163ffffffff168163ffffffff1610156124cd576124ba336009600881819054906101000a900463ffffffff1661248290614695565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250612a5a565b80806124c590614695565b91505061244c565b508063ffffffff16600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461252391906143ca565b9250508190555050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126148361146b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006126658261252d565b6126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b9061408a565b60405180910390fd5b60006126af8361146b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061271e57508373ffffffffffffffffffffffffffffffffffffffff1661270684610f39565b73ffffffffffffffffffffffffffffffffffffffff16145b8061272f575061272e81856120f0565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166127588261146b565b73ffffffffffffffffffffffffffffffffffffffff16146127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a59061416a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561281e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128159061402a565b60405180910390fd5b612829838383612e92565b6128346000826125a1565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461288491906144e5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128db91906143ca565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a648383612e97565b612a716000848484613065565b612ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa790613f6a565b60405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1b9061404a565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612c159190613f0d565b60405180910390a3505050565b612c2d848484612738565b612c3984848484613065565b612c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6f90613f6a565b60405180910390fd5b50505050565b60606000821415612cc6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612dda565b600082905060005b60008214612cf8578080612ce19061464c565b915050600a82612cf1919061445a565b9150612cce565b60008167ffffffffffffffff811115612d1457612d136147dd565b5b6040519080825280601f01601f191660200182016040528015612d465781602001600182028036833780820191505090505b5090505b60008514612dd357600182612d5f91906144e5565b9150600a85612d6e91906146f0565b6030612d7a91906143ca565b60f81b818381518110612d9057612d8f6147ae565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612dcc919061445a565b9450612d4a565b8093505050505b919050565b60008082905060005b8451811015612e87576000858281518110612e0657612e056147ae565b5b60200260200101519050808311612e47578281604051602001612e2a929190613e36565b604051602081830303815290604052805190602001209250612e73565b8083604051602001612e5a929190613e36565b6040516020818303038152906040528051906020012092505b508080612e7f9061464c565b915050612de8565b508091505092915050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe9061410a565b60405180910390fd5b612f108161252d565b15612f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4790613fca565b60405180910390fd5b612f5c60008383612e92565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fac91906143ca565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006130868473ffffffffffffffffffffffffffffffffffffffff166131fc565b156131ef578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026130af612599565b8786866040518563ffffffff1660e01b81526004016130d19493929190613ec1565b602060405180830381600087803b1580156130eb57600080fd5b505af192505050801561311c57506040513d601f19601f820116820180604052508101906131199190613768565b60015b61319f573d806000811461314c576040519150601f19603f3d011682016040523d82523d6000602084013e613151565b606091505b50600081511415613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e90613f6a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506131f4565b600190505b949350505050565b600080823b905060008111915050919050565b82805461321b906145e9565b90600052602060002090601f01602090048101928261323d5760008555613284565b82601f1061325657805160ff1916838001178555613284565b82800160010185558215613284579182015b82811115613283578251825591602001919060010190613268565b5b5090506132919190613295565b5090565b5b808211156132ae576000816000905550600101613296565b5090565b60006132c56132c084614305565b6142e0565b9050828152602081018484840111156132e1576132e061481b565b5b6132ec8482856145a7565b509392505050565b600061330761330284614336565b6142e0565b9050828152602081018484840111156133235761332261481b565b5b61332e8482856145a7565b509392505050565b60008135905061334581614e69565b92915050565b60008083601f84011261336157613360614811565b5b8235905067ffffffffffffffff81111561337e5761337d61480c565b5b60208301915083602082028301111561339a57613399614816565b5b9250929050565b60008083601f8401126133b7576133b6614811565b5b8235905067ffffffffffffffff8111156133d4576133d361480c565b5b6020830191508360208202830111156133f0576133ef614816565b5b9250929050565b60008135905061340681614e80565b92915050565b60008135905061341b81614e97565b92915050565b60008135905061343081614eae565b92915050565b60008151905061344581614eae565b92915050565b600082601f8301126134605761345f614811565b5b81356134708482602086016132b2565b91505092915050565b600082601f83011261348e5761348d614811565b5b813561349e8482602086016132f4565b91505092915050565b6000813590506134b681614ec5565b92915050565b6000813590506134cb81614edc565b92915050565b6000602082840312156134e7576134e6614825565b5b60006134f584828501613336565b91505092915050565b6000806040838503121561351557613514614825565b5b600061352385828601613336565b925050602061353485828601613336565b9150509250929050565b60008060006060848603121561355757613556614825565b5b600061356586828701613336565b935050602061357686828701613336565b9250506040613587868287016134a7565b9150509250925092565b600080600080608085870312156135ab576135aa614825565b5b60006135b987828801613336565b94505060206135ca87828801613336565b93505060406135db878288016134a7565b925050606085013567ffffffffffffffff8111156135fc576135fb614820565b5b6136088782880161344b565b91505092959194509250565b6000806040838503121561362b5761362a614825565b5b600061363985828601613336565b925050602061364a858286016133f7565b9150509250929050565b6000806040838503121561366b5761366a614825565b5b600061367985828601613336565b925050602061368a858286016134a7565b9150509250929050565b600080602083850312156136ab576136aa614825565b5b600083013567ffffffffffffffff8111156136c9576136c8614820565b5b6136d58582860161334b565b92509250509250929050565b6000602082840312156136f7576136f6614825565b5b6000613705848285016133f7565b91505092915050565b60006020828403121561372457613723614825565b5b60006137328482850161340c565b91505092915050565b60006020828403121561375157613750614825565b5b600061375f84828501613421565b91505092915050565b60006020828403121561377e5761377d614825565b5b600061378c84828501613436565b91505092915050565b6000602082840312156137ab576137aa614825565b5b600082013567ffffffffffffffff8111156137c9576137c8614820565b5b6137d584828501613479565b91505092915050565b6000602082840312156137f4576137f3614825565b5b6000613802848285016134a7565b91505092915050565b60006020828403121561382157613820614825565b5b600061382f848285016134bc565b91505092915050565b60008060006040848603121561385157613850614825565b5b600061385f868287016134bc565b935050602084013567ffffffffffffffff8111156138805761387f614820565b5b61388c868287016133a1565b92509250509250925092565b6138a181614519565b82525050565b6138b86138b382614519565b6146c2565b82525050565b6138c78161452b565b82525050565b6138de6138d982614537565b6146d4565b82525050565b60006138ef8261437c565b6138f98185614392565b93506139098185602086016145b6565b6139128161482a565b840191505092915050565b600061392882614387565b61393281856143ae565b93506139428185602086016145b6565b61394b8161482a565b840191505092915050565b600061396182614387565b61396b81856143bf565b935061397b8185602086016145b6565b80840191505092915050565b60008154613994816145e9565b61399e81866143bf565b945060018216600081146139b957600181146139ca576139fd565b60ff198316865281860193506139fd565b6139d385614367565b60005b838110156139f5578154818901526001820191506020810190506139d6565b838801955050505b50505092915050565b6000613a136011836143ae565b9150613a1e82614848565b602082019050919050565b6000613a366032836143ae565b9150613a4182614871565b604082019050919050565b6000613a59600e836143ae565b9150613a64826148c0565b602082019050919050565b6000613a7c6026836143ae565b9150613a87826148e9565b604082019050919050565b6000613a9f601c836143ae565b9150613aaa82614938565b602082019050919050565b6000613ac26014836143ae565b9150613acd82614961565b602082019050919050565b6000613ae56016836143ae565b9150613af08261498a565b602082019050919050565b6000613b086024836143ae565b9150613b13826149b3565b604082019050919050565b6000613b2b6019836143ae565b9150613b3682614a02565b602082019050919050565b6000613b4e600d836143ae565b9150613b5982614a2b565b602082019050919050565b6000613b71602c836143ae565b9150613b7c82614a54565b604082019050919050565b6000613b946038836143ae565b9150613b9f82614aa3565b604082019050919050565b6000613bb7602a836143ae565b9150613bc282614af2565b604082019050919050565b6000613bda6029836143ae565b9150613be582614b41565b604082019050919050565b6000613bfd6020836143ae565b9150613c0882614b90565b602082019050919050565b6000613c20602c836143ae565b9150613c2b82614bb9565b604082019050919050565b6000613c436005836143bf565b9150613c4e82614c08565b600582019050919050565b6000613c666020836143ae565b9150613c7182614c31565b602082019050919050565b6000613c896029836143ae565b9150613c9482614c5a565b604082019050919050565b6000613cac600d836143ae565b9150613cb782614ca9565b602082019050919050565b6000613ccf6014836143ae565b9150613cda82614cd2565b602082019050919050565b6000613cf26021836143ae565b9150613cfd82614cfb565b604082019050919050565b6000613d15600d836143ae565b9150613d2082614d4a565b602082019050919050565b6000613d386010836143ae565b9150613d4382614d73565b602082019050919050565b6000613d5b6000836143a3565b9150613d6682614d9c565b600082019050919050565b6000613d7e6031836143ae565b9150613d8982614d9f565b604082019050919050565b6000613da16010836143ae565b9150613dac82614dee565b602082019050919050565b6000613dc46011836143ae565b9150613dcf82614e17565b602082019050919050565b6000613de76012836143ae565b9150613df282614e40565b602082019050919050565b613e068161458d565b82525050565b613e1581614597565b82525050565b6000613e2782846138a7565b60148201915081905092915050565b6000613e4282856138cd565b602082019150613e5282846138cd565b6020820191508190509392505050565b6000613e6e8285613987565b9150613e7a8284613956565b9150613e8582613c36565b91508190509392505050565b6000613e9c82613d4e565b9150819050919050565b6000602082019050613ebb6000830184613898565b92915050565b6000608082019050613ed66000830187613898565b613ee36020830186613898565b613ef06040830185613dfd565b8181036060830152613f0281846138e4565b905095945050505050565b6000602082019050613f2260008301846138be565b92915050565b60006020820190508181036000830152613f42818461391d565b905092915050565b60006020820190508181036000830152613f6381613a06565b9050919050565b60006020820190508181036000830152613f8381613a29565b9050919050565b60006020820190508181036000830152613fa381613a4c565b9050919050565b60006020820190508181036000830152613fc381613a6f565b9050919050565b60006020820190508181036000830152613fe381613a92565b9050919050565b6000602082019050818103600083015261400381613ab5565b9050919050565b6000602082019050818103600083015261402381613ad8565b9050919050565b6000602082019050818103600083015261404381613afb565b9050919050565b6000602082019050818103600083015261406381613b1e565b9050919050565b6000602082019050818103600083015261408381613b41565b9050919050565b600060208201905081810360008301526140a381613b64565b9050919050565b600060208201905081810360008301526140c381613b87565b9050919050565b600060208201905081810360008301526140e381613baa565b9050919050565b6000602082019050818103600083015261410381613bcd565b9050919050565b6000602082019050818103600083015261412381613bf0565b9050919050565b6000602082019050818103600083015261414381613c13565b9050919050565b6000602082019050818103600083015261416381613c59565b9050919050565b6000602082019050818103600083015261418381613c7c565b9050919050565b600060208201905081810360008301526141a381613c9f565b9050919050565b600060208201905081810360008301526141c381613cc2565b9050919050565b600060208201905081810360008301526141e381613ce5565b9050919050565b6000602082019050818103600083015261420381613d08565b9050919050565b6000602082019050818103600083015261422381613d2b565b9050919050565b6000602082019050818103600083015261424381613d71565b9050919050565b6000602082019050818103600083015261426381613d94565b9050919050565b6000602082019050818103600083015261428381613db7565b9050919050565b600060208201905081810360008301526142a381613dda565b9050919050565b60006020820190506142bf6000830184613dfd565b92915050565b60006020820190506142da6000830184613e0c565b92915050565b60006142ea6142fb565b90506142f6828261461b565b919050565b6000604051905090565b600067ffffffffffffffff8211156143205761431f6147dd565b5b6143298261482a565b9050602081019050919050565b600067ffffffffffffffff821115614351576143506147dd565b5b61435a8261482a565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143d58261458d565b91506143e08361458d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561441557614414614721565b5b828201905092915050565b600061442b82614597565b915061443683614597565b92508263ffffffff0382111561444f5761444e614721565b5b828201905092915050565b60006144658261458d565b91506144708361458d565b9250826144805761447f614750565b5b828204905092915050565b60006144968261458d565b91506144a18361458d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144da576144d9614721565b5b828202905092915050565b60006144f08261458d565b91506144fb8361458d565b92508282101561450e5761450d614721565b5b828203905092915050565b60006145248261456d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156145d45780820151818401526020810190506145b9565b838111156145e3576000848401525b50505050565b6000600282049050600182168061460157607f821691505b602082108114156146155761461461477f565b5b50919050565b6146248261482a565b810181811067ffffffffffffffff82111715614643576146426147dd565b5b80604052505050565b60006146578261458d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561468a57614689614721565b5b600182019050919050565b60006146a082614597565b915063ffffffff8214156146b7576146b6614721565b5b600182019050919050565b60006146cd826146de565b9050919050565b6000819050919050565b60006146e98261483b565b9050919050565b60006146fb8261458d565b91506147068361458d565b92508261471657614715614750565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f50726573616c65206e6f74207265616479000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e6f74206d696e74656420796574000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4e6f7420612070726573616c65206d656d626572000000000000000000000000600082015250565b7f4d617820746f74616c206d696e74207265616368656400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4c696d6974207265616368656400000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4d696e7420736f6c64206f757400000000000000000000000000000000000000600082015250565b7f4f6e6c7920617574686f722063616e206d696e74000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74206e6f74206f70656e00000000000000000000000000000000000000600082015250565b7f50726573616c65206e6f74206f70656e00000000000000000000000000000000600082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4e6f7420656e6f7567682066756e642e00000000000000000000000000000000600082015250565b7f4d6178206d696e7420726561636865642e000000000000000000000000000000600082015250565b7f4d696e74206174206c65617374206f6e652e0000000000000000000000000000600082015250565b614e7281614519565b8114614e7d57600080fd5b50565b614e898161452b565b8114614e9457600080fd5b50565b614ea081614537565b8114614eab57600080fd5b50565b614eb781614541565b8114614ec257600080fd5b50565b614ece8161458d565b8114614ed957600080fd5b50565b614ee581614597565b8114614ef057600080fd5b5056fea2646970667358221220d262028bafac514a2ee7e4a2521511bf03bc39174935b9a499534d2a1a4055d164736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d6358417275314d3778525034736570376a7745687252463447746476316a556d357862484236374a79356b4d2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000114865616473706163652048756e746572730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _uri (string): ipfs://QmcXAru1M7xRP4sep7jwEhrRF4Gtdv1jUm5xbHB67Jy5kM/
Arg [1] : _name (string): Headspace Hunters
Arg [2] : _symbol (string):

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [4] : 697066733a2f2f516d6358417275314d3778525034736570376a774568725246
Arg [5] : 3447746476316a556d357862484236374a79356b4d2f00000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [7] : 4865616473706163652048756e74657273000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

43632:578:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21364:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42435:510;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36641:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22309:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23868:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23391:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41796:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36528:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36672;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24618:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41710:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37619:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38062:192;;;:::i;:::-;;25028:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37446:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36603:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36568:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37332:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22003:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37534:77;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21733:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35521:103;;;;;;;;;;;;;:::i;:::-;;37817:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41754:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42311:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34870:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42101:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22478:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41999:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24161:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38292:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25284:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42196:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41641:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43864:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36741:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36493:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24387:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35779:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41900:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37720:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36712:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21364:305;21466:4;21518:25;21503:40;;;:11;:40;;;;:105;;;;21575:33;21560:48;;;:11;:48;;;;21503:105;:158;;;;21625:36;21649:11;21625:23;:36::i;:::-;21503:158;21483:178;;21364:305;;;:::o;42435:510::-;42561:5;43033:1;43025:5;:9;;;43017:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;43099:1;43079:17;;;;;;;;;;;:21;;;;:::i;:::-;43071:29;;:5;:29;;;43063:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;43163:5;43149:19;;:11;;:19;;;;:::i;:::-;43136:9;:32;;43128:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;43234:1;43220:11;;;;;;;;;;;:15;;;;:::i;:::-;43203:32;;43212:5;43203:6;;;;;;;;;;;:14;;;;:::i;:::-;:32;;;43195:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;43328:4;43320:5;43311:6;;;;;;;;;;;:14;;;;:::i;:::-;:21;;;43308:102;;43363:13;;;;;;;;;;;43349:27;;:10;:27;;;43341:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;43308:102;43470:19;;;;;;;;;;;43430:59;;43461:5;43430:36;;:16;:28;43447:10;43430:28;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:59;;43415:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;42592:11:::1;;;;;;;;;;;42584:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;42643:16;:10;;:16;;42635:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;42714:144;42751:5;;42714:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42775:10;;42831;42814:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;42804:39;;;;;;42714:18;:144::i;:::-;42692:214;;;;;;;;;;;;:::i;:::-;;;;;;;;;42919:18;42931:5;42919:11;:18::i;:::-;42435:510:::0;;;;:::o;36641:24::-;;;;;;;;;;;;;:::o;22309:100::-;22363:13;22396:5;22389:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22309:100;:::o;23868:221::-;23944:7;23972:16;23980:7;23972;:16::i;:::-;23964:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24057:15;:24;24073:7;24057:24;;;;;;;;;;;;;;;;;;;;;24050:31;;23868:221;;;:::o;23391:411::-;23472:13;23488:23;23503:7;23488:14;:23::i;:::-;23472:39;;23536:5;23530:11;;:2;:11;;;;23522:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23630:5;23614:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23639:37;23656:5;23663:12;:10;:12::i;:::-;23639:16;:37::i;:::-;23614:62;23592:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23773:21;23782:2;23786:7;23773:8;:21::i;:::-;23461:341;23391:411;;:::o;41796:38::-;;;;;;;;;;;;;:::o;36528:33::-;;;;:::o;36672:::-;;;;;;;;;;;;;:::o;24618:339::-;24813:41;24832:12;:10;:12::i;:::-;24846:7;24813:18;:41::i;:::-;24805:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24921:28;24931:4;24937:2;24941:7;24921:9;:28::i;:::-;24618:339;;;:::o;41710:39::-;;;;:::o;37619:93::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37700:4:::1;37685:12;;:19;;;;;;;;;;;;;;;;;;37619:93:::0;:::o;38062:192::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38119:12:::1;38145:10;38137:24;;38183:21;38137:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38118:101;;;38238:7;38230:16;;;::::0;::::1;;38107:147;38062:192::o:0;25028:185::-;25166:39;25183:4;25189:2;25193:7;25166:39;;;;;;;;;;;;:16;:39::i;:::-;25028:185;;;:::o;37446:80::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37513:5:::1;37506:4;:12;;;;37446:80:::0;:::o;36603:31::-;;;;;;;;;;;;;:::o;36568:28::-;;;;;;;;;;;;;:::o;37332:106::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37419:13:::1;37404:12;:28;;;;;;;;;;;;:::i;:::-;;37332:106:::0;:::o;22003:239::-;22075:7;22095:13;22111:7;:16;22119:7;22111:16;;;;;;;;;;;;;;;;;;;;;22095:32;;22163:1;22146:19;;:5;:19;;;;22138:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22229:5;22222:12;;;22003:239;;;:::o;37534:77::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37598:5:::1;37591:4;;:12;;;;;;;;;;;;;;;;;;37534:77:::0;:::o;21733:208::-;21805:7;21850:1;21833:19;;:5;:19;;;;21825:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21917:9;:16;21927:5;21917:16;;;;;;;;;;;;;;;;21910:23;;21733:208;;;:::o;35521:103::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35586:30:::1;35613:1;35586:18;:30::i;:::-;35521:103::o:0;37817:237::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37890:8:::1;37885:162;37908:2;;:9;;37904:1;:13;;;37885:162;;;37961:11;;;;;;;;;;;37947:25;;37951:6;;;;;;;;;;;37947:1;:10;;;;:::i;:::-;:25;;;;37939:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;38005:30;38015:2;;38018:1;38015:5;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;38024:6;;38022:8;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;38005:30;;;;;;;;;;;;;::::0;:9:::1;:30::i;:::-;37919:3;;;;;:::i;:::-;;;;37885:162;;;;37817:237:::0;;:::o;41754:35::-;;;;;;;;;;;;;:::o;42311:103::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42402:4:::1;42382:17;;:24;;;;;;;;;;;;;;;;;;42311:103:::0;:::o;34870:87::-;34916:7;34943:6;;;;;;;;;;;34936:13;;34870:87;:::o;42101:89::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42177:5:::1;42163:11;:19;;;;42101:89:::0;:::o;22478:104::-;22534:13;22567:7;22560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22478:104;:::o;41999:96::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42083:4:::1;42070:10;:17;;;;41999:96:::0;:::o;24161:155::-;24256:52;24275:12;:10;:12::i;:::-;24289:8;24299;24256:18;:52::i;:::-;24161:155;;:::o;38292:152::-;38351:5;38804:1;38796:5;:9;;;38788:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;38868:1;38855:10;;;;;;;;;;;:14;;;;:::i;:::-;38847:22;;:5;:22;;;38839:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;38930:5;38923:12;;:4;;:12;;;;:::i;:::-;38910:9;:25;;38902:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;39006:1;38992:11;;;;;;;;;;;:15;;;;:::i;:::-;38975:32;;38984:5;38975:6;;;;;;;;;;;:14;;;;:::i;:::-;:32;;;38967:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;39102:4;39094:5;39085:6;;;;;;;;;;;:14;;;;:::i;:::-;:21;;;39082:102;;39138:13;;;;;;;;;;;39124:27;;:10;:27;;;39116:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;39082:102;39256:12;;;;;;;;;;;39216:52;;39247:5;39216:36;;:16;:28;39233:10;39216:28;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;;39194:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;38385:4:::1;38377:12;;:4;;;;;;;;;;;:12;;;38369:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;38418:18;38430:5;38418:11;:18::i;:::-;38292:152:::0;;:::o;25284:328::-;25459:41;25478:12;:10;:12::i;:::-;25492:7;25459:18;:41::i;:::-;25451:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25565:39;25579:4;25585:2;25589:7;25598:5;25565:13;:39::i;:::-;25284:328;;;;:::o;42196:107::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42291:4:::1;42269:19;;:26;;;;;;;;;;;;;;;;;;42196:107:::0;:::o;41641:31::-;;;;;;;;;;;;;:::o;43864:343::-;43983:13;44034:6;;;;;;;;;;;44022:18;;:8;:18;;44014:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;44134:12;44148:26;44165:8;44148:16;:26::i;:::-;44117:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;44072:127;;43864:343;;;:::o;36741:28::-;;;;;;;;;;;;;:::o;36493:26::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24387:164::-;24484:4;24508:18;:25;24527:5;24508:25;;;;;;;;;;;;;;;:35;24534:8;24508:35;;;;;;;;;;;;;;;;;;;;;;;;;24501:42;;24387:164;;;;:::o;35779:201::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35888:1:::1;35868:22;;:8;:22;;;;35860:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;35944:28;35963:8;35944:18;:28::i;:::-;35779:201:::0;:::o;41900:91::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41978:5:::1;41964:11;;:19;;;;;;;;;;;;;;;;;;41900:91:::0;:::o;37720:89::-;35101:12;:10;:12::i;:::-;35090:23;;:7;:5;:7::i;:::-;:23;;;35082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37797:4:::1;37784:10;;:17;;;;;;;;;;;;;;;;;;37720:89:::0;:::o;36712:24::-;;;;;;;;;;;;;:::o;19804:157::-;19889:4;19928:25;19913:40;;;:11;:40;;;;19906:47;;19804:157;;;:::o;40259:190::-;40384:4;40437;40408:25;40421:5;40428:4;40408:12;:25::i;:::-;:33;40401:40;;40259:190;;;;;:::o;38452:217::-;38512:8;38507:97;38530:5;38526:9;;:1;:9;;;38507:97;;;38557:35;38567:10;38581:6;;38579:8;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;38557:35;;;;;;;;;;;;;;:9;:35::i;:::-;38537:3;;;;;:::i;:::-;;;;38507:97;;;;38656:5;38624:37;;:16;:28;38641:10;38624:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;38452:217;:::o;27122:127::-;27187:4;27239:1;27211:30;;:7;:16;27219:7;27211:16;;;;;;;;;;;;;;;;;;;;;:30;;;;27204:37;;27122:127;;;:::o;16591:98::-;16644:7;16671:10;16664:17;;16591:98;:::o;31104:174::-;31206:2;31179:15;:24;31195:7;31179:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31262:7;31258:2;31224:46;;31233:23;31248:7;31233:14;:23::i;:::-;31224:46;;;;;;;;;;;;31104:174;;:::o;27416:348::-;27509:4;27534:16;27542:7;27534;:16::i;:::-;27526:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27610:13;27626:23;27641:7;27626:14;:23::i;:::-;27610:39;;27679:5;27668:16;;:7;:16;;;:51;;;;27712:7;27688:31;;:20;27700:7;27688:11;:20::i;:::-;:31;;;27668:51;:87;;;;27723:32;27740:5;27747:7;27723:16;:32::i;:::-;27668:87;27660:96;;;27416:348;;;;:::o;30408:578::-;30567:4;30540:31;;:23;30555:7;30540:14;:23::i;:::-;:31;;;30532:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30650:1;30636:16;;:2;:16;;;;30628:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30706:39;30727:4;30733:2;30737:7;30706:20;:39::i;:::-;30810:29;30827:1;30831:7;30810:8;:29::i;:::-;30871:1;30852:9;:15;30862:4;30852:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30900:1;30883:9;:13;30893:2;30883:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30931:2;30912:7;:16;30920:7;30912:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30970:7;30966:2;30951:27;;30960:4;30951:27;;;;;;;;;;;;30408:578;;;:::o;36140:191::-;36214:16;36233:6;;;;;;;;;;;36214:25;;36259:8;36250:6;;:17;;;;;;;;;;;;;;;;;;36314:8;36283:40;;36304:8;36283:40;;;;;;;;;;;;36203:128;36140:191;:::o;28443:321::-;28573:18;28579:2;28583:7;28573:5;:18::i;:::-;28624:54;28655:1;28659:2;28663:7;28672:5;28624:22;:54::i;:::-;28602:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;28443:321;;;:::o;31420:315::-;31575:8;31566:17;;:5;:17;;;;31558:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;31662:8;31624:18;:25;31643:5;31624:25;;;;;;;;;;;;;;;:35;31650:8;31624:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31708:8;31686:41;;31701:5;31686:41;;;31718:8;31686:41;;;;;;:::i;:::-;;;;;;;;31420:315;;;:::o;26494:::-;26651:28;26661:4;26667:2;26671:7;26651:9;:28::i;:::-;26698:48;26721:4;26727:2;26731:7;26740:5;26698:22;:48::i;:::-;26690:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26494:315;;;;:::o;17176:723::-;17232:13;17462:1;17453:5;:10;17449:53;;;17480:10;;;;;;;;;;;;;;;;;;;;;17449:53;17512:12;17527:5;17512:20;;17543:14;17568:78;17583:1;17575:4;:9;17568:78;;17601:8;;;;;:::i;:::-;;;;17632:2;17624:10;;;;;:::i;:::-;;;17568:78;;;17656:19;17688:6;17678:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:39;;17706:154;17722:1;17713:5;:10;17706:154;;17750:1;17740:11;;;;;:::i;:::-;;;17817:2;17809:5;:10;;;;:::i;:::-;17796:2;:24;;;;:::i;:::-;17783:39;;17766:6;17773;17766:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;17846:2;17837:11;;;;;:::i;:::-;;;17706:154;;;17884:6;17870:21;;;;;17176:723;;;;:::o;40811:701::-;40894:7;40914:20;40937:4;40914:27;;40957:9;40952:523;40976:5;:12;40972:1;:16;40952:523;;;41010:20;41033:5;41039:1;41033:8;;;;;;;;:::i;:::-;;;;;;;;41010:31;;41076:12;41060;:28;41056:408;;41230:12;41244;41213:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41203:55;;;;;;41188:70;;41056:408;;;41420:12;41434;41403:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41393:55;;;;;;41378:70;;41056:408;40995:480;40990:3;;;;;:::i;:::-;;;;40952:523;;;;41492:12;41485:19;;;40811:701;;;;:::o;33671:126::-;;;;:::o;29100:382::-;29194:1;29180:16;;:2;:16;;;;29172:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29253:16;29261:7;29253;:16::i;:::-;29252:17;29244:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29315:45;29344:1;29348:2;29352:7;29315:20;:45::i;:::-;29390:1;29373:9;:13;29383:2;29373:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29421:2;29402:7;:16;29410:7;29402:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29466:7;29462:2;29441:33;;29458:1;29441:33;;;;;;;;;;;;29100:382;;:::o;32300:799::-;32455:4;32476:15;:2;:13;;;:15::i;:::-;32472:620;;;32528:2;32512:36;;;32549:12;:10;:12::i;:::-;32563:4;32569:7;32578:5;32512:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32508:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32771:1;32754:6;:13;:18;32750:272;;;32797:60;;;;;;;;;;:::i;:::-;;;;;;;;32750:272;32972:6;32966:13;32957:6;32953:2;32949:15;32942:38;32508:529;32645:41;;;32635:51;;;:6;:51;;;;32628:58;;;;;32472:620;33076:4;33069:11;;32300:799;;;;;;;:::o;8575:387::-;8635:4;8843:12;8910:7;8898:20;8890:28;;8953:1;8946:4;:8;8939:15;;;8575:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1594:::-;1667:8;1677:6;1727:3;1720:4;1712:6;1708:17;1704:27;1694:122;;1735:79;;:::i;:::-;1694:122;1848:6;1835:20;1825:30;;1878:18;1870:6;1867:30;1864:117;;;1900:79;;:::i;:::-;1864:117;2014:4;2006:6;2002:17;1990:29;;2068:3;2060:4;2052:6;2048:17;2038:8;2034:32;2031:41;2028:128;;;2075:79;;:::i;:::-;2028:128;1594:568;;;;;:::o;2168:133::-;2211:5;2249:6;2236:20;2227:29;;2265:30;2289:5;2265:30;:::i;:::-;2168:133;;;;:::o;2307:139::-;2353:5;2391:6;2378:20;2369:29;;2407:33;2434:5;2407:33;:::i;:::-;2307:139;;;;:::o;2452:137::-;2497:5;2535:6;2522:20;2513:29;;2551:32;2577:5;2551:32;:::i;:::-;2452:137;;;;:::o;2595:141::-;2651:5;2682:6;2676:13;2667:22;;2698:32;2724:5;2698:32;:::i;:::-;2595:141;;;;:::o;2755:338::-;2810:5;2859:3;2852:4;2844:6;2840:17;2836:27;2826:122;;2867:79;;:::i;:::-;2826:122;2984:6;2971:20;3009:78;3083:3;3075:6;3068:4;3060:6;3056:17;3009:78;:::i;:::-;3000:87;;2816:277;2755:338;;;;:::o;3113:340::-;3169:5;3218:3;3211:4;3203:6;3199:17;3195:27;3185:122;;3226:79;;:::i;:::-;3185:122;3343:6;3330:20;3368:79;3443:3;3435:6;3428:4;3420:6;3416:17;3368:79;:::i;:::-;3359:88;;3175:278;3113:340;;;;:::o;3459:139::-;3505:5;3543:6;3530:20;3521:29;;3559:33;3586:5;3559:33;:::i;:::-;3459:139;;;;:::o;3604:137::-;3649:5;3687:6;3674:20;3665:29;;3703:32;3729:5;3703:32;:::i;:::-;3604:137;;;;:::o;3747:329::-;3806:6;3855:2;3843:9;3834:7;3830:23;3826:32;3823:119;;;3861:79;;:::i;:::-;3823:119;3981:1;4006:53;4051:7;4042:6;4031:9;4027:22;4006:53;:::i;:::-;3996:63;;3952:117;3747:329;;;;:::o;4082:474::-;4150:6;4158;4207:2;4195:9;4186:7;4182:23;4178:32;4175:119;;;4213:79;;:::i;:::-;4175:119;4333:1;4358:53;4403:7;4394:6;4383:9;4379:22;4358:53;:::i;:::-;4348:63;;4304:117;4460:2;4486:53;4531:7;4522:6;4511:9;4507:22;4486:53;:::i;:::-;4476:63;;4431:118;4082:474;;;;;:::o;4562:619::-;4639:6;4647;4655;4704:2;4692:9;4683:7;4679:23;4675:32;4672:119;;;4710:79;;:::i;:::-;4672:119;4830:1;4855:53;4900:7;4891:6;4880:9;4876:22;4855:53;:::i;:::-;4845:63;;4801:117;4957:2;4983:53;5028:7;5019:6;5008:9;5004:22;4983:53;:::i;:::-;4973:63;;4928:118;5085:2;5111:53;5156:7;5147:6;5136:9;5132:22;5111:53;:::i;:::-;5101:63;;5056:118;4562:619;;;;;:::o;5187:943::-;5282:6;5290;5298;5306;5355:3;5343:9;5334:7;5330:23;5326:33;5323:120;;;5362:79;;:::i;:::-;5323:120;5482:1;5507:53;5552:7;5543:6;5532:9;5528:22;5507:53;:::i;:::-;5497:63;;5453:117;5609:2;5635:53;5680:7;5671:6;5660:9;5656:22;5635:53;:::i;:::-;5625:63;;5580:118;5737:2;5763:53;5808:7;5799:6;5788:9;5784:22;5763:53;:::i;:::-;5753:63;;5708:118;5893:2;5882:9;5878:18;5865:32;5924:18;5916:6;5913:30;5910:117;;;5946:79;;:::i;:::-;5910:117;6051:62;6105:7;6096:6;6085:9;6081:22;6051:62;:::i;:::-;6041:72;;5836:287;5187:943;;;;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:559::-;7176:6;7184;7233:2;7221:9;7212:7;7208:23;7204:32;7201:119;;;7239:79;;:::i;:::-;7201:119;7387:1;7376:9;7372:17;7359:31;7417:18;7409:6;7406:30;7403:117;;;7439:79;;:::i;:::-;7403:117;7552:80;7624:7;7615:6;7604:9;7600:22;7552:80;:::i;:::-;7534:98;;;;7330:312;7090:559;;;;;:::o;7655:323::-;7711:6;7760:2;7748:9;7739:7;7735:23;7731:32;7728:119;;;7766:79;;:::i;:::-;7728:119;7886:1;7911:50;7953:7;7944:6;7933:9;7929:22;7911:50;:::i;:::-;7901:60;;7857:114;7655:323;;;;:::o;7984:329::-;8043:6;8092:2;8080:9;8071:7;8067:23;8063:32;8060:119;;;8098:79;;:::i;:::-;8060:119;8218:1;8243:53;8288:7;8279:6;8268:9;8264:22;8243:53;:::i;:::-;8233:63;;8189:117;7984:329;;;;:::o;8319:327::-;8377:6;8426:2;8414:9;8405:7;8401:23;8397:32;8394:119;;;8432:79;;:::i;:::-;8394:119;8552:1;8577:52;8621:7;8612:6;8601:9;8597:22;8577:52;:::i;:::-;8567:62;;8523:116;8319:327;;;;:::o;8652:349::-;8721:6;8770:2;8758:9;8749:7;8745:23;8741:32;8738:119;;;8776:79;;:::i;:::-;8738:119;8896:1;8921:63;8976:7;8967:6;8956:9;8952:22;8921:63;:::i;:::-;8911:73;;8867:127;8652:349;;;;:::o;9007:509::-;9076:6;9125:2;9113:9;9104:7;9100:23;9096:32;9093:119;;;9131:79;;:::i;:::-;9093:119;9279:1;9268:9;9264:17;9251:31;9309:18;9301:6;9298:30;9295:117;;;9331:79;;:::i;:::-;9295:117;9436:63;9491:7;9482:6;9471:9;9467:22;9436:63;:::i;:::-;9426:73;;9222:287;9007:509;;;;:::o;9522:329::-;9581:6;9630:2;9618:9;9609:7;9605:23;9601:32;9598:119;;;9636:79;;:::i;:::-;9598:119;9756:1;9781:53;9826:7;9817:6;9806:9;9802:22;9781:53;:::i;:::-;9771:63;;9727:117;9522:329;;;;:::o;9857:327::-;9915:6;9964:2;9952:9;9943:7;9939:23;9935:32;9932:119;;;9970:79;;:::i;:::-;9932:119;10090:1;10115:52;10159:7;10150:6;10139:9;10135:22;10115:52;:::i;:::-;10105:62;;10061:116;9857:327;;;;:::o;10190:702::-;10284:6;10292;10300;10349:2;10337:9;10328:7;10324:23;10320:32;10317:119;;;10355:79;;:::i;:::-;10317:119;10475:1;10500:52;10544:7;10535:6;10524:9;10520:22;10500:52;:::i;:::-;10490:62;;10446:116;10629:2;10618:9;10614:18;10601:32;10660:18;10652:6;10649:30;10646:117;;;10682:79;;:::i;:::-;10646:117;10795:80;10867:7;10858:6;10847:9;10843:22;10795:80;:::i;:::-;10777:98;;;;10572:313;10190:702;;;;;:::o;10898:118::-;10985:24;11003:5;10985:24;:::i;:::-;10980:3;10973:37;10898:118;;:::o;11022:157::-;11127:45;11147:24;11165:5;11147:24;:::i;:::-;11127:45;:::i;:::-;11122:3;11115:58;11022:157;;:::o;11185:109::-;11266:21;11281:5;11266:21;:::i;:::-;11261:3;11254:34;11185:109;;:::o;11300:157::-;11405:45;11425:24;11443:5;11425:24;:::i;:::-;11405:45;:::i;:::-;11400:3;11393:58;11300:157;;:::o;11463:360::-;11549:3;11577:38;11609:5;11577:38;:::i;:::-;11631:70;11694:6;11689:3;11631:70;:::i;:::-;11624:77;;11710:52;11755:6;11750:3;11743:4;11736:5;11732:16;11710:52;:::i;:::-;11787:29;11809:6;11787:29;:::i;:::-;11782:3;11778:39;11771:46;;11553:270;11463:360;;;;:::o;11829:364::-;11917:3;11945:39;11978:5;11945:39;:::i;:::-;12000:71;12064:6;12059:3;12000:71;:::i;:::-;11993:78;;12080:52;12125:6;12120:3;12113:4;12106:5;12102:16;12080:52;:::i;:::-;12157:29;12179:6;12157:29;:::i;:::-;12152:3;12148:39;12141:46;;11921:272;11829:364;;;;:::o;12199:377::-;12305:3;12333:39;12366:5;12333:39;:::i;:::-;12388:89;12470:6;12465:3;12388:89;:::i;:::-;12381:96;;12486:52;12531:6;12526:3;12519:4;12512:5;12508:16;12486:52;:::i;:::-;12563:6;12558:3;12554:16;12547:23;;12309:267;12199:377;;;;:::o;12606:845::-;12709:3;12746:5;12740:12;12775:36;12801:9;12775:36;:::i;:::-;12827:89;12909:6;12904:3;12827:89;:::i;:::-;12820:96;;12947:1;12936:9;12932:17;12963:1;12958:137;;;;13109:1;13104:341;;;;12925:520;;12958:137;13042:4;13038:9;13027;13023:25;13018:3;13011:38;13078:6;13073:3;13069:16;13062:23;;12958:137;;13104:341;13171:38;13203:5;13171:38;:::i;:::-;13231:1;13245:154;13259:6;13256:1;13253:13;13245:154;;;13333:7;13327:14;13323:1;13318:3;13314:11;13307:35;13383:1;13374:7;13370:15;13359:26;;13281:4;13278:1;13274:12;13269:17;;13245:154;;;13428:6;13423:3;13419:16;13412:23;;13111:334;;12925:520;;12713:738;;12606:845;;;;:::o;13457:366::-;13599:3;13620:67;13684:2;13679:3;13620:67;:::i;:::-;13613:74;;13696:93;13785:3;13696:93;:::i;:::-;13814:2;13809:3;13805:12;13798:19;;13457:366;;;:::o;13829:::-;13971:3;13992:67;14056:2;14051:3;13992:67;:::i;:::-;13985:74;;14068:93;14157:3;14068:93;:::i;:::-;14186:2;14181:3;14177:12;14170:19;;13829:366;;;:::o;14201:::-;14343:3;14364:67;14428:2;14423:3;14364:67;:::i;:::-;14357:74;;14440:93;14529:3;14440:93;:::i;:::-;14558:2;14553:3;14549:12;14542:19;;14201:366;;;:::o;14573:::-;14715:3;14736:67;14800:2;14795:3;14736:67;:::i;:::-;14729:74;;14812:93;14901:3;14812:93;:::i;:::-;14930:2;14925:3;14921:12;14914:19;;14573:366;;;:::o;14945:::-;15087:3;15108:67;15172:2;15167:3;15108:67;:::i;:::-;15101:74;;15184:93;15273:3;15184:93;:::i;:::-;15302:2;15297:3;15293:12;15286:19;;14945:366;;;:::o;15317:::-;15459:3;15480:67;15544:2;15539:3;15480:67;:::i;:::-;15473:74;;15556:93;15645:3;15556:93;:::i;:::-;15674:2;15669:3;15665:12;15658:19;;15317:366;;;:::o;15689:::-;15831:3;15852:67;15916:2;15911:3;15852:67;:::i;:::-;15845:74;;15928:93;16017:3;15928:93;:::i;:::-;16046:2;16041:3;16037:12;16030:19;;15689:366;;;:::o;16061:::-;16203:3;16224:67;16288:2;16283:3;16224:67;:::i;:::-;16217:74;;16300:93;16389:3;16300:93;:::i;:::-;16418:2;16413:3;16409:12;16402:19;;16061:366;;;:::o;16433:::-;16575:3;16596:67;16660:2;16655:3;16596:67;:::i;:::-;16589:74;;16672:93;16761:3;16672:93;:::i;:::-;16790:2;16785:3;16781:12;16774:19;;16433:366;;;:::o;16805:::-;16947:3;16968:67;17032:2;17027:3;16968:67;:::i;:::-;16961:74;;17044:93;17133:3;17044:93;:::i;:::-;17162:2;17157:3;17153:12;17146:19;;16805:366;;;:::o;17177:::-;17319:3;17340:67;17404:2;17399:3;17340:67;:::i;:::-;17333:74;;17416:93;17505:3;17416:93;:::i;:::-;17534:2;17529:3;17525:12;17518:19;;17177:366;;;:::o;17549:::-;17691:3;17712:67;17776:2;17771:3;17712:67;:::i;:::-;17705:74;;17788:93;17877:3;17788:93;:::i;:::-;17906:2;17901:3;17897:12;17890:19;;17549:366;;;:::o;17921:::-;18063:3;18084:67;18148:2;18143:3;18084:67;:::i;:::-;18077:74;;18160:93;18249:3;18160:93;:::i;:::-;18278:2;18273:3;18269:12;18262:19;;17921:366;;;:::o;18293:::-;18435:3;18456:67;18520:2;18515:3;18456:67;:::i;:::-;18449:74;;18532:93;18621:3;18532:93;:::i;:::-;18650:2;18645:3;18641:12;18634:19;;18293:366;;;:::o;18665:::-;18807:3;18828:67;18892:2;18887:3;18828:67;:::i;:::-;18821:74;;18904:93;18993:3;18904:93;:::i;:::-;19022:2;19017:3;19013:12;19006:19;;18665:366;;;:::o;19037:::-;19179:3;19200:67;19264:2;19259:3;19200:67;:::i;:::-;19193:74;;19276:93;19365:3;19276:93;:::i;:::-;19394:2;19389:3;19385:12;19378:19;;19037:366;;;:::o;19409:400::-;19569:3;19590:84;19672:1;19667:3;19590:84;:::i;:::-;19583:91;;19683:93;19772:3;19683:93;:::i;:::-;19801:1;19796:3;19792:11;19785:18;;19409:400;;;:::o;19815:366::-;19957:3;19978:67;20042:2;20037:3;19978:67;:::i;:::-;19971:74;;20054:93;20143:3;20054:93;:::i;:::-;20172:2;20167:3;20163:12;20156:19;;19815:366;;;:::o;20187:::-;20329:3;20350:67;20414:2;20409:3;20350:67;:::i;:::-;20343:74;;20426:93;20515:3;20426:93;:::i;:::-;20544:2;20539:3;20535:12;20528:19;;20187:366;;;:::o;20559:::-;20701:3;20722:67;20786:2;20781:3;20722:67;:::i;:::-;20715:74;;20798:93;20887:3;20798:93;:::i;:::-;20916:2;20911:3;20907:12;20900:19;;20559:366;;;:::o;20931:::-;21073:3;21094:67;21158:2;21153:3;21094:67;:::i;:::-;21087:74;;21170:93;21259:3;21170:93;:::i;:::-;21288:2;21283:3;21279:12;21272:19;;20931:366;;;:::o;21303:::-;21445:3;21466:67;21530:2;21525:3;21466:67;:::i;:::-;21459:74;;21542:93;21631:3;21542:93;:::i;:::-;21660:2;21655:3;21651:12;21644:19;;21303:366;;;:::o;21675:::-;21817:3;21838:67;21902:2;21897:3;21838:67;:::i;:::-;21831:74;;21914:93;22003:3;21914:93;:::i;:::-;22032:2;22027:3;22023:12;22016:19;;21675:366;;;:::o;22047:::-;22189:3;22210:67;22274:2;22269:3;22210:67;:::i;:::-;22203:74;;22286:93;22375:3;22286:93;:::i;:::-;22404:2;22399:3;22395:12;22388:19;;22047:366;;;:::o;22419:398::-;22578:3;22599:83;22680:1;22675:3;22599:83;:::i;:::-;22592:90;;22691:93;22780:3;22691:93;:::i;:::-;22809:1;22804:3;22800:11;22793:18;;22419:398;;;:::o;22823:366::-;22965:3;22986:67;23050:2;23045:3;22986:67;:::i;:::-;22979:74;;23062:93;23151:3;23062:93;:::i;:::-;23180:2;23175:3;23171:12;23164:19;;22823:366;;;:::o;23195:::-;23337:3;23358:67;23422:2;23417:3;23358:67;:::i;:::-;23351:74;;23434:93;23523:3;23434:93;:::i;:::-;23552:2;23547:3;23543:12;23536:19;;23195:366;;;:::o;23567:::-;23709:3;23730:67;23794:2;23789:3;23730:67;:::i;:::-;23723:74;;23806:93;23895:3;23806:93;:::i;:::-;23924:2;23919:3;23915:12;23908:19;;23567:366;;;:::o;23939:::-;24081:3;24102:67;24166:2;24161:3;24102:67;:::i;:::-;24095:74;;24178:93;24267:3;24178:93;:::i;:::-;24296:2;24291:3;24287:12;24280:19;;23939:366;;;:::o;24311:118::-;24398:24;24416:5;24398:24;:::i;:::-;24393:3;24386:37;24311:118;;:::o;24435:115::-;24520:23;24537:5;24520:23;:::i;:::-;24515:3;24508:36;24435:115;;:::o;24556:256::-;24668:3;24683:75;24754:3;24745:6;24683:75;:::i;:::-;24783:2;24778:3;24774:12;24767:19;;24803:3;24796:10;;24556:256;;;;:::o;24818:397::-;24958:3;24973:75;25044:3;25035:6;24973:75;:::i;:::-;25073:2;25068:3;25064:12;25057:19;;25086:75;25157:3;25148:6;25086:75;:::i;:::-;25186:2;25181:3;25177:12;25170:19;;25206:3;25199:10;;24818:397;;;;;:::o;25221:695::-;25499:3;25521:92;25609:3;25600:6;25521:92;:::i;:::-;25514:99;;25630:95;25721:3;25712:6;25630:95;:::i;:::-;25623:102;;25742:148;25886:3;25742:148;:::i;:::-;25735:155;;25907:3;25900:10;;25221:695;;;;;:::o;25922:379::-;26106:3;26128:147;26271:3;26128:147;:::i;:::-;26121:154;;26292:3;26285:10;;25922:379;;;:::o;26307:222::-;26400:4;26438:2;26427:9;26423:18;26415:26;;26451:71;26519:1;26508:9;26504:17;26495:6;26451:71;:::i;:::-;26307:222;;;;:::o;26535:640::-;26730:4;26768:3;26757:9;26753:19;26745:27;;26782:71;26850:1;26839:9;26835:17;26826:6;26782:71;:::i;:::-;26863:72;26931:2;26920:9;26916:18;26907:6;26863:72;:::i;:::-;26945;27013:2;27002:9;26998:18;26989:6;26945:72;:::i;:::-;27064:9;27058:4;27054:20;27049:2;27038:9;27034:18;27027:48;27092:76;27163:4;27154:6;27092:76;:::i;:::-;27084:84;;26535:640;;;;;;;:::o;27181:210::-;27268:4;27306:2;27295:9;27291:18;27283:26;;27319:65;27381:1;27370:9;27366:17;27357:6;27319:65;:::i;:::-;27181:210;;;;:::o;27397:313::-;27510:4;27548:2;27537:9;27533:18;27525:26;;27597:9;27591:4;27587:20;27583:1;27572:9;27568:17;27561:47;27625:78;27698:4;27689:6;27625:78;:::i;:::-;27617:86;;27397:313;;;;:::o;27716:419::-;27882:4;27920:2;27909:9;27905:18;27897:26;;27969:9;27963:4;27959:20;27955:1;27944:9;27940:17;27933:47;27997:131;28123:4;27997:131;:::i;:::-;27989:139;;27716:419;;;:::o;28141:::-;28307:4;28345:2;28334:9;28330:18;28322:26;;28394:9;28388:4;28384:20;28380:1;28369:9;28365:17;28358:47;28422:131;28548:4;28422:131;:::i;:::-;28414:139;;28141:419;;;:::o;28566:::-;28732:4;28770:2;28759:9;28755:18;28747:26;;28819:9;28813:4;28809:20;28805:1;28794:9;28790:17;28783:47;28847:131;28973:4;28847:131;:::i;:::-;28839:139;;28566:419;;;:::o;28991:::-;29157:4;29195:2;29184:9;29180:18;29172:26;;29244:9;29238:4;29234:20;29230:1;29219:9;29215:17;29208:47;29272:131;29398:4;29272:131;:::i;:::-;29264:139;;28991:419;;;:::o;29416:::-;29582:4;29620:2;29609:9;29605:18;29597:26;;29669:9;29663:4;29659:20;29655:1;29644:9;29640:17;29633:47;29697:131;29823:4;29697:131;:::i;:::-;29689:139;;29416:419;;;:::o;29841:::-;30007:4;30045:2;30034:9;30030:18;30022:26;;30094:9;30088:4;30084:20;30080:1;30069:9;30065:17;30058:47;30122:131;30248:4;30122:131;:::i;:::-;30114:139;;29841:419;;;:::o;30266:::-;30432:4;30470:2;30459:9;30455:18;30447:26;;30519:9;30513:4;30509:20;30505:1;30494:9;30490:17;30483:47;30547:131;30673:4;30547:131;:::i;:::-;30539:139;;30266:419;;;:::o;30691:::-;30857:4;30895:2;30884:9;30880:18;30872:26;;30944:9;30938:4;30934:20;30930:1;30919:9;30915:17;30908:47;30972:131;31098:4;30972:131;:::i;:::-;30964:139;;30691:419;;;:::o;31116:::-;31282:4;31320:2;31309:9;31305:18;31297:26;;31369:9;31363:4;31359:20;31355:1;31344:9;31340:17;31333:47;31397:131;31523:4;31397:131;:::i;:::-;31389:139;;31116:419;;;:::o;31541:::-;31707:4;31745:2;31734:9;31730:18;31722:26;;31794:9;31788:4;31784:20;31780:1;31769:9;31765:17;31758:47;31822:131;31948:4;31822:131;:::i;:::-;31814:139;;31541:419;;;:::o;31966:::-;32132:4;32170:2;32159:9;32155:18;32147:26;;32219:9;32213:4;32209:20;32205:1;32194:9;32190:17;32183:47;32247:131;32373:4;32247:131;:::i;:::-;32239:139;;31966:419;;;:::o;32391:::-;32557:4;32595:2;32584:9;32580:18;32572:26;;32644:9;32638:4;32634:20;32630:1;32619:9;32615:17;32608:47;32672:131;32798:4;32672:131;:::i;:::-;32664:139;;32391:419;;;:::o;32816:::-;32982:4;33020:2;33009:9;33005:18;32997:26;;33069:9;33063:4;33059:20;33055:1;33044:9;33040:17;33033:47;33097:131;33223:4;33097:131;:::i;:::-;33089:139;;32816:419;;;:::o;33241:::-;33407:4;33445:2;33434:9;33430:18;33422:26;;33494:9;33488:4;33484:20;33480:1;33469:9;33465:17;33458:47;33522:131;33648:4;33522:131;:::i;:::-;33514:139;;33241:419;;;:::o;33666:::-;33832:4;33870:2;33859:9;33855:18;33847:26;;33919:9;33913:4;33909:20;33905:1;33894:9;33890:17;33883:47;33947:131;34073:4;33947:131;:::i;:::-;33939:139;;33666:419;;;:::o;34091:::-;34257:4;34295:2;34284:9;34280:18;34272:26;;34344:9;34338:4;34334:20;34330:1;34319:9;34315:17;34308:47;34372:131;34498:4;34372:131;:::i;:::-;34364:139;;34091:419;;;:::o;34516:::-;34682:4;34720:2;34709:9;34705:18;34697:26;;34769:9;34763:4;34759:20;34755:1;34744:9;34740:17;34733:47;34797:131;34923:4;34797:131;:::i;:::-;34789:139;;34516:419;;;:::o;34941:::-;35107:4;35145:2;35134:9;35130:18;35122:26;;35194:9;35188:4;35184:20;35180:1;35169:9;35165:17;35158:47;35222:131;35348:4;35222:131;:::i;:::-;35214:139;;34941:419;;;:::o;35366:::-;35532:4;35570:2;35559:9;35555:18;35547:26;;35619:9;35613:4;35609:20;35605:1;35594:9;35590:17;35583:47;35647:131;35773:4;35647:131;:::i;:::-;35639:139;;35366:419;;;:::o;35791:::-;35957:4;35995:2;35984:9;35980:18;35972:26;;36044:9;36038:4;36034:20;36030:1;36019:9;36015:17;36008:47;36072:131;36198:4;36072:131;:::i;:::-;36064:139;;35791:419;;;:::o;36216:::-;36382:4;36420:2;36409:9;36405:18;36397:26;;36469:9;36463:4;36459:20;36455:1;36444:9;36440:17;36433:47;36497:131;36623:4;36497:131;:::i;:::-;36489:139;;36216:419;;;:::o;36641:::-;36807:4;36845:2;36834:9;36830:18;36822:26;;36894:9;36888:4;36884:20;36880:1;36869:9;36865:17;36858:47;36922:131;37048:4;36922:131;:::i;:::-;36914:139;;36641:419;;;:::o;37066:::-;37232:4;37270:2;37259:9;37255:18;37247:26;;37319:9;37313:4;37309:20;37305:1;37294:9;37290:17;37283:47;37347:131;37473:4;37347:131;:::i;:::-;37339:139;;37066:419;;;:::o;37491:::-;37657:4;37695:2;37684:9;37680:18;37672:26;;37744:9;37738:4;37734:20;37730:1;37719:9;37715:17;37708:47;37772:131;37898:4;37772:131;:::i;:::-;37764:139;;37491:419;;;:::o;37916:::-;38082:4;38120:2;38109:9;38105:18;38097:26;;38169:9;38163:4;38159:20;38155:1;38144:9;38140:17;38133:47;38197:131;38323:4;38197:131;:::i;:::-;38189:139;;37916:419;;;:::o;38341:::-;38507:4;38545:2;38534:9;38530:18;38522:26;;38594:9;38588:4;38584:20;38580:1;38569:9;38565:17;38558:47;38622:131;38748:4;38622:131;:::i;:::-;38614:139;;38341:419;;;:::o;38766:::-;38932:4;38970:2;38959:9;38955:18;38947:26;;39019:9;39013:4;39009:20;39005:1;38994:9;38990:17;38983:47;39047:131;39173:4;39047:131;:::i;:::-;39039:139;;38766:419;;;:::o;39191:222::-;39284:4;39322:2;39311:9;39307:18;39299:26;;39335:71;39403:1;39392:9;39388:17;39379:6;39335:71;:::i;:::-;39191:222;;;;:::o;39419:218::-;39510:4;39548:2;39537:9;39533:18;39525:26;;39561:69;39627:1;39616:9;39612:17;39603:6;39561:69;:::i;:::-;39419:218;;;;:::o;39643:129::-;39677:6;39704:20;;:::i;:::-;39694:30;;39733:33;39761:4;39753:6;39733:33;:::i;:::-;39643:129;;;:::o;39778:75::-;39811:6;39844:2;39838:9;39828:19;;39778:75;:::o;39859:307::-;39920:4;40010:18;40002:6;39999:30;39996:56;;;40032:18;;:::i;:::-;39996:56;40070:29;40092:6;40070:29;:::i;:::-;40062:37;;40154:4;40148;40144:15;40136:23;;39859:307;;;:::o;40172:308::-;40234:4;40324:18;40316:6;40313:30;40310:56;;;40346:18;;:::i;:::-;40310:56;40384:29;40406:6;40384:29;:::i;:::-;40376:37;;40468:4;40462;40458:15;40450:23;;40172:308;;;:::o;40486:141::-;40535:4;40558:3;40550:11;;40581:3;40578:1;40571:14;40615:4;40612:1;40602:18;40594:26;;40486:141;;;:::o;40633:98::-;40684:6;40718:5;40712:12;40702:22;;40633:98;;;:::o;40737:99::-;40789:6;40823:5;40817:12;40807:22;;40737:99;;;:::o;40842:168::-;40925:11;40959:6;40954:3;40947:19;40999:4;40994:3;40990:14;40975:29;;40842:168;;;;:::o;41016:147::-;41117:11;41154:3;41139:18;;41016:147;;;;:::o;41169:169::-;41253:11;41287:6;41282:3;41275:19;41327:4;41322:3;41318:14;41303:29;;41169:169;;;;:::o;41344:148::-;41446:11;41483:3;41468:18;;41344:148;;;;:::o;41498:305::-;41538:3;41557:20;41575:1;41557:20;:::i;:::-;41552:25;;41591:20;41609:1;41591:20;:::i;:::-;41586:25;;41745:1;41677:66;41673:74;41670:1;41667:81;41664:107;;;41751:18;;:::i;:::-;41664:107;41795:1;41792;41788:9;41781:16;;41498:305;;;;:::o;41809:246::-;41848:3;41867:19;41884:1;41867:19;:::i;:::-;41862:24;;41900:19;41917:1;41900:19;:::i;:::-;41895:24;;41997:1;41985:10;41981:18;41978:1;41975:25;41972:51;;;42003:18;;:::i;:::-;41972:51;42047:1;42044;42040:9;42033:16;;41809:246;;;;:::o;42061:185::-;42101:1;42118:20;42136:1;42118:20;:::i;:::-;42113:25;;42152:20;42170:1;42152:20;:::i;:::-;42147:25;;42191:1;42181:35;;42196:18;;:::i;:::-;42181:35;42238:1;42235;42231:9;42226:14;;42061:185;;;;:::o;42252:348::-;42292:7;42315:20;42333:1;42315:20;:::i;:::-;42310:25;;42349:20;42367:1;42349:20;:::i;:::-;42344:25;;42537:1;42469:66;42465:74;42462:1;42459:81;42454:1;42447:9;42440:17;42436:105;42433:131;;;42544:18;;:::i;:::-;42433:131;42592:1;42589;42585:9;42574:20;;42252:348;;;;:::o;42606:191::-;42646:4;42666:20;42684:1;42666:20;:::i;:::-;42661:25;;42700:20;42718:1;42700:20;:::i;:::-;42695:25;;42739:1;42736;42733:8;42730:34;;;42744:18;;:::i;:::-;42730:34;42789:1;42786;42782:9;42774:17;;42606:191;;;;:::o;42803:96::-;42840:7;42869:24;42887:5;42869:24;:::i;:::-;42858:35;;42803:96;;;:::o;42905:90::-;42939:7;42982:5;42975:13;42968:21;42957:32;;42905:90;;;:::o;43001:77::-;43038:7;43067:5;43056:16;;43001:77;;;:::o;43084:149::-;43120:7;43160:66;43153:5;43149:78;43138:89;;43084:149;;;:::o;43239:126::-;43276:7;43316:42;43309:5;43305:54;43294:65;;43239:126;;;:::o;43371:77::-;43408:7;43437:5;43426:16;;43371:77;;;:::o;43454:93::-;43490:7;43530:10;43523:5;43519:22;43508:33;;43454:93;;;:::o;43553:154::-;43637:6;43632:3;43627;43614:30;43699:1;43690:6;43685:3;43681:16;43674:27;43553:154;;;:::o;43713:307::-;43781:1;43791:113;43805:6;43802:1;43799:13;43791:113;;;43890:1;43885:3;43881:11;43875:18;43871:1;43866:3;43862:11;43855:39;43827:2;43824:1;43820:10;43815:15;;43791:113;;;43922:6;43919:1;43916:13;43913:101;;;44002:1;43993:6;43988:3;43984:16;43977:27;43913:101;43762:258;43713:307;;;:::o;44026:320::-;44070:6;44107:1;44101:4;44097:12;44087:22;;44154:1;44148:4;44144:12;44175:18;44165:81;;44231:4;44223:6;44219:17;44209:27;;44165:81;44293:2;44285:6;44282:14;44262:18;44259:38;44256:84;;;44312:18;;:::i;:::-;44256:84;44077:269;44026:320;;;:::o;44352:281::-;44435:27;44457:4;44435:27;:::i;:::-;44427:6;44423:40;44565:6;44553:10;44550:22;44529:18;44517:10;44514:34;44511:62;44508:88;;;44576:18;;:::i;:::-;44508:88;44616:10;44612:2;44605:22;44395:238;44352:281;;:::o;44639:233::-;44678:3;44701:24;44719:5;44701:24;:::i;:::-;44692:33;;44747:66;44740:5;44737:77;44734:103;;;44817:18;;:::i;:::-;44734:103;44864:1;44857:5;44853:13;44846:20;;44639:233;;;:::o;44878:175::-;44916:3;44939:23;44956:5;44939:23;:::i;:::-;44930:32;;44984:10;44977:5;44974:21;44971:47;;;44998:18;;:::i;:::-;44971:47;45045:1;45038:5;45034:13;45027:20;;44878:175;;;:::o;45059:100::-;45098:7;45127:26;45147:5;45127:26;:::i;:::-;45116:37;;45059:100;;;:::o;45165:79::-;45204:7;45233:5;45222:16;;45165:79;;;:::o;45250:94::-;45289:7;45318:20;45332:5;45318:20;:::i;:::-;45307:31;;45250:94;;;:::o;45350:176::-;45382:1;45399:20;45417:1;45399:20;:::i;:::-;45394:25;;45433:20;45451:1;45433:20;:::i;:::-;45428:25;;45472:1;45462:35;;45477:18;;:::i;:::-;45462:35;45518:1;45515;45511:9;45506:14;;45350:176;;;;:::o;45532:180::-;45580:77;45577:1;45570:88;45677:4;45674:1;45667:15;45701:4;45698:1;45691:15;45718:180;45766:77;45763:1;45756:88;45863:4;45860:1;45853:15;45887:4;45884:1;45877:15;45904:180;45952:77;45949:1;45942:88;46049:4;46046:1;46039:15;46073:4;46070:1;46063:15;46090:180;46138:77;46135:1;46128:88;46235:4;46232:1;46225:15;46259:4;46256:1;46249:15;46276:180;46324:77;46321:1;46314:88;46421:4;46418:1;46411:15;46445:4;46442:1;46435:15;46462:117;46571:1;46568;46561:12;46585:117;46694:1;46691;46684:12;46708:117;46817:1;46814;46807:12;46831:117;46940:1;46937;46930:12;46954:117;47063:1;47060;47053:12;47077:117;47186:1;47183;47176:12;47200:102;47241:6;47292:2;47288:7;47283:2;47276:5;47272:14;47268:28;47258:38;;47200:102;;;:::o;47308:94::-;47341:8;47389:5;47385:2;47381:14;47360:35;;47308:94;;;:::o;47408:167::-;47548:19;47544:1;47536:6;47532:14;47525:43;47408:167;:::o;47581:237::-;47721:34;47717:1;47709:6;47705:14;47698:58;47790:20;47785:2;47777:6;47773:15;47766:45;47581:237;:::o;47824:164::-;47964:16;47960:1;47952:6;47948:14;47941:40;47824:164;:::o;47994:225::-;48134:34;48130:1;48122:6;48118:14;48111:58;48203:8;48198:2;48190:6;48186:15;48179:33;47994:225;:::o;48225:178::-;48365:30;48361:1;48353:6;48349:14;48342:54;48225:178;:::o;48409:170::-;48549:22;48545:1;48537:6;48533:14;48526:46;48409:170;:::o;48585:172::-;48725:24;48721:1;48713:6;48709:14;48702:48;48585:172;:::o;48763:223::-;48903:34;48899:1;48891:6;48887:14;48880:58;48972:6;48967:2;48959:6;48955:15;48948:31;48763:223;:::o;48992:175::-;49132:27;49128:1;49120:6;49116:14;49109:51;48992:175;:::o;49173:163::-;49313:15;49309:1;49301:6;49297:14;49290:39;49173:163;:::o;49342:231::-;49482:34;49478:1;49470:6;49466:14;49459:58;49551:14;49546:2;49538:6;49534:15;49527:39;49342:231;:::o;49579:243::-;49719:34;49715:1;49707:6;49703:14;49696:58;49788:26;49783:2;49775:6;49771:15;49764:51;49579:243;:::o;49828:229::-;49968:34;49964:1;49956:6;49952:14;49945:58;50037:12;50032:2;50024:6;50020:15;50013:37;49828:229;:::o;50063:228::-;50203:34;50199:1;50191:6;50187:14;50180:58;50272:11;50267:2;50259:6;50255:15;50248:36;50063:228;:::o;50297:182::-;50437:34;50433:1;50425:6;50421:14;50414:58;50297:182;:::o;50485:231::-;50625:34;50621:1;50613:6;50609:14;50602:58;50694:14;50689:2;50681:6;50677:15;50670:39;50485:231;:::o;50722:155::-;50862:7;50858:1;50850:6;50846:14;50839:31;50722:155;:::o;50883:182::-;51023:34;51019:1;51011:6;51007:14;51000:58;50883:182;:::o;51071:228::-;51211:34;51207:1;51199:6;51195:14;51188:58;51280:11;51275:2;51267:6;51263:15;51256:36;51071:228;:::o;51305:163::-;51445:15;51441:1;51433:6;51429:14;51422:39;51305:163;:::o;51474:170::-;51614:22;51610:1;51602:6;51598:14;51591:46;51474:170;:::o;51650:220::-;51790:34;51786:1;51778:6;51774:14;51767:58;51859:3;51854:2;51846:6;51842:15;51835:28;51650:220;:::o;51876:163::-;52016:15;52012:1;52004:6;52000:14;51993:39;51876:163;:::o;52045:166::-;52185:18;52181:1;52173:6;52169:14;52162:42;52045:166;:::o;52217:114::-;;:::o;52337:236::-;52477:34;52473:1;52465:6;52461:14;52454:58;52546:19;52541:2;52533:6;52529:15;52522:44;52337:236;:::o;52579:166::-;52719:18;52715:1;52707:6;52703:14;52696:42;52579:166;:::o;52751:167::-;52891:19;52887:1;52879:6;52875:14;52868:43;52751:167;:::o;52924:168::-;53064:20;53060:1;53052:6;53048:14;53041:44;52924:168;:::o;53098:122::-;53171:24;53189:5;53171:24;:::i;:::-;53164:5;53161:35;53151:63;;53210:1;53207;53200:12;53151:63;53098:122;:::o;53226:116::-;53296:21;53311:5;53296:21;:::i;:::-;53289:5;53286:32;53276:60;;53332:1;53329;53322:12;53276:60;53226:116;:::o;53348:122::-;53421:24;53439:5;53421:24;:::i;:::-;53414:5;53411:35;53401:63;;53460:1;53457;53450:12;53401:63;53348:122;:::o;53476:120::-;53548:23;53565:5;53548:23;:::i;:::-;53541:5;53538:34;53528:62;;53586:1;53583;53576:12;53528:62;53476:120;:::o;53602:122::-;53675:24;53693:5;53675:24;:::i;:::-;53668:5;53665:35;53655:63;;53714:1;53711;53704:12;53655:63;53602:122;:::o;53730:120::-;53802:23;53819:5;53802:23;:::i;:::-;53795:5;53792:34;53782:62;;53840:1;53837;53830:12;53782:62;53730:120;:::o

Swarm Source

ipfs://d262028bafac514a2ee7e4a2521511bf03bc39174935b9a499534d2a1a4055d1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

A new social hub is coming. Unleash your creativity for a Healthy Headspace.**Support the Cause & MINT HERE** >> https://headspacehunters.io/

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.