ETH Price: $2,587.11 (-1.40%)

Token

 

Overview

Max Total Supply

226

Holders

131

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0x94d11bce7472b899f7253fab2ffc3d5e776036fc
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MintPass

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 2021-11-26
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

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

interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

interface IERC1155Receiver is IERC165 {
    /**
        @dev Handles the receipt of a single ERC1155 token type. This function is
        called at the end of a `safeTransferFrom` after the balance has been updated.
        To accept the transfer, this must return
        `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
        (i.e. 0xf23a6e61, or its own function selector).
        @param operator The address which initiated the transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param id The ID of the token being transferred
        @param value The amount of tokens being transferred
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
        @dev Handles the receipt of a multiple ERC1155 token types. This function
        is called at the end of a `safeBatchTransferFrom` after the balances have
        been updated. To accept the transfer(s), this must return
        `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
        (i.e. 0xbc197c81, or its own function selector).
        @param operator The address which initiated the batch transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param ids An array containing ids of each token being transferred (order and length must match values array)
        @param values An array containing amounts of each token being transferred (order and length must match ids array)
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

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

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private 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);
            }
        }
    }
}

library Strings {
    bytes16 private constant alphabet = "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] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

}

interface ITRAF {

    function adminMint(address account, uint256 amount) external;

    function changeOwner1(address payable owner) external;
    
    function changeOwner2(address payable owner) external;
}

contract MintPass is ERC165, IERC1155, IERC1155MetadataURI {
    
    ITRAF TRAF;
    using Address for address;
    using Strings for uint256;
    
    address private _manager;
    
    uint256 private _purePrice = 500000000000000000;
    uint256 private _impurePrice = 950000000000000000;

    mapping(address => uint256) private _balances; // Mapping from token ID to account balances
    mapping(address => mapping(address => bool)) private _operatorApprovals; // Mapping from account to operator approvals

    mapping(address => uint256) private _pure;//The amount of pure mint passes the user has

    string private _uri = "https://theredapefamily.com/mintPass.json";
    
    receive() external payable {}
    fallback() external payable {}
    
    constructor(address TRAFcontract) {
        _manager = msg.sender;
        TRAF = ITRAF(TRAFcontract);
    }
    
    //Read Functions======================================================================================================================================================
    function owner() external view returns (address) {
        return _manager;
    }
    
    function balanceOf(address account, uint256 id) public view override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        if(id == 0) {return _balances[account];}
        return 0;
    }

    function balanceOfBatch(address[] memory accounts, uint256[] memory ids) external view override returns (uint256[] memory) {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }
    
    function uri(uint256 id) external view override returns (string memory) {
        return _uri;
    }
    
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    
    function isApprovedForAll(address account, address operator) public view override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    function pureNFTsOf(address account) external view returns(uint256) {
        return _pure[account];
    }

    function prices() external view returns(uint256 purePrice, uint256 impurePrice) {
        purePrice = _purePrice;
        impurePrice = _impurePrice;
    }
    
    //Moderator Functions======================================================================================================================================================
    function changeManager(address manager) external {
        require(msg.sender == _manager);
        _manager = manager;
    }

    function changeOwner1(address payable owner) external {
        require(msg.sender == _manager);
        TRAF.changeOwner1(owner);
    }
    
    function changeOwner2(address payable owner) external {
        require(msg.sender == _manager);
        TRAF.changeOwner2(owner);
    }

    function changePrices(uint256 purePrice, uint256 impurePrice) external {
        require(msg.sender == _manager);
        _purePrice = purePrice;
        _impurePrice = impurePrice;
    }

    function setUri(string calldata Uri) external {
        require(msg.sender == _manager);
       _uri = Uri;
    }
    
    function managerWithdraw(address payable to, uint256 amount) external {
        require (msg.sender == _manager);
        to.transfer(amount);
    }
    
    function giveawayMint(address[] calldata users, uint256[] calldata amount_, bool[] calldata pure_) external {
        require(msg.sender == _manager);

        address user;
        uint256 amount;

        uint256 length = users.length;
        for(uint256 t; t < length; ++t) {
            user = users[t];
            amount = amount_[t]; 
            
            _balances[user] += amount;
            
            emit TransferSingle(msg.sender, address(0), user, 0, amount);
            
            if(pure_[t]) {_pure[user] += amount;}
        }
        
    }
    
    //User Functions======================================================================================================================================================
    function setApprovalForAll(address operator, bool approved) external override {
        require(msg.sender != operator, "ERC1155: setting approval status for self");

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(address from,address to,uint256 id,uint256 amount,bytes memory data) external override {
        require(
            from == msg.sender || isApprovedForAll(from, msg.sender),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    function safeBatchTransferFrom(address from,address to,uint256[] memory ids,uint256[] memory amounts,bytes memory data) public virtual override {
        require(
            from == msg.sender || isApprovedForAll(from, msg.sender),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }
    
    function mint(address account, uint256 amount) external payable {
        require(amount <= _balances[msg.sender], "Mint Pass: Insufficient tokens");

        uint256 pureAmount = _pure[msg.sender];
        if(pureAmount > amount) {pureAmount = amount;}

        uint256 unpureAmount = amount - pureAmount;

        require(msg.value == (pureAmount * _purePrice) + (unpureAmount * _impurePrice), "Mint Pass: Insufficient balance");
        
        _pure[msg.sender] -= pureAmount;

        _balances[msg.sender] -= amount;
        
        emit TransferSingle(msg.sender, msg.sender, address(0), 0, amount);

        TRAF.adminMint(account, amount);

    }
    
    //Internal Functions======================================================================================================================================================
    function _safeTransferFrom(address from,address to,uint256 id,uint256 amount,bytes memory data) internal virtual {
        require(id == 0, "Mint Pass: Unavailable NFT");
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

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

        if(_pure[from] > amount) {_pure[from] -= amount;}
        else {_pure[from] = 0;}

        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, amount, data);
    }

    function _safeBatchTransferFrom(address from,address to,uint256[] memory ids,uint256[] memory amounts,bytes memory data) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            require(id == 0, "Mint Pass: Unavailable NFT");
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[from] = fromBalance - amount;
            }
            _balances[to] += amount;

            if(_pure[from] > amount) {_pure[from] -= amount;}
            else {_pure[from] = 0;}
        }

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

        _doSafeBatchTransferAcceptanceCheck(msg.sender, from, to, ids, amounts, data);
    }
   
    function _doSafeTransferAcceptanceCheck(address operator, address from, address to, uint256 id, uint256 amount, bytes memory data) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"TRAFcontract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"changeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"owner","type":"address"}],"name":"changeOwner1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"owner","type":"address"}],"name":"changeOwner2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"purePrice","type":"uint256"},{"internalType":"uint256","name":"impurePrice","type":"uint256"}],"name":"changePrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"amount_","type":"uint256[]"},{"internalType":"bool[]","name":"pure_","type":"bool[]"}],"name":"giveawayMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"managerWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prices","outputs":[{"internalType":"uint256","name":"purePrice","type":"uint256"},{"internalType":"uint256","name":"impurePrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"pureNFTsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"Uri","type":"string"}],"name":"setUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526706f05b59d3b20000600255670d2f13f7789f000060035560405180606001604052806029815260200162003b3f60299139600790805190602001906200004d92919062000109565b503480156200005b57600080fd5b5060405162003b6838038062003b688339818101604052810190620000819190620001d0565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002ba565b828054620001179062000236565b90600052602060002090601f0160209004810192826200013b576000855562000187565b82601f106200015657805160ff191683800117855562000187565b8280016001018555821562000187579182015b828111156200018657825182559160200191906001019062000169565b5b5090506200019691906200019a565b5090565b5b80821115620001b55760008160009055506001016200019b565b5090565b600081519050620001ca81620002a0565b92915050565b600060208284031215620001e957620001e86200029b565b5b6000620001f984828501620001b9565b91505092915050565b60006200020f8262000216565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200024f57607f821691505b602082108114156200026657620002656200026c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620002ab8162000202565b8114620002b757600080fd5b50565b61387580620002ca6000396000f3fe6080604052600436106101175760003560e01c8063840a1128116100a0578063b2c61e9511610064578063b2c61e95146103b7578063c16e76b2146103e0578063d3419bf314610409578063e985e9c514610435578063f242432a146104725761011e565b8063840a1128146102e85780638da5cb5b146103115780639b642de11461033c578063a22cb46514610365578063a3fbbaae1461038e5761011e565b8063279093a5116100e7578063279093a5146102145780632eb2c2d61461023d57806340c10f19146102665780634e1273f4146102825780635a950e3e146102bf5761011e565b8062fdd58e1461012057806301ffc9a71461015d5780630e89341c1461019a57806310a3336c146101d75761011e565b3661011e57005b005b34801561012c57600080fd5b506101476004803603810190610142919061261a565b61049b565b6040516101549190612f0d565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906127b3565b610567565b6040516101919190612d27565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc919061285a565b610649565b6040516101ce9190612d6b565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061239a565b6106dd565b60405161020b9190612f0d565b60405180910390f35b34801561022057600080fd5b5061023b600480360381019061023691906123f4565b610726565b005b34801561024957600080fd5b50610264600480360381019061025f9190612474565b6107cb565b005b610280600480360381019061027b919061261a565b61085e565b005b34801561028e57600080fd5b506102a960048036038101906102a4919061270e565b610b66565b6040516102b69190612cce565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190612887565b610c7f565b005b3480156102f457600080fd5b5061030f600480360381019061030a91906123c7565b610ceb565b005b34801561031d57600080fd5b50610326610dd3565b6040516103339190612bad565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e919061280d565b610dfd565b005b34801561037157600080fd5b5061038c600480360381019061038791906125da565b610e6d565b005b34801561039a57600080fd5b506103b560048036038101906103b0919061239a565b610fd9565b005b3480156103c357600080fd5b506103de60048036038101906103d9919061265a565b611077565b005b3480156103ec57600080fd5b50610407600480360381019061040291906123c7565b6112a4565b005b34801561041557600080fd5b5061041e61138c565b60405161042c929190612f28565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190612434565b61139d565b6040516104699190612d27565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612543565b611431565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561050c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050390612dcd565b60405180910390fd5b600082141561055c57600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610561565b600090505b92915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061063257507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106425750610641826114c4565b5b9050919050565b6060600780546106589061322e565b80601f01602080910402602001604051908101604052809291908181526020018280546106849061322e565b80156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b50505050509050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078057600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156107c6573d6000803e3d6000fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061080b575061080a853361139d565b5b61084a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084190612e2d565b60405180910390fd5b610857858585858561152e565b5050505050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d790612e6d565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811115610930578190505b6000818361093e9190613120565b90506003548161094e91906130c6565b6002548361095c91906130c6565b6109669190613070565b34146109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90612e0d565b60405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109f69190613120565b9250508190555082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a4c9190613120565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62600087604051610acb929190612d42565b60405180910390a460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e58306f985856040518363ffffffff1660e01b8152600401610b2e929190612ca5565b600060405180830381600087803b158015610b4857600080fd5b505af1158015610b5c573d6000803e3d6000fd5b5050505050505050565b60608151835114610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390612ead565b60405180910390fd5b6000835167ffffffffffffffff811115610bc957610bc8613367565b5b604051908082528060200260200182016040528015610bf75781602001602082028036833780820191505090505b50905060005b8451811015610c7457610c44858281518110610c1c57610c1b613338565b5b6020026020010151858381518110610c3757610c36613338565b5b602002602001015161049b565b828281518110610c5757610c56613338565b5b60200260200101818152505080610c6d90613291565b9050610bfd565b508091505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd957600080fd5b81600281905550806003819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d4557600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663840a1128826040518263ffffffff1660e01b8152600401610d9e9190612bc8565b600060405180830381600087803b158015610db857600080fd5b505af1158015610dcc573d6000803e3d6000fd5b5050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5757600080fd5b818160079190610e68929190611f75565b505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed390612e8d565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610fcd9190612d27565b60405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103357600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d157600080fd5b600080600088889050905060005b81811015611298578989828181106110fa576110f9613338565b5b905060200201602081019061110f919061239a565b935087878281811061112457611123613338565b5b90506020020135925082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461117c9190613070565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626000876040516111fb929190612d42565b60405180910390a485858281811061121657611215613338565b5b905060200201602081019061122b9190612786565b156112875782600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461127f9190613070565b925050819055505b8061129190613291565b90506110df565b50505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fe57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c16e76b2826040518263ffffffff1660e01b81526004016113579190612bc8565b600060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b5050505050565b600080600254915060035490509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806114715750611470853361139d565b5b6114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790612ded565b60405180910390fd5b6114bd85858585856118b2565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8151835114611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612eed565b60405180910390fd5b60005b835181101561181e57600084828151811061159357611592613338565b5b60200260200101519050600081146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790612ecd565b60405180910390fd5b60008483815181106115f5576115f4613338565b5b602002602001015190506000600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90612e4d565b60405180910390fd5b818103600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461171b9190613070565b9250508190555081600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156117c45781600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117b89190613120565b9250508190555061180a565b6000600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050508061181790613291565b9050611575565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611895929190612cf0565b60405180910390a46118ab338686868686611b94565b5050505050565b600083146118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90612ecd565b60405180910390fd5b6000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390612e4d565b60405180910390fd5b828103600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a119190613070565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611a8e929190612f28565b60405180910390a482600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b385782600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b2c9190613120565b92505081905550611b7e565b6000600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611b8c338787878787611d7b565b505050505050565b611bb38473ffffffffffffffffffffffffffffffffffffffff16611f62565b15611d73578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611bf9959493929190612be3565b602060405180830381600087803b158015611c1357600080fd5b505af1925050508015611c4457506040513d601f19601f82011682018060405250810190611c4191906127e0565b60015b611cea57611c50613396565b806308c379a01415611cad5750611c65613736565b80611c705750611caf565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca49190612d6b565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190612d8d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890612dad565b60405180910390fd5b505b505050505050565b611d9a8473ffffffffffffffffffffffffffffffffffffffff16611f62565b15611f5a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611de0959493929190612c4b565b602060405180830381600087803b158015611dfa57600080fd5b505af1925050508015611e2b57506040513d601f19601f82011682018060405250810190611e2891906127e0565b60015b611ed157611e37613396565b806308c379a01415611e945750611e4c613736565b80611e575750611e96565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b9190612d6b565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec890612d8d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90612dad565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054611f819061322e565b90600052602060002090601f016020900481019282611fa35760008555611fea565b82601f10611fbc57803560ff1916838001178555611fea565b82800160010185558215611fea579182015b82811115611fe9578235825591602001919060010190611fce565b5b509050611ff79190611ffb565b5090565b5b80821115612014576000816000905550600101611ffc565b5090565b600061202b61202684612f76565b612f51565b9050808382526020820190508285602086028201111561204e5761204d6133c2565b5b60005b8581101561207e5781612064888261213a565b845260208401935060208301925050600181019050612051565b5050509392505050565b600061209b61209684612fa2565b612f51565b905080838252602082019050828560208602820111156120be576120bd6133c2565b5b60005b858110156120ee57816120d48882612385565b8452602084019350602083019250506001810190506120c1565b5050509392505050565b600061210b61210684612fce565b612f51565b905082815260208101848484011115612127576121266133c7565b5b6121328482856131ec565b509392505050565b600081359050612149816137cc565b92915050565b60008135905061215e816137e3565b92915050565b60008083601f84011261217a576121796133bd565b5b8235905067ffffffffffffffff811115612197576121966133b8565b5b6020830191508360208202830111156121b3576121b26133c2565b5b9250929050565b600082601f8301126121cf576121ce6133bd565b5b81356121df848260208601612018565b91505092915050565b60008083601f8401126121fe576121fd6133bd565b5b8235905067ffffffffffffffff81111561221b5761221a6133b8565b5b602083019150836020820283011115612237576122366133c2565b5b9250929050565b60008083601f840112612254576122536133bd565b5b8235905067ffffffffffffffff811115612271576122706133b8565b5b60208301915083602082028301111561228d5761228c6133c2565b5b9250929050565b600082601f8301126122a9576122a86133bd565b5b81356122b9848260208601612088565b91505092915050565b6000813590506122d1816137fa565b92915050565b6000813590506122e681613811565b92915050565b6000815190506122fb81613811565b92915050565b600082601f830112612316576123156133bd565b5b81356123268482602086016120f8565b91505092915050565b60008083601f840112612345576123446133bd565b5b8235905067ffffffffffffffff811115612362576123616133b8565b5b60208301915083600182028301111561237e5761237d6133c2565b5b9250929050565b60008135905061239481613828565b92915050565b6000602082840312156123b0576123af6133d1565b5b60006123be8482850161213a565b91505092915050565b6000602082840312156123dd576123dc6133d1565b5b60006123eb8482850161214f565b91505092915050565b6000806040838503121561240b5761240a6133d1565b5b60006124198582860161214f565b925050602061242a85828601612385565b9150509250929050565b6000806040838503121561244b5761244a6133d1565b5b60006124598582860161213a565b925050602061246a8582860161213a565b9150509250929050565b600080600080600060a086880312156124905761248f6133d1565b5b600061249e8882890161213a565b95505060206124af8882890161213a565b945050604086013567ffffffffffffffff8111156124d0576124cf6133cc565b5b6124dc88828901612294565b935050606086013567ffffffffffffffff8111156124fd576124fc6133cc565b5b61250988828901612294565b925050608086013567ffffffffffffffff81111561252a576125296133cc565b5b61253688828901612301565b9150509295509295909350565b600080600080600060a0868803121561255f5761255e6133d1565b5b600061256d8882890161213a565b955050602061257e8882890161213a565b945050604061258f88828901612385565b93505060606125a088828901612385565b925050608086013567ffffffffffffffff8111156125c1576125c06133cc565b5b6125cd88828901612301565b9150509295509295909350565b600080604083850312156125f1576125f06133d1565b5b60006125ff8582860161213a565b9250506020612610858286016122c2565b9150509250929050565b60008060408385031215612631576126306133d1565b5b600061263f8582860161213a565b925050602061265085828601612385565b9150509250929050565b60008060008060008060608789031215612677576126766133d1565b5b600087013567ffffffffffffffff811115612695576126946133cc565b5b6126a189828a01612164565b9650965050602087013567ffffffffffffffff8111156126c4576126c36133cc565b5b6126d089828a0161223e565b9450945050604087013567ffffffffffffffff8111156126f3576126f26133cc565b5b6126ff89828a016121e8565b92509250509295509295509295565b60008060408385031215612725576127246133d1565b5b600083013567ffffffffffffffff811115612743576127426133cc565b5b61274f858286016121ba565b925050602083013567ffffffffffffffff8111156127705761276f6133cc565b5b61277c85828601612294565b9150509250929050565b60006020828403121561279c5761279b6133d1565b5b60006127aa848285016122c2565b91505092915050565b6000602082840312156127c9576127c86133d1565b5b60006127d7848285016122d7565b91505092915050565b6000602082840312156127f6576127f56133d1565b5b6000612804848285016122ec565b91505092915050565b60008060208385031215612824576128236133d1565b5b600083013567ffffffffffffffff811115612842576128416133cc565b5b61284e8582860161232f565b92509250509250929050565b6000602082840312156128705761286f6133d1565b5b600061287e84828501612385565b91505092915050565b6000806040838503121561289e5761289d6133d1565b5b60006128ac85828601612385565b92505060206128bd85828601612385565b9150509250929050565b60006128d38383612b8f565b60208301905092915050565b6128e881613166565b82525050565b6128f781613154565b82525050565b60006129088261300f565b612912818561303d565b935061291d83612fff565b8060005b8381101561294e57815161293588826128c7565b975061294083613030565b925050600181019050612921565b5085935050505092915050565b61296481613178565b82525050565b60006129758261301a565b61297f818561304e565b935061298f8185602086016131fb565b612998816133d6565b840191505092915050565b6129ac816131da565b82525050565b60006129bd82613025565b6129c7818561305f565b93506129d78185602086016131fb565b6129e0816133d6565b840191505092915050565b60006129f860348361305f565b9150612a03826133f4565b604082019050919050565b6000612a1b60288361305f565b9150612a2682613443565b604082019050919050565b6000612a3e602b8361305f565b9150612a4982613492565b604082019050919050565b6000612a6160298361305f565b9150612a6c826134e1565b604082019050919050565b6000612a84601f8361305f565b9150612a8f82613530565b602082019050919050565b6000612aa760328361305f565b9150612ab282613559565b604082019050919050565b6000612aca602a8361305f565b9150612ad5826135a8565b604082019050919050565b6000612aed601e8361305f565b9150612af8826135f7565b602082019050919050565b6000612b1060298361305f565b9150612b1b82613620565b604082019050919050565b6000612b3360298361305f565b9150612b3e8261366f565b604082019050919050565b6000612b56601a8361305f565b9150612b61826136be565b602082019050919050565b6000612b7960288361305f565b9150612b84826136e7565b604082019050919050565b612b98816131d0565b82525050565b612ba7816131d0565b82525050565b6000602082019050612bc260008301846128ee565b92915050565b6000602082019050612bdd60008301846128df565b92915050565b600060a082019050612bf860008301886128ee565b612c0560208301876128ee565b8181036040830152612c1781866128fd565b90508181036060830152612c2b81856128fd565b90508181036080830152612c3f818461296a565b90509695505050505050565b600060a082019050612c6060008301886128ee565b612c6d60208301876128ee565b612c7a6040830186612b9e565b612c876060830185612b9e565b8181036080830152612c99818461296a565b90509695505050505050565b6000604082019050612cba60008301856128ee565b612cc76020830184612b9e565b9392505050565b60006020820190508181036000830152612ce881846128fd565b905092915050565b60006040820190508181036000830152612d0a81856128fd565b90508181036020830152612d1e81846128fd565b90509392505050565b6000602082019050612d3c600083018461295b565b92915050565b6000604082019050612d5760008301856129a3565b612d646020830184612b9e565b9392505050565b60006020820190508181036000830152612d8581846129b2565b905092915050565b60006020820190508181036000830152612da6816129eb565b9050919050565b60006020820190508181036000830152612dc681612a0e565b9050919050565b60006020820190508181036000830152612de681612a31565b9050919050565b60006020820190508181036000830152612e0681612a54565b9050919050565b60006020820190508181036000830152612e2681612a77565b9050919050565b60006020820190508181036000830152612e4681612a9a565b9050919050565b60006020820190508181036000830152612e6681612abd565b9050919050565b60006020820190508181036000830152612e8681612ae0565b9050919050565b60006020820190508181036000830152612ea681612b03565b9050919050565b60006020820190508181036000830152612ec681612b26565b9050919050565b60006020820190508181036000830152612ee681612b49565b9050919050565b60006020820190508181036000830152612f0681612b6c565b9050919050565b6000602082019050612f226000830184612b9e565b92915050565b6000604082019050612f3d6000830185612b9e565b612f4a6020830184612b9e565b9392505050565b6000612f5b612f6c565b9050612f678282613260565b919050565b6000604051905090565b600067ffffffffffffffff821115612f9157612f90613367565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612fbd57612fbc613367565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612fe957612fe8613367565b5b612ff2826133d6565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061307b826131d0565b9150613086836131d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130bb576130ba6132da565b5b828201905092915050565b60006130d1826131d0565b91506130dc836131d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613115576131146132da565b5b828202905092915050565b600061312b826131d0565b9150613136836131d0565b925082821015613149576131486132da565b5b828203905092915050565b600061315f826131b0565b9050919050565b6000613171826131b0565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006131e5826131d0565b9050919050565b82818337600083830152505050565b60005b838110156132195780820151818401526020810190506131fe565b83811115613228576000848401525b50505050565b6000600282049050600182168061324657607f821691505b6020821081141561325a57613259613309565b5b50919050565b613269826133d6565b810181811067ffffffffffffffff8211171561328857613287613367565b5b80604052505050565b600061329c826131d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132cf576132ce6132da565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156133b55760046000803e6133b26000516133e7565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f4d696e7420506173733a20496e73756666696369656e742062616c616e636500600082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4d696e7420506173733a20496e73756666696369656e7420746f6b656e730000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f4d696e7420506173733a20556e617661696c61626c65204e4654000000000000600082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015613746576137c9565b61374e612f6c565b60043d036004823e80513d602482011167ffffffffffffffff821117156137765750506137c9565b808201805167ffffffffffffffff81111561379457505050506137c9565b80602083010160043d0385018111156137b15750505050506137c9565b6137c082602001850186613260565b82955050505050505b90565b6137d581613154565b81146137e057600080fd5b50565b6137ec81613166565b81146137f757600080fd5b50565b61380381613178565b811461380e57600080fd5b50565b61381a81613184565b811461382557600080fd5b50565b613831816131d0565b811461383c57600080fd5b5056fea26469706673582212204676de41a7296f1ca947939d4af397979a6ef06457b9cad8e255ba578661902164736f6c6343000807003368747470733a2f2f74686572656461706566616d696c792e636f6d2f6d696e74506173732e6a736f6e000000000000000000000000a803144e27aef2ac95e7ab49214bd2f802c883dd

Deployed Bytecode

0x6080604052600436106101175760003560e01c8063840a1128116100a0578063b2c61e9511610064578063b2c61e95146103b7578063c16e76b2146103e0578063d3419bf314610409578063e985e9c514610435578063f242432a146104725761011e565b8063840a1128146102e85780638da5cb5b146103115780639b642de11461033c578063a22cb46514610365578063a3fbbaae1461038e5761011e565b8063279093a5116100e7578063279093a5146102145780632eb2c2d61461023d57806340c10f19146102665780634e1273f4146102825780635a950e3e146102bf5761011e565b8062fdd58e1461012057806301ffc9a71461015d5780630e89341c1461019a57806310a3336c146101d75761011e565b3661011e57005b005b34801561012c57600080fd5b506101476004803603810190610142919061261a565b61049b565b6040516101549190612f0d565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906127b3565b610567565b6040516101919190612d27565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc919061285a565b610649565b6040516101ce9190612d6b565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061239a565b6106dd565b60405161020b9190612f0d565b60405180910390f35b34801561022057600080fd5b5061023b600480360381019061023691906123f4565b610726565b005b34801561024957600080fd5b50610264600480360381019061025f9190612474565b6107cb565b005b610280600480360381019061027b919061261a565b61085e565b005b34801561028e57600080fd5b506102a960048036038101906102a4919061270e565b610b66565b6040516102b69190612cce565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190612887565b610c7f565b005b3480156102f457600080fd5b5061030f600480360381019061030a91906123c7565b610ceb565b005b34801561031d57600080fd5b50610326610dd3565b6040516103339190612bad565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e919061280d565b610dfd565b005b34801561037157600080fd5b5061038c600480360381019061038791906125da565b610e6d565b005b34801561039a57600080fd5b506103b560048036038101906103b0919061239a565b610fd9565b005b3480156103c357600080fd5b506103de60048036038101906103d9919061265a565b611077565b005b3480156103ec57600080fd5b50610407600480360381019061040291906123c7565b6112a4565b005b34801561041557600080fd5b5061041e61138c565b60405161042c929190612f28565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190612434565b61139d565b6040516104699190612d27565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612543565b611431565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561050c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050390612dcd565b60405180910390fd5b600082141561055c57600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610561565b600090505b92915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061063257507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106425750610641826114c4565b5b9050919050565b6060600780546106589061322e565b80601f01602080910402602001604051908101604052809291908181526020018280546106849061322e565b80156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b50505050509050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078057600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156107c6573d6000803e3d6000fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061080b575061080a853361139d565b5b61084a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084190612e2d565b60405180910390fd5b610857858585858561152e565b5050505050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d790612e6d565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811115610930578190505b6000818361093e9190613120565b90506003548161094e91906130c6565b6002548361095c91906130c6565b6109669190613070565b34146109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099e90612e0d565b60405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109f69190613120565b9250508190555082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a4c9190613120565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62600087604051610acb929190612d42565b60405180910390a460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e58306f985856040518363ffffffff1660e01b8152600401610b2e929190612ca5565b600060405180830381600087803b158015610b4857600080fd5b505af1158015610b5c573d6000803e3d6000fd5b5050505050505050565b60608151835114610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390612ead565b60405180910390fd5b6000835167ffffffffffffffff811115610bc957610bc8613367565b5b604051908082528060200260200182016040528015610bf75781602001602082028036833780820191505090505b50905060005b8451811015610c7457610c44858281518110610c1c57610c1b613338565b5b6020026020010151858381518110610c3757610c36613338565b5b602002602001015161049b565b828281518110610c5757610c56613338565b5b60200260200101818152505080610c6d90613291565b9050610bfd565b508091505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd957600080fd5b81600281905550806003819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d4557600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663840a1128826040518263ffffffff1660e01b8152600401610d9e9190612bc8565b600060405180830381600087803b158015610db857600080fd5b505af1158015610dcc573d6000803e3d6000fd5b5050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5757600080fd5b818160079190610e68929190611f75565b505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed390612e8d565b60405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610fcd9190612d27565b60405180910390a35050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103357600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d157600080fd5b600080600088889050905060005b81811015611298578989828181106110fa576110f9613338565b5b905060200201602081019061110f919061239a565b935087878281811061112457611123613338565b5b90506020020135925082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461117c9190613070565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626000876040516111fb929190612d42565b60405180910390a485858281811061121657611215613338565b5b905060200201602081019061122b9190612786565b156112875782600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461127f9190613070565b925050819055505b8061129190613291565b90506110df565b50505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fe57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c16e76b2826040518263ffffffff1660e01b81526004016113579190612bc8565b600060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b5050505050565b600080600254915060035490509091565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806114715750611470853361139d565b5b6114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790612ded565b60405180910390fd5b6114bd85858585856118b2565b5050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8151835114611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612eed565b60405180910390fd5b60005b835181101561181e57600084828151811061159357611592613338565b5b60200260200101519050600081146115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d790612ecd565b60405180910390fd5b60008483815181106115f5576115f4613338565b5b602002602001015190506000600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90612e4d565b60405180910390fd5b818103600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461171b9190613070565b9250508190555081600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156117c45781600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117b89190613120565b9250508190555061180a565b6000600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050508061181790613291565b9050611575565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611895929190612cf0565b60405180910390a46118ab338686868686611b94565b5050505050565b600083146118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90612ecd565b60405180910390fd5b6000600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390612e4d565b60405180910390fd5b828103600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a119190613070565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611a8e929190612f28565b60405180910390a482600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611b385782600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b2c9190613120565b92505081905550611b7e565b6000600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611b8c338787878787611d7b565b505050505050565b611bb38473ffffffffffffffffffffffffffffffffffffffff16611f62565b15611d73578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611bf9959493929190612be3565b602060405180830381600087803b158015611c1357600080fd5b505af1925050508015611c4457506040513d601f19601f82011682018060405250810190611c4191906127e0565b60015b611cea57611c50613396565b806308c379a01415611cad5750611c65613736565b80611c705750611caf565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca49190612d6b565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190612d8d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890612dad565b60405180910390fd5b505b505050505050565b611d9a8473ffffffffffffffffffffffffffffffffffffffff16611f62565b15611f5a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611de0959493929190612c4b565b602060405180830381600087803b158015611dfa57600080fd5b505af1925050508015611e2b57506040513d601f19601f82011682018060405250810190611e2891906127e0565b60015b611ed157611e37613396565b806308c379a01415611e945750611e4c613736565b80611e575750611e96565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b9190612d6b565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec890612d8d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f90612dad565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054611f819061322e565b90600052602060002090601f016020900481019282611fa35760008555611fea565b82601f10611fbc57803560ff1916838001178555611fea565b82800160010185558215611fea579182015b82811115611fe9578235825591602001919060010190611fce565b5b509050611ff79190611ffb565b5090565b5b80821115612014576000816000905550600101611ffc565b5090565b600061202b61202684612f76565b612f51565b9050808382526020820190508285602086028201111561204e5761204d6133c2565b5b60005b8581101561207e5781612064888261213a565b845260208401935060208301925050600181019050612051565b5050509392505050565b600061209b61209684612fa2565b612f51565b905080838252602082019050828560208602820111156120be576120bd6133c2565b5b60005b858110156120ee57816120d48882612385565b8452602084019350602083019250506001810190506120c1565b5050509392505050565b600061210b61210684612fce565b612f51565b905082815260208101848484011115612127576121266133c7565b5b6121328482856131ec565b509392505050565b600081359050612149816137cc565b92915050565b60008135905061215e816137e3565b92915050565b60008083601f84011261217a576121796133bd565b5b8235905067ffffffffffffffff811115612197576121966133b8565b5b6020830191508360208202830111156121b3576121b26133c2565b5b9250929050565b600082601f8301126121cf576121ce6133bd565b5b81356121df848260208601612018565b91505092915050565b60008083601f8401126121fe576121fd6133bd565b5b8235905067ffffffffffffffff81111561221b5761221a6133b8565b5b602083019150836020820283011115612237576122366133c2565b5b9250929050565b60008083601f840112612254576122536133bd565b5b8235905067ffffffffffffffff811115612271576122706133b8565b5b60208301915083602082028301111561228d5761228c6133c2565b5b9250929050565b600082601f8301126122a9576122a86133bd565b5b81356122b9848260208601612088565b91505092915050565b6000813590506122d1816137fa565b92915050565b6000813590506122e681613811565b92915050565b6000815190506122fb81613811565b92915050565b600082601f830112612316576123156133bd565b5b81356123268482602086016120f8565b91505092915050565b60008083601f840112612345576123446133bd565b5b8235905067ffffffffffffffff811115612362576123616133b8565b5b60208301915083600182028301111561237e5761237d6133c2565b5b9250929050565b60008135905061239481613828565b92915050565b6000602082840312156123b0576123af6133d1565b5b60006123be8482850161213a565b91505092915050565b6000602082840312156123dd576123dc6133d1565b5b60006123eb8482850161214f565b91505092915050565b6000806040838503121561240b5761240a6133d1565b5b60006124198582860161214f565b925050602061242a85828601612385565b9150509250929050565b6000806040838503121561244b5761244a6133d1565b5b60006124598582860161213a565b925050602061246a8582860161213a565b9150509250929050565b600080600080600060a086880312156124905761248f6133d1565b5b600061249e8882890161213a565b95505060206124af8882890161213a565b945050604086013567ffffffffffffffff8111156124d0576124cf6133cc565b5b6124dc88828901612294565b935050606086013567ffffffffffffffff8111156124fd576124fc6133cc565b5b61250988828901612294565b925050608086013567ffffffffffffffff81111561252a576125296133cc565b5b61253688828901612301565b9150509295509295909350565b600080600080600060a0868803121561255f5761255e6133d1565b5b600061256d8882890161213a565b955050602061257e8882890161213a565b945050604061258f88828901612385565b93505060606125a088828901612385565b925050608086013567ffffffffffffffff8111156125c1576125c06133cc565b5b6125cd88828901612301565b9150509295509295909350565b600080604083850312156125f1576125f06133d1565b5b60006125ff8582860161213a565b9250506020612610858286016122c2565b9150509250929050565b60008060408385031215612631576126306133d1565b5b600061263f8582860161213a565b925050602061265085828601612385565b9150509250929050565b60008060008060008060608789031215612677576126766133d1565b5b600087013567ffffffffffffffff811115612695576126946133cc565b5b6126a189828a01612164565b9650965050602087013567ffffffffffffffff8111156126c4576126c36133cc565b5b6126d089828a0161223e565b9450945050604087013567ffffffffffffffff8111156126f3576126f26133cc565b5b6126ff89828a016121e8565b92509250509295509295509295565b60008060408385031215612725576127246133d1565b5b600083013567ffffffffffffffff811115612743576127426133cc565b5b61274f858286016121ba565b925050602083013567ffffffffffffffff8111156127705761276f6133cc565b5b61277c85828601612294565b9150509250929050565b60006020828403121561279c5761279b6133d1565b5b60006127aa848285016122c2565b91505092915050565b6000602082840312156127c9576127c86133d1565b5b60006127d7848285016122d7565b91505092915050565b6000602082840312156127f6576127f56133d1565b5b6000612804848285016122ec565b91505092915050565b60008060208385031215612824576128236133d1565b5b600083013567ffffffffffffffff811115612842576128416133cc565b5b61284e8582860161232f565b92509250509250929050565b6000602082840312156128705761286f6133d1565b5b600061287e84828501612385565b91505092915050565b6000806040838503121561289e5761289d6133d1565b5b60006128ac85828601612385565b92505060206128bd85828601612385565b9150509250929050565b60006128d38383612b8f565b60208301905092915050565b6128e881613166565b82525050565b6128f781613154565b82525050565b60006129088261300f565b612912818561303d565b935061291d83612fff565b8060005b8381101561294e57815161293588826128c7565b975061294083613030565b925050600181019050612921565b5085935050505092915050565b61296481613178565b82525050565b60006129758261301a565b61297f818561304e565b935061298f8185602086016131fb565b612998816133d6565b840191505092915050565b6129ac816131da565b82525050565b60006129bd82613025565b6129c7818561305f565b93506129d78185602086016131fb565b6129e0816133d6565b840191505092915050565b60006129f860348361305f565b9150612a03826133f4565b604082019050919050565b6000612a1b60288361305f565b9150612a2682613443565b604082019050919050565b6000612a3e602b8361305f565b9150612a4982613492565b604082019050919050565b6000612a6160298361305f565b9150612a6c826134e1565b604082019050919050565b6000612a84601f8361305f565b9150612a8f82613530565b602082019050919050565b6000612aa760328361305f565b9150612ab282613559565b604082019050919050565b6000612aca602a8361305f565b9150612ad5826135a8565b604082019050919050565b6000612aed601e8361305f565b9150612af8826135f7565b602082019050919050565b6000612b1060298361305f565b9150612b1b82613620565b604082019050919050565b6000612b3360298361305f565b9150612b3e8261366f565b604082019050919050565b6000612b56601a8361305f565b9150612b61826136be565b602082019050919050565b6000612b7960288361305f565b9150612b84826136e7565b604082019050919050565b612b98816131d0565b82525050565b612ba7816131d0565b82525050565b6000602082019050612bc260008301846128ee565b92915050565b6000602082019050612bdd60008301846128df565b92915050565b600060a082019050612bf860008301886128ee565b612c0560208301876128ee565b8181036040830152612c1781866128fd565b90508181036060830152612c2b81856128fd565b90508181036080830152612c3f818461296a565b90509695505050505050565b600060a082019050612c6060008301886128ee565b612c6d60208301876128ee565b612c7a6040830186612b9e565b612c876060830185612b9e565b8181036080830152612c99818461296a565b90509695505050505050565b6000604082019050612cba60008301856128ee565b612cc76020830184612b9e565b9392505050565b60006020820190508181036000830152612ce881846128fd565b905092915050565b60006040820190508181036000830152612d0a81856128fd565b90508181036020830152612d1e81846128fd565b90509392505050565b6000602082019050612d3c600083018461295b565b92915050565b6000604082019050612d5760008301856129a3565b612d646020830184612b9e565b9392505050565b60006020820190508181036000830152612d8581846129b2565b905092915050565b60006020820190508181036000830152612da6816129eb565b9050919050565b60006020820190508181036000830152612dc681612a0e565b9050919050565b60006020820190508181036000830152612de681612a31565b9050919050565b60006020820190508181036000830152612e0681612a54565b9050919050565b60006020820190508181036000830152612e2681612a77565b9050919050565b60006020820190508181036000830152612e4681612a9a565b9050919050565b60006020820190508181036000830152612e6681612abd565b9050919050565b60006020820190508181036000830152612e8681612ae0565b9050919050565b60006020820190508181036000830152612ea681612b03565b9050919050565b60006020820190508181036000830152612ec681612b26565b9050919050565b60006020820190508181036000830152612ee681612b49565b9050919050565b60006020820190508181036000830152612f0681612b6c565b9050919050565b6000602082019050612f226000830184612b9e565b92915050565b6000604082019050612f3d6000830185612b9e565b612f4a6020830184612b9e565b9392505050565b6000612f5b612f6c565b9050612f678282613260565b919050565b6000604051905090565b600067ffffffffffffffff821115612f9157612f90613367565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612fbd57612fbc613367565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612fe957612fe8613367565b5b612ff2826133d6565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061307b826131d0565b9150613086836131d0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130bb576130ba6132da565b5b828201905092915050565b60006130d1826131d0565b91506130dc836131d0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613115576131146132da565b5b828202905092915050565b600061312b826131d0565b9150613136836131d0565b925082821015613149576131486132da565b5b828203905092915050565b600061315f826131b0565b9050919050565b6000613171826131b0565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006131e5826131d0565b9050919050565b82818337600083830152505050565b60005b838110156132195780820151818401526020810190506131fe565b83811115613228576000848401525b50505050565b6000600282049050600182168061324657607f821691505b6020821081141561325a57613259613309565b5b50919050565b613269826133d6565b810181811067ffffffffffffffff8211171561328857613287613367565b5b80604052505050565b600061329c826131d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132cf576132ce6132da565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156133b55760046000803e6133b26000516133e7565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f4d696e7420506173733a20496e73756666696369656e742062616c616e636500600082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4d696e7420506173733a20496e73756666696369656e7420746f6b656e730000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f4d696e7420506173733a20556e617661696c61626c65204e4654000000000000600082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015613746576137c9565b61374e612f6c565b60043d036004823e80513d602482011167ffffffffffffffff821117156137765750506137c9565b808201805167ffffffffffffffff81111561379457505050506137c9565b80602083010160043d0385018111156137b15750505050506137c9565b6137c082602001850186613260565b82955050505050505b90565b6137d581613154565b81146137e057600080fd5b50565b6137ec81613166565b81146137f757600080fd5b50565b61380381613178565b811461380e57600080fd5b50565b61381a81613184565b811461382557600080fd5b50565b613831816131d0565b811461383c57600080fd5b5056fea26469706673582212204676de41a7296f1ca947939d4af397979a6ef06457b9cad8e255ba578661902164736f6c63430008070033

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

000000000000000000000000a803144e27aef2ac95e7ab49214bd2f802c883dd

-----Decoded View---------------
Arg [0] : TRAFcontract (address): 0xa803144e27aEf2Ac95E7Ab49214BD2f802C883dD

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a803144e27aef2ac95e7ab49214bd2f802c883dd


Deployed Bytecode Sourcemap

17131:9913:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18302:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19156:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19042:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19646:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20870:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22454:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22848:675;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18562:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20543:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20245:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18207:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20742:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21804:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20109:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21033:587;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20396:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19762:158;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;19478:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22111:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18302:252;18380:7;18427:1;18408:21;;:7;:21;;;;18400:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18497:1;18491:2;:7;18488:40;;;18508:9;:18;18518:7;18508:18;;;;;;;;;;;;;;;;18501:25;;;;18488:40;18545:1;18538:8;;18302:252;;;;;:::o;19156:310::-;19258:4;19310:26;19295:41;;;:11;:41;;;;:110;;;;19368:37;19353:52;;;:11;:52;;;;19295:110;:163;;;;19422:36;19446:11;19422:23;:36::i;:::-;19295:163;19275:183;;19156:310;;;:::o;19042:102::-;19099:13;19132:4;19125:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19042:102;;;:::o;19646:108::-;19705:7;19732:5;:14;19738:7;19732:14;;;;;;;;;;;;;;;;19725:21;;19646:108;;;:::o;20870:151::-;20974:8;;;;;;;;;;;20960:22;;:10;:22;;;20951:32;;;;;;20994:2;:11;;:19;21006:6;20994:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20870:151;;:::o;22454:382::-;22639:10;22631:18;;:4;:18;;;:56;;;;22653:34;22670:4;22676:10;22653:16;:34::i;:::-;22631:56;22609:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;22776:52;22799:4;22805:2;22809:3;22814:7;22823:4;22776:22;:52::i;:::-;22454:382;;;;;:::o;22848:675::-;22941:9;:21;22951:10;22941:21;;;;;;;;;;;;;;;;22931:6;:31;;22923:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23010:18;23031:5;:17;23037:10;23031:17;;;;;;;;;;;;;;;;23010:38;;23075:6;23062:10;:19;23059:46;;;23097:6;23084:19;;23059:46;23117:20;23149:10;23140:6;:19;;;;:::i;:::-;23117:42;;23237:12;;23222;:27;;;;:::i;:::-;23207:10;;23194;:23;;;;:::i;:::-;23193:57;;;;:::i;:::-;23180:9;:70;23172:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;23328:10;23307:5;:17;23313:10;23307:17;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;23376:6;23351:9;:21;23361:10;23351:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;23455:1;23408:61;;23435:10;23408:61;;23423:10;23408:61;;;23459:1;23462:6;23408:61;;;;;;;:::i;:::-;;;;;;;;23482:4;;;;;;;;;;:14;;;23497:7;23506:6;23482:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22912:611;;22848:675;;:::o;18562:468::-;18667:16;18723:3;:10;18704:8;:15;:29;18696:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18792:30;18839:8;:15;18825:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18792:63;;18873:9;18868:122;18892:8;:15;18888:1;:19;18868:122;;;18948:30;18958:8;18967:1;18958:11;;;;;;;;:::i;:::-;;;;;;;;18971:3;18975:1;18971:6;;;;;;;;:::i;:::-;;;;;;;;18948:9;:30::i;:::-;18929:13;18943:1;18929:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;18909:3;;;;:::i;:::-;;;18868:122;;;;19009:13;19002:20;;;18562:468;;;;:::o;20543:191::-;20647:8;;;;;;;;;;;20633:22;;:10;:22;;;20625:31;;;;;;20680:9;20667:10;:22;;;;20715:11;20700:12;:26;;;;20543:191;;:::o;20245:139::-;20332:8;;;;;;;;;;;20318:22;;:10;:22;;;20310:31;;;;;;20352:4;;;;;;;;;;:17;;;20370:5;20352:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20245:139;:::o;18207:83::-;18247:7;18274:8;;;;;;;;;;;18267:15;;18207:83;:::o;20742:116::-;20821:8;;;;;;;;;;;20807:22;;:10;:22;;;20799:31;;;;;;20847:3;;20840:4;:10;;;;;;;:::i;:::-;;20742:116;;:::o;21804:299::-;21915:8;21901:22;;:10;:22;;;;21893:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22025:8;21982:18;:30;22001:10;21982:30;;;;;;;;;;;;;;;:40;22013:8;21982:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;22076:8;22049:46;;22064:10;22049:46;;;22086:8;22049:46;;;;;;:::i;:::-;;;;;;;;21804:299;;:::o;20109:128::-;20191:8;;;;;;;;;;;20177:22;;:10;:22;;;20169:31;;;;;;20222:7;20211:8;;:18;;;;;;;;;;;;;;;;;;20109:128;:::o;21033:587::-;21174:8;;;;;;;;;;;21160:22;;:10;:22;;;21152:31;;;;;;21196:12;21219:14;21246;21263:5;;:12;;21246:29;;21290:9;21286:317;21305:6;21301:1;:10;21286:317;;;21340:5;;21346:1;21340:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21333:15;;21372:7;;21380:1;21372:10;;;;;;;:::i;:::-;;;;;;;;21363:19;;21431:6;21412:9;:15;21422:4;21412:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;21510:4;21471:55;;21506:1;21471:55;;21486:10;21471:55;;;21516:1;21519:6;21471:55;;;;;;;:::i;:::-;;;;;;;;21558:5;;21564:1;21558:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21555:37;;;21584:6;21569:5;:11;21575:4;21569:11;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;21555:37;21313:3;;;;:::i;:::-;;;21286:317;;;;21141:479;;;21033:587;;;;;;:::o;20396:139::-;20483:8;;;;;;;;;;;20469:22;;:10;:22;;;20461:31;;;;;;20503:4;;;;;;;;;;:17;;;20521:5;20503:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20396:139;:::o;19762:158::-;19802:17;19821:19;19865:10;;19853:22;;19900:12;;19886:26;;19762:158;;:::o;19478:160::-;19569:4;19593:18;:27;19612:7;19593:27;;;;;;;;;;;;;;;:37;19621:8;19593:37;;;;;;;;;;;;;;;;;;;;;;;;;19586:44;;19478:160;;;;:::o;22111:335::-;22265:10;22257:18;;:4;:18;;;:56;;;;22279:34;22296:4;22302:10;22279:16;:34::i;:::-;22257:56;22235:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;22393:45;22411:4;22417:2;22421;22425:6;22433:4;22393:17;:45::i;:::-;22111:335;;;;;:::o;7081:157::-;7166:4;7205:25;7190:40;;;:11;:40;;;;7183:47;;7081:157;;;:::o;24394:979::-;24565:7;:14;24551:3;:10;:28;24543:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;24642:9;24637:572;24661:3;:10;24657:1;:14;24637:572;;;24693:10;24706:3;24710:1;24706:6;;;;;;;;:::i;:::-;;;;;;;;24693:19;;24741:1;24735:2;:7;24727:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;24788:14;24805:7;24813:1;24805:10;;;;;;;;:::i;:::-;;;;;;;;24788:27;;24832:19;24854:9;:15;24864:4;24854:15;;;;;;;;;;;;;;;;24832:37;;24907:6;24892:11;:21;;24884:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25036:6;25022:11;:20;25004:9;:15;25014:4;25004:15;;;;;;;;;;;;;;;:38;;;;25089:6;25072:9;:13;25082:2;25072:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;25129:6;25115:5;:11;25121:4;25115:11;;;;;;;;;;;;;;;;:20;25112:86;;;25153:6;25138:5;:11;25144:4;25138:11;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;25112:86;;;25195:1;25181:5;:11;25187:4;25181:11;;;;;;;;;;;;;;;:15;;;;25112:86;24678:531;;;24673:3;;;;:::i;:::-;;;24637:572;;;;25258:2;25226:49;;25252:4;25226:49;;25240:10;25226:49;;;25262:3;25267:7;25226:49;;;;;;;:::i;:::-;;;;;;;;25288:77;25324:10;25336:4;25342:2;25346:3;25351:7;25360:4;25288:35;:77::i;:::-;24394:979;;;;;:::o;23711:675::-;23849:1;23843:2;:7;23835:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;23892:19;23914:9;:15;23924:4;23914:15;;;;;;;;;;;;;;;;23892:37;;23963:6;23948:11;:21;;23940:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24084:6;24070:11;:20;24052:9;:15;24062:4;24052:15;;;;;;;;;;;;;;;:38;;;;24129:6;24112:9;:13;24122:2;24112:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;24186:2;24153:48;;24180:4;24153:48;;24168:10;24153:48;;;24190:2;24194:6;24153:48;;;;;;;:::i;:::-;;;;;;;;24231:6;24217:5;:11;24223:4;24217:11;;;;;;;;;;;;;;;;:20;24214:82;;;24255:6;24240:5;:11;24246:4;24240:11;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;24214:82;;;24293:1;24279:5;:11;24285:4;24279:11;;;;;;;;;;;;;;;:15;;;;24214:82;24308:70;24339:10;24351:4;24357:2;24361;24365:6;24373:4;24308:30;:70::i;:::-;23824:562;23711:675;;;;;:::o;26079:756::-;26258:15;:2;:13;;;:15::i;:::-;26254:574;;;26311:2;26294:43;;;26338:8;26348:4;26354:3;26359:7;26368:4;26294:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26290:527;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;26690:6;26683:14;;;;;;;;;;;:::i;:::-;;;;;;;;26290:527;;;26739:62;;;;;;;;;;:::i;:::-;;;;;;;;26290:527;26467:52;;;26455:64;;;:8;:64;;;;26451:163;;26544:50;;;;;;;;;;:::i;:::-;;;;;;;;26451:163;26374:255;26254:574;26079:756;;;;;;:::o;25384:687::-;25538:15;:2;:13;;;:15::i;:::-;25534:530;;;25591:2;25574:38;;;25613:8;25623:4;25629:2;25633:6;25641:4;25574:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;25570:483;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;25926:6;25919:14;;;;;;;;;;;:::i;:::-;;;;;;;;25570:483;;;25975:62;;;;;;;;;;:::i;:::-;;;;;;;;25570:483;25708:47;;;25696:59;;;:8;:59;;;;25692:158;;25780:50;;;;;;;;;;:::i;:::-;;;;;;;;25692:158;25647:218;25534:530;25384:687;;;;;;:::o;7855:387::-;7915:4;8123:12;8190:7;8178:20;8170:28;;8233:1;8226:4;:8;8219:15;;;7855:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1913:139;;;;:::o;2058:155::-;2112:5;2150:6;2137:20;2128:29;;2166:41;2201:5;2166:41;:::i;:::-;2058:155;;;;:::o;2236:568::-;2309:8;2319:6;2369:3;2362:4;2354:6;2350:17;2346:27;2336:122;;2377:79;;:::i;:::-;2336:122;2490:6;2477:20;2467:30;;2520:18;2512:6;2509:30;2506:117;;;2542:79;;:::i;:::-;2506:117;2656:4;2648:6;2644:17;2632:29;;2710:3;2702:4;2694:6;2690:17;2680:8;2676:32;2673:41;2670:128;;;2717:79;;:::i;:::-;2670:128;2236:568;;;;;:::o;2827:370::-;2898:5;2947:3;2940:4;2932:6;2928:17;2924:27;2914:122;;2955:79;;:::i;:::-;2914:122;3072:6;3059:20;3097:94;3187:3;3179:6;3172:4;3164:6;3160:17;3097:94;:::i;:::-;3088:103;;2904:293;2827:370;;;;:::o;3217:565::-;3287:8;3297:6;3347:3;3340:4;3332:6;3328:17;3324:27;3314:122;;3355:79;;:::i;:::-;3314:122;3468:6;3455:20;3445:30;;3498:18;3490:6;3487:30;3484:117;;;3520:79;;:::i;:::-;3484:117;3634:4;3626:6;3622:17;3610:29;;3688:3;3680:4;3672:6;3668:17;3658:8;3654:32;3651:41;3648:128;;;3695:79;;:::i;:::-;3648:128;3217:565;;;;;:::o;3805:568::-;3878:8;3888:6;3938:3;3931:4;3923:6;3919:17;3915:27;3905:122;;3946:79;;:::i;:::-;3905:122;4059:6;4046:20;4036:30;;4089:18;4081:6;4078:30;4075:117;;;4111:79;;:::i;:::-;4075:117;4225:4;4217:6;4213:17;4201:29;;4279:3;4271:4;4263:6;4259:17;4249:8;4245:32;4242:41;4239:128;;;4286:79;;:::i;:::-;4239:128;3805:568;;;;;:::o;4396:370::-;4467:5;4516:3;4509:4;4501:6;4497:17;4493:27;4483:122;;4524:79;;:::i;:::-;4483:122;4641:6;4628:20;4666:94;4756:3;4748:6;4741:4;4733:6;4729:17;4666:94;:::i;:::-;4657:103;;4473:293;4396:370;;;;:::o;4772:133::-;4815:5;4853:6;4840:20;4831:29;;4869:30;4893:5;4869:30;:::i;:::-;4772:133;;;;:::o;4911:137::-;4956:5;4994:6;4981:20;4972:29;;5010:32;5036:5;5010:32;:::i;:::-;4911:137;;;;:::o;5054:141::-;5110:5;5141:6;5135:13;5126:22;;5157:32;5183:5;5157:32;:::i;:::-;5054:141;;;;:::o;5214:338::-;5269:5;5318:3;5311:4;5303:6;5299:17;5295:27;5285:122;;5326:79;;:::i;:::-;5285:122;5443:6;5430:20;5468:78;5542:3;5534:6;5527:4;5519:6;5515:17;5468:78;:::i;:::-;5459:87;;5275:277;5214:338;;;;:::o;5572:553::-;5630:8;5640:6;5690:3;5683:4;5675:6;5671:17;5667:27;5657:122;;5698:79;;:::i;:::-;5657:122;5811:6;5798:20;5788:30;;5841:18;5833:6;5830:30;5827:117;;;5863:79;;:::i;:::-;5827:117;5977:4;5969:6;5965:17;5953:29;;6031:3;6023:4;6015:6;6011:17;6001:8;5997:32;5994:41;5991:128;;;6038:79;;:::i;:::-;5991:128;5572:553;;;;;:::o;6131:139::-;6177:5;6215:6;6202:20;6193:29;;6231:33;6258:5;6231:33;:::i;:::-;6131:139;;;;:::o;6276:329::-;6335:6;6384:2;6372:9;6363:7;6359:23;6355:32;6352:119;;;6390:79;;:::i;:::-;6352:119;6510:1;6535:53;6580:7;6571:6;6560:9;6556:22;6535:53;:::i;:::-;6525:63;;6481:117;6276:329;;;;:::o;6611:345::-;6678:6;6727:2;6715:9;6706:7;6702:23;6698:32;6695:119;;;6733:79;;:::i;:::-;6695:119;6853:1;6878:61;6931:7;6922:6;6911:9;6907:22;6878:61;:::i;:::-;6868:71;;6824:125;6611:345;;;;:::o;6962:490::-;7038:6;7046;7095:2;7083:9;7074:7;7070:23;7066:32;7063:119;;;7101:79;;:::i;:::-;7063:119;7221:1;7246:61;7299:7;7290:6;7279:9;7275:22;7246:61;:::i;:::-;7236:71;;7192:125;7356:2;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7327:118;6962:490;;;;;:::o;7458:474::-;7526:6;7534;7583:2;7571:9;7562:7;7558:23;7554:32;7551:119;;;7589:79;;:::i;:::-;7551:119;7709:1;7734:53;7779:7;7770:6;7759:9;7755:22;7734:53;:::i;:::-;7724:63;;7680:117;7836:2;7862:53;7907:7;7898:6;7887:9;7883:22;7862:53;:::i;:::-;7852:63;;7807:118;7458:474;;;;;:::o;7938:1509::-;8092:6;8100;8108;8116;8124;8173:3;8161:9;8152:7;8148:23;8144:33;8141:120;;;8180:79;;:::i;:::-;8141:120;8300:1;8325:53;8370:7;8361:6;8350:9;8346:22;8325:53;:::i;:::-;8315:63;;8271:117;8427:2;8453:53;8498:7;8489:6;8478:9;8474:22;8453:53;:::i;:::-;8443:63;;8398:118;8583:2;8572:9;8568:18;8555:32;8614:18;8606:6;8603:30;8600:117;;;8636:79;;:::i;:::-;8600:117;8741:78;8811:7;8802:6;8791:9;8787:22;8741:78;:::i;:::-;8731:88;;8526:303;8896:2;8885:9;8881:18;8868:32;8927:18;8919:6;8916:30;8913:117;;;8949:79;;:::i;:::-;8913:117;9054:78;9124:7;9115:6;9104:9;9100:22;9054:78;:::i;:::-;9044:88;;8839:303;9209:3;9198:9;9194:19;9181:33;9241:18;9233:6;9230:30;9227:117;;;9263:79;;:::i;:::-;9227:117;9368:62;9422:7;9413:6;9402:9;9398:22;9368:62;:::i;:::-;9358:72;;9152:288;7938:1509;;;;;;;;:::o;9453:1089::-;9557:6;9565;9573;9581;9589;9638:3;9626:9;9617:7;9613:23;9609:33;9606:120;;;9645:79;;:::i;:::-;9606:120;9765:1;9790:53;9835:7;9826:6;9815:9;9811:22;9790:53;:::i;:::-;9780:63;;9736:117;9892:2;9918:53;9963:7;9954:6;9943:9;9939:22;9918:53;:::i;:::-;9908:63;;9863:118;10020:2;10046:53;10091:7;10082:6;10071:9;10067:22;10046:53;:::i;:::-;10036:63;;9991:118;10148:2;10174:53;10219:7;10210:6;10199:9;10195:22;10174:53;:::i;:::-;10164:63;;10119:118;10304:3;10293:9;10289:19;10276:33;10336:18;10328:6;10325:30;10322:117;;;10358:79;;:::i;:::-;10322:117;10463:62;10517:7;10508:6;10497:9;10493:22;10463:62;:::i;:::-;10453:72;;10247:288;9453:1089;;;;;;;;:::o;10548:468::-;10613:6;10621;10670:2;10658:9;10649:7;10645:23;10641:32;10638:119;;;10676:79;;:::i;:::-;10638:119;10796:1;10821:53;10866:7;10857:6;10846:9;10842:22;10821:53;:::i;:::-;10811:63;;10767:117;10923:2;10949:50;10991:7;10982:6;10971:9;10967:22;10949:50;:::i;:::-;10939:60;;10894:115;10548:468;;;;;:::o;11022:474::-;11090:6;11098;11147:2;11135:9;11126:7;11122:23;11118:32;11115:119;;;11153:79;;:::i;:::-;11115:119;11273:1;11298:53;11343:7;11334:6;11323:9;11319:22;11298:53;:::i;:::-;11288:63;;11244:117;11400:2;11426:53;11471:7;11462:6;11451:9;11447:22;11426:53;:::i;:::-;11416:63;;11371:118;11022:474;;;;;:::o;11502:1303::-;11657:6;11665;11673;11681;11689;11697;11746:2;11734:9;11725:7;11721:23;11717:32;11714:119;;;11752:79;;:::i;:::-;11714:119;11900:1;11889:9;11885:17;11872:31;11930:18;11922:6;11919:30;11916:117;;;11952:79;;:::i;:::-;11916:117;12065:80;12137:7;12128:6;12117:9;12113:22;12065:80;:::i;:::-;12047:98;;;;11843:312;12222:2;12211:9;12207:18;12194:32;12253:18;12245:6;12242:30;12239:117;;;12275:79;;:::i;:::-;12239:117;12388:80;12460:7;12451:6;12440:9;12436:22;12388:80;:::i;:::-;12370:98;;;;12165:313;12545:2;12534:9;12530:18;12517:32;12576:18;12568:6;12565:30;12562:117;;;12598:79;;:::i;:::-;12562:117;12711:77;12780:7;12771:6;12760:9;12756:22;12711:77;:::i;:::-;12693:95;;;;12488:310;11502:1303;;;;;;;;:::o;12811:894::-;12929:6;12937;12986:2;12974:9;12965:7;12961:23;12957:32;12954:119;;;12992:79;;:::i;:::-;12954:119;13140:1;13129:9;13125:17;13112:31;13170:18;13162:6;13159:30;13156:117;;;13192:79;;:::i;:::-;13156:117;13297:78;13367:7;13358:6;13347:9;13343:22;13297:78;:::i;:::-;13287:88;;13083:302;13452:2;13441:9;13437:18;13424:32;13483:18;13475:6;13472:30;13469:117;;;13505:79;;:::i;:::-;13469:117;13610:78;13680:7;13671:6;13660:9;13656:22;13610:78;:::i;:::-;13600:88;;13395:303;12811:894;;;;;:::o;13711:323::-;13767:6;13816:2;13804:9;13795:7;13791:23;13787:32;13784:119;;;13822:79;;:::i;:::-;13784:119;13942:1;13967:50;14009:7;14000:6;13989:9;13985:22;13967:50;:::i;:::-;13957:60;;13913:114;13711:323;;;;:::o;14040:327::-;14098:6;14147:2;14135:9;14126:7;14122:23;14118:32;14115:119;;;14153:79;;:::i;:::-;14115:119;14273:1;14298:52;14342:7;14333:6;14322:9;14318:22;14298:52;:::i;:::-;14288:62;;14244:116;14040:327;;;;:::o;14373:349::-;14442:6;14491:2;14479:9;14470:7;14466:23;14462:32;14459:119;;;14497:79;;:::i;:::-;14459:119;14617:1;14642:63;14697:7;14688:6;14677:9;14673:22;14642:63;:::i;:::-;14632:73;;14588:127;14373:349;;;;:::o;14728:529::-;14799:6;14807;14856:2;14844:9;14835:7;14831:23;14827:32;14824:119;;;14862:79;;:::i;:::-;14824:119;15010:1;14999:9;14995:17;14982:31;15040:18;15032:6;15029:30;15026:117;;;15062:79;;:::i;:::-;15026:117;15175:65;15232:7;15223:6;15212:9;15208:22;15175:65;:::i;:::-;15157:83;;;;14953:297;14728:529;;;;;:::o;15263:329::-;15322:6;15371:2;15359:9;15350:7;15346:23;15342:32;15339:119;;;15377:79;;:::i;:::-;15339:119;15497:1;15522:53;15567:7;15558:6;15547:9;15543:22;15522:53;:::i;:::-;15512:63;;15468:117;15263:329;;;;:::o;15598:474::-;15666:6;15674;15723:2;15711:9;15702:7;15698:23;15694:32;15691:119;;;15729:79;;:::i;:::-;15691:119;15849:1;15874:53;15919:7;15910:6;15899:9;15895:22;15874:53;:::i;:::-;15864:63;;15820:117;15976:2;16002:53;16047:7;16038:6;16027:9;16023:22;16002:53;:::i;:::-;15992:63;;15947:118;15598:474;;;;;:::o;16078:179::-;16147:10;16168:46;16210:3;16202:6;16168:46;:::i;:::-;16246:4;16241:3;16237:14;16223:28;;16078:179;;;;:::o;16263:142::-;16366:32;16392:5;16366:32;:::i;:::-;16361:3;16354:45;16263:142;;:::o;16411:118::-;16498:24;16516:5;16498:24;:::i;:::-;16493:3;16486:37;16411:118;;:::o;16565:732::-;16684:3;16713:54;16761:5;16713:54;:::i;:::-;16783:86;16862:6;16857:3;16783:86;:::i;:::-;16776:93;;16893:56;16943:5;16893:56;:::i;:::-;16972:7;17003:1;16988:284;17013:6;17010:1;17007:13;16988:284;;;17089:6;17083:13;17116:63;17175:3;17160:13;17116:63;:::i;:::-;17109:70;;17202:60;17255:6;17202:60;:::i;:::-;17192:70;;17048:224;17035:1;17032;17028:9;17023:14;;16988:284;;;16992:14;17288:3;17281:10;;16689:608;;;16565:732;;;;:::o;17303:109::-;17384:21;17399:5;17384:21;:::i;:::-;17379:3;17372:34;17303:109;;:::o;17418:360::-;17504:3;17532:38;17564:5;17532:38;:::i;:::-;17586:70;17649:6;17644:3;17586:70;:::i;:::-;17579:77;;17665:52;17710:6;17705:3;17698:4;17691:5;17687:16;17665:52;:::i;:::-;17742:29;17764:6;17742:29;:::i;:::-;17737:3;17733:39;17726:46;;17508:270;17418:360;;;;:::o;17784:147::-;17879:45;17918:5;17879:45;:::i;:::-;17874:3;17867:58;17784:147;;:::o;17937:364::-;18025:3;18053:39;18086:5;18053:39;:::i;:::-;18108:71;18172:6;18167:3;18108:71;:::i;:::-;18101:78;;18188:52;18233:6;18228:3;18221:4;18214:5;18210:16;18188:52;:::i;:::-;18265:29;18287:6;18265:29;:::i;:::-;18260:3;18256:39;18249:46;;18029:272;17937:364;;;;:::o;18307:366::-;18449:3;18470:67;18534:2;18529:3;18470:67;:::i;:::-;18463:74;;18546:93;18635:3;18546:93;:::i;:::-;18664:2;18659:3;18655:12;18648:19;;18307:366;;;:::o;18679:::-;18821:3;18842:67;18906:2;18901:3;18842:67;:::i;:::-;18835:74;;18918:93;19007:3;18918:93;:::i;:::-;19036:2;19031:3;19027:12;19020:19;;18679:366;;;:::o;19051:::-;19193:3;19214:67;19278:2;19273:3;19214:67;:::i;:::-;19207:74;;19290:93;19379:3;19290:93;:::i;:::-;19408:2;19403:3;19399:12;19392:19;;19051:366;;;:::o;19423:::-;19565:3;19586:67;19650:2;19645:3;19586:67;:::i;:::-;19579:74;;19662:93;19751:3;19662:93;:::i;:::-;19780:2;19775:3;19771:12;19764:19;;19423:366;;;:::o;19795:::-;19937:3;19958:67;20022:2;20017:3;19958:67;:::i;:::-;19951:74;;20034:93;20123:3;20034:93;:::i;:::-;20152:2;20147:3;20143:12;20136:19;;19795:366;;;:::o;20167:::-;20309:3;20330:67;20394:2;20389:3;20330:67;:::i;:::-;20323:74;;20406:93;20495:3;20406:93;:::i;:::-;20524:2;20519:3;20515:12;20508:19;;20167:366;;;:::o;20539:::-;20681:3;20702:67;20766:2;20761:3;20702:67;:::i;:::-;20695:74;;20778:93;20867:3;20778:93;:::i;:::-;20896:2;20891:3;20887:12;20880:19;;20539:366;;;:::o;20911:::-;21053:3;21074:67;21138:2;21133:3;21074:67;:::i;:::-;21067:74;;21150:93;21239:3;21150:93;:::i;:::-;21268:2;21263:3;21259:12;21252:19;;20911:366;;;:::o;21283:::-;21425:3;21446:67;21510:2;21505:3;21446:67;:::i;:::-;21439:74;;21522:93;21611:3;21522:93;:::i;:::-;21640:2;21635:3;21631:12;21624:19;;21283:366;;;:::o;21655:::-;21797:3;21818:67;21882:2;21877:3;21818:67;:::i;:::-;21811:74;;21894:93;21983:3;21894:93;:::i;:::-;22012:2;22007:3;22003:12;21996:19;;21655:366;;;:::o;22027:::-;22169:3;22190:67;22254:2;22249:3;22190:67;:::i;:::-;22183:74;;22266:93;22355:3;22266:93;:::i;:::-;22384:2;22379:3;22375:12;22368:19;;22027:366;;;:::o;22399:::-;22541:3;22562:67;22626:2;22621:3;22562:67;:::i;:::-;22555:74;;22638:93;22727:3;22638:93;:::i;:::-;22756:2;22751:3;22747:12;22740:19;;22399:366;;;:::o;22771:108::-;22848:24;22866:5;22848:24;:::i;:::-;22843:3;22836:37;22771:108;;:::o;22885:118::-;22972:24;22990:5;22972:24;:::i;:::-;22967:3;22960:37;22885:118;;:::o;23009:222::-;23102:4;23140:2;23129:9;23125:18;23117:26;;23153:71;23221:1;23210:9;23206:17;23197:6;23153:71;:::i;:::-;23009:222;;;;:::o;23237:254::-;23346:4;23384:2;23373:9;23369:18;23361:26;;23397:87;23481:1;23470:9;23466:17;23457:6;23397:87;:::i;:::-;23237:254;;;;:::o;23497:1053::-;23820:4;23858:3;23847:9;23843:19;23835:27;;23872:71;23940:1;23929:9;23925:17;23916:6;23872:71;:::i;:::-;23953:72;24021:2;24010:9;24006:18;23997:6;23953:72;:::i;:::-;24072:9;24066:4;24062:20;24057:2;24046:9;24042:18;24035:48;24100:108;24203:4;24194:6;24100:108;:::i;:::-;24092:116;;24255:9;24249:4;24245:20;24240:2;24229:9;24225:18;24218:48;24283:108;24386:4;24377:6;24283:108;:::i;:::-;24275:116;;24439:9;24433:4;24429:20;24423:3;24412:9;24408:19;24401:49;24467:76;24538:4;24529:6;24467:76;:::i;:::-;24459:84;;23497:1053;;;;;;;;:::o;24556:751::-;24779:4;24817:3;24806:9;24802:19;24794:27;;24831:71;24899:1;24888:9;24884:17;24875:6;24831:71;:::i;:::-;24912:72;24980:2;24969:9;24965:18;24956:6;24912:72;:::i;:::-;24994;25062:2;25051:9;25047:18;25038:6;24994:72;:::i;:::-;25076;25144:2;25133:9;25129:18;25120:6;25076:72;:::i;:::-;25196:9;25190:4;25186:20;25180:3;25169:9;25165:19;25158:49;25224:76;25295:4;25286:6;25224:76;:::i;:::-;25216:84;;24556:751;;;;;;;;:::o;25313:332::-;25434:4;25472:2;25461:9;25457:18;25449:26;;25485:71;25553:1;25542:9;25538:17;25529:6;25485:71;:::i;:::-;25566:72;25634:2;25623:9;25619:18;25610:6;25566:72;:::i;:::-;25313:332;;;;;:::o;25651:373::-;25794:4;25832:2;25821:9;25817:18;25809:26;;25881:9;25875:4;25871:20;25867:1;25856:9;25852:17;25845:47;25909:108;26012:4;26003:6;25909:108;:::i;:::-;25901:116;;25651:373;;;;:::o;26030:634::-;26251:4;26289:2;26278:9;26274:18;26266:26;;26338:9;26332:4;26328:20;26324:1;26313:9;26309:17;26302:47;26366:108;26469:4;26460:6;26366:108;:::i;:::-;26358:116;;26521:9;26515:4;26511:20;26506:2;26495:9;26491:18;26484:48;26549:108;26652:4;26643:6;26549:108;:::i;:::-;26541:116;;26030:634;;;;;:::o;26670:210::-;26757:4;26795:2;26784:9;26780:18;26772:26;;26808:65;26870:1;26859:9;26855:17;26846:6;26808:65;:::i;:::-;26670:210;;;;:::o;26886:348::-;27015:4;27053:2;27042:9;27038:18;27030:26;;27066:79;27142:1;27131:9;27127:17;27118:6;27066:79;:::i;:::-;27155:72;27223:2;27212:9;27208:18;27199:6;27155:72;:::i;:::-;26886:348;;;;;:::o;27240:313::-;27353:4;27391:2;27380:9;27376:18;27368:26;;27440:9;27434:4;27430:20;27426:1;27415:9;27411:17;27404:47;27468:78;27541:4;27532:6;27468:78;:::i;:::-;27460:86;;27240:313;;;;:::o;27559:419::-;27725:4;27763:2;27752:9;27748:18;27740:26;;27812:9;27806:4;27802:20;27798:1;27787:9;27783:17;27776:47;27840:131;27966:4;27840:131;:::i;:::-;27832:139;;27559:419;;;:::o;27984:::-;28150:4;28188:2;28177:9;28173:18;28165:26;;28237:9;28231:4;28227:20;28223:1;28212:9;28208:17;28201:47;28265:131;28391:4;28265:131;:::i;:::-;28257:139;;27984:419;;;:::o;28409:::-;28575:4;28613:2;28602:9;28598:18;28590:26;;28662:9;28656:4;28652:20;28648:1;28637:9;28633:17;28626:47;28690:131;28816:4;28690:131;:::i;:::-;28682:139;;28409:419;;;:::o;28834:::-;29000:4;29038:2;29027:9;29023:18;29015:26;;29087:9;29081:4;29077:20;29073:1;29062:9;29058:17;29051:47;29115:131;29241:4;29115:131;:::i;:::-;29107:139;;28834:419;;;:::o;29259:::-;29425:4;29463:2;29452:9;29448:18;29440:26;;29512:9;29506:4;29502:20;29498:1;29487:9;29483:17;29476:47;29540:131;29666:4;29540:131;:::i;:::-;29532:139;;29259:419;;;:::o;29684:::-;29850:4;29888:2;29877:9;29873:18;29865:26;;29937:9;29931:4;29927:20;29923:1;29912:9;29908:17;29901:47;29965:131;30091:4;29965:131;:::i;:::-;29957:139;;29684:419;;;:::o;30109:::-;30275:4;30313:2;30302:9;30298:18;30290:26;;30362:9;30356:4;30352:20;30348:1;30337:9;30333:17;30326:47;30390:131;30516:4;30390:131;:::i;:::-;30382:139;;30109:419;;;:::o;30534:::-;30700:4;30738:2;30727:9;30723:18;30715:26;;30787:9;30781:4;30777:20;30773:1;30762:9;30758:17;30751:47;30815:131;30941:4;30815:131;:::i;:::-;30807:139;;30534:419;;;:::o;30959:::-;31125:4;31163:2;31152:9;31148:18;31140:26;;31212:9;31206:4;31202:20;31198:1;31187:9;31183:17;31176:47;31240:131;31366:4;31240:131;:::i;:::-;31232:139;;30959:419;;;:::o;31384:::-;31550:4;31588:2;31577:9;31573:18;31565:26;;31637:9;31631:4;31627:20;31623:1;31612:9;31608:17;31601:47;31665:131;31791:4;31665:131;:::i;:::-;31657:139;;31384:419;;;:::o;31809:::-;31975:4;32013:2;32002:9;31998:18;31990:26;;32062:9;32056:4;32052:20;32048:1;32037:9;32033:17;32026:47;32090:131;32216:4;32090:131;:::i;:::-;32082:139;;31809:419;;;:::o;32234:::-;32400:4;32438:2;32427:9;32423:18;32415:26;;32487:9;32481:4;32477:20;32473:1;32462:9;32458:17;32451:47;32515:131;32641:4;32515:131;:::i;:::-;32507:139;;32234:419;;;:::o;32659:222::-;32752:4;32790:2;32779:9;32775:18;32767:26;;32803:71;32871:1;32860:9;32856:17;32847:6;32803:71;:::i;:::-;32659:222;;;;:::o;32887:332::-;33008:4;33046:2;33035:9;33031:18;33023:26;;33059:71;33127:1;33116:9;33112:17;33103:6;33059:71;:::i;:::-;33140:72;33208:2;33197:9;33193:18;33184:6;33140:72;:::i;:::-;32887:332;;;;;:::o;33225:129::-;33259:6;33286:20;;:::i;:::-;33276:30;;33315:33;33343:4;33335:6;33315:33;:::i;:::-;33225:129;;;:::o;33360:75::-;33393:6;33426:2;33420:9;33410:19;;33360:75;:::o;33441:311::-;33518:4;33608:18;33600:6;33597:30;33594:56;;;33630:18;;:::i;:::-;33594:56;33680:4;33672:6;33668:17;33660:25;;33740:4;33734;33730:15;33722:23;;33441:311;;;:::o;33758:::-;33835:4;33925:18;33917:6;33914:30;33911:56;;;33947:18;;:::i;:::-;33911:56;33997:4;33989:6;33985:17;33977:25;;34057:4;34051;34047:15;34039:23;;33758:311;;;:::o;34075:307::-;34136:4;34226:18;34218:6;34215:30;34212:56;;;34248:18;;:::i;:::-;34212:56;34286:29;34308:6;34286:29;:::i;:::-;34278:37;;34370:4;34364;34360:15;34352:23;;34075:307;;;:::o;34388:132::-;34455:4;34478:3;34470:11;;34508:4;34503:3;34499:14;34491:22;;34388:132;;;:::o;34526:114::-;34593:6;34627:5;34621:12;34611:22;;34526:114;;;:::o;34646:98::-;34697:6;34731:5;34725:12;34715:22;;34646:98;;;:::o;34750:99::-;34802:6;34836:5;34830:12;34820:22;;34750:99;;;:::o;34855:113::-;34925:4;34957;34952:3;34948:14;34940:22;;34855:113;;;:::o;34974:184::-;35073:11;35107:6;35102:3;35095:19;35147:4;35142:3;35138:14;35123:29;;34974:184;;;;:::o;35164:168::-;35247:11;35281:6;35276:3;35269:19;35321:4;35316:3;35312:14;35297:29;;35164:168;;;;:::o;35338:169::-;35422:11;35456:6;35451:3;35444:19;35496:4;35491:3;35487:14;35472:29;;35338:169;;;;:::o;35513:305::-;35553:3;35572:20;35590:1;35572:20;:::i;:::-;35567:25;;35606:20;35624:1;35606:20;:::i;:::-;35601:25;;35760:1;35692:66;35688:74;35685:1;35682:81;35679:107;;;35766:18;;:::i;:::-;35679:107;35810:1;35807;35803:9;35796:16;;35513:305;;;;:::o;35824:348::-;35864:7;35887:20;35905:1;35887:20;:::i;:::-;35882:25;;35921:20;35939:1;35921:20;:::i;:::-;35916:25;;36109:1;36041:66;36037:74;36034:1;36031:81;36026:1;36019:9;36012:17;36008:105;36005:131;;;36116:18;;:::i;:::-;36005:131;36164:1;36161;36157:9;36146:20;;35824:348;;;;:::o;36178:191::-;36218:4;36238:20;36256:1;36238:20;:::i;:::-;36233:25;;36272:20;36290:1;36272:20;:::i;:::-;36267:25;;36311:1;36308;36305:8;36302:34;;;36316:18;;:::i;:::-;36302:34;36361:1;36358;36354:9;36346:17;;36178:191;;;;:::o;36375:96::-;36412:7;36441:24;36459:5;36441:24;:::i;:::-;36430:35;;36375:96;;;:::o;36477:104::-;36522:7;36551:24;36569:5;36551:24;:::i;:::-;36540:35;;36477:104;;;:::o;36587:90::-;36621:7;36664:5;36657:13;36650:21;36639:32;;36587:90;;;:::o;36683:149::-;36719:7;36759:66;36752:5;36748:78;36737:89;;36683:149;;;:::o;36838:126::-;36875:7;36915:42;36908:5;36904:54;36893:65;;36838:126;;;:::o;36970:77::-;37007:7;37036:5;37025:16;;36970:77;;;:::o;37053:121::-;37111:9;37144:24;37162:5;37144:24;:::i;:::-;37131:37;;37053:121;;;:::o;37180:154::-;37264:6;37259:3;37254;37241:30;37326:1;37317:6;37312:3;37308:16;37301:27;37180:154;;;:::o;37340:307::-;37408:1;37418:113;37432:6;37429:1;37426:13;37418:113;;;37517:1;37512:3;37508:11;37502:18;37498:1;37493:3;37489:11;37482:39;37454:2;37451:1;37447:10;37442:15;;37418:113;;;37549:6;37546:1;37543:13;37540:101;;;37629:1;37620:6;37615:3;37611:16;37604:27;37540:101;37389:258;37340:307;;;:::o;37653:320::-;37697:6;37734:1;37728:4;37724:12;37714:22;;37781:1;37775:4;37771:12;37802:18;37792:81;;37858:4;37850:6;37846:17;37836:27;;37792:81;37920:2;37912:6;37909:14;37889:18;37886:38;37883:84;;;37939:18;;:::i;:::-;37883:84;37704:269;37653:320;;;:::o;37979:281::-;38062:27;38084:4;38062:27;:::i;:::-;38054:6;38050:40;38192:6;38180:10;38177:22;38156:18;38144:10;38141:34;38138:62;38135:88;;;38203:18;;:::i;:::-;38135:88;38243:10;38239:2;38232:22;38022:238;37979:281;;:::o;38266:233::-;38305:3;38328:24;38346:5;38328:24;:::i;:::-;38319:33;;38374:66;38367:5;38364:77;38361:103;;;38444:18;;:::i;:::-;38361:103;38491:1;38484:5;38480:13;38473:20;;38266:233;;;:::o;38505:180::-;38553:77;38550:1;38543:88;38650:4;38647:1;38640:15;38674:4;38671:1;38664:15;38691:180;38739:77;38736:1;38729:88;38836:4;38833:1;38826:15;38860:4;38857:1;38850:15;38877:180;38925:77;38922:1;38915:88;39022:4;39019:1;39012:15;39046:4;39043:1;39036:15;39063:180;39111:77;39108:1;39101:88;39208:4;39205:1;39198:15;39232:4;39229:1;39222:15;39249:183;39284:3;39322:1;39304:16;39301:23;39298:128;;;39360:1;39357;39354;39339:23;39382:34;39413:1;39407:8;39382:34;:::i;:::-;39375:41;;39298:128;39249:183;:::o;39438:117::-;39547:1;39544;39537:12;39561:117;39670:1;39667;39660:12;39684:117;39793:1;39790;39783:12;39807:117;39916:1;39913;39906:12;39930:117;40039:1;40036;40029:12;40053:117;40162:1;40159;40152:12;40176:102;40217:6;40268:2;40264:7;40259:2;40252:5;40248:14;40244:28;40234:38;;40176:102;;;:::o;40284:106::-;40328:8;40377:5;40372:3;40368:15;40347:36;;40284:106;;;:::o;40396:239::-;40536:34;40532:1;40524:6;40520:14;40513:58;40605:22;40600:2;40592:6;40588:15;40581:47;40396:239;:::o;40641:227::-;40781:34;40777:1;40769:6;40765:14;40758:58;40850:10;40845:2;40837:6;40833:15;40826:35;40641:227;:::o;40874:230::-;41014:34;41010:1;41002:6;40998:14;40991:58;41083:13;41078:2;41070:6;41066:15;41059:38;40874:230;:::o;41110:228::-;41250:34;41246:1;41238:6;41234:14;41227:58;41319:11;41314:2;41306:6;41302:15;41295:36;41110:228;:::o;41344:181::-;41484:33;41480:1;41472:6;41468:14;41461:57;41344:181;:::o;41531:237::-;41671:34;41667:1;41659:6;41655:14;41648:58;41740:20;41735:2;41727:6;41723:15;41716:45;41531:237;:::o;41774:229::-;41914:34;41910:1;41902:6;41898:14;41891:58;41983:12;41978:2;41970:6;41966:15;41959:37;41774:229;:::o;42009:180::-;42149:32;42145:1;42137:6;42133:14;42126:56;42009:180;:::o;42195:228::-;42335:34;42331:1;42323:6;42319:14;42312:58;42404:11;42399:2;42391:6;42387:15;42380:36;42195:228;:::o;42429:::-;42569:34;42565:1;42557:6;42553:14;42546:58;42638:11;42633:2;42625:6;42621:15;42614:36;42429:228;:::o;42663:176::-;42803:28;42799:1;42791:6;42787:14;42780:52;42663:176;:::o;42845:227::-;42985:34;42981:1;42973:6;42969:14;42962:58;43054:10;43049:2;43041:6;43037:15;43030:35;42845:227;:::o;43078:711::-;43117:3;43155:4;43137:16;43134:26;43131:39;;;43163:5;;43131:39;43192:20;;:::i;:::-;43267:1;43249:16;43245:24;43242:1;43236:4;43221:49;43300:4;43294:11;43399:16;43392:4;43384:6;43380:17;43377:39;43344:18;43336:6;43333:30;43317:113;43314:146;;;43445:5;;;;43314:146;43491:6;43485:4;43481:17;43527:3;43521:10;43554:18;43546:6;43543:30;43540:43;;;43576:5;;;;;;43540:43;43624:6;43617:4;43612:3;43608:14;43604:27;43683:1;43665:16;43661:24;43655:4;43651:35;43646:3;43643:44;43640:57;;;43690:5;;;;;;;43640:57;43707;43755:6;43749:4;43745:17;43737:6;43733:30;43727:4;43707:57;:::i;:::-;43780:3;43773:10;;43121:668;;;;;43078:711;;:::o;43795:122::-;43868:24;43886:5;43868:24;:::i;:::-;43861:5;43858:35;43848:63;;43907:1;43904;43897:12;43848:63;43795:122;:::o;43923:138::-;44004:32;44030:5;44004:32;:::i;:::-;43997:5;43994:43;43984:71;;44051:1;44048;44041:12;43984:71;43923:138;:::o;44067:116::-;44137:21;44152:5;44137:21;:::i;:::-;44130:5;44127:32;44117:60;;44173:1;44170;44163:12;44117:60;44067:116;:::o;44189:120::-;44261:23;44278:5;44261:23;:::i;:::-;44254:5;44251:34;44241:62;;44299:1;44296;44289:12;44241:62;44189:120;:::o;44315:122::-;44388:24;44406:5;44388:24;:::i;:::-;44381:5;44378:35;44368:63;;44427:1;44424;44417:12;44368:63;44315:122;:::o

Swarm Source

ipfs://4676de41a7296f1ca947939d4af397979a6ef06457b9cad8e255ba5786619021
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.