ETH Price: $3,461.98 (+0.21%)
Gas: 6 Gwei

Token

Letters (LETTERS)
 

Overview

Max Total Supply

1,000 LETTERS

Holders

740

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
1 LETTERS
0xd35372B7c35D1171d52f258e458336Bc1eD5B6AE
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Letters is Vinnie Hager’s genesis NFT collection which consists of 1000 hand illustrated 1 of 1 pieces.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
LETTERS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-29
*/

// SPDX-License-Identifier: MIT


/* 

contract created by
                          __                                                    __ 
                         |  \                                                  |  \
 ______ ____    ______  _| $$_     ______    _______   ______    ______    ____| $$
|      \    \  /      \|   $$ \   |      \  /       \ /      \  /      \  /      $$
| $$$$$$\$$$$\|  $$$$$$\\$$$$$$    \$$$$$$\|  $$$$$$$|  $$$$$$\|  $$$$$$\|  $$$$$$$
| $$ | $$ | $$| $$    $$ | $$ __  /      $$ \$$    \ | $$    $$| $$    $$| $$  | $$
| $$ | $$ | $$| $$$$$$$$ | $$|  \|  $$$$$$$ _\$$$$$$\| $$$$$$$$| $$$$$$$$| $$__| $$
| $$ | $$ | $$ \$$     \  \$$  $$ \$$    $$|       $$ \$$     \ \$$     \ \$$    $$
 \$$  \$$  \$$  \$$$$$$$   \$$$$   \$$$$$$$ \$$$$$$$   \$$$$$$$  \$$$$$$$  \$$$$$$$
                                                                                  
                     __  __                        __      __                      
                    |  \|  \                      |  \    |  \                     
  _______   ______  | $$| $$  ______    _______  _| $$_    \$$ __     __   ______  
 /       \ /      \ | $$| $$ /      \  /       \|   $$ \  |  \|  \   /  \ /      \ 
|  $$$$$$$|  $$$$$$\| $$| $$|  $$$$$$\|  $$$$$$$ \$$$$$$  | $$ \$$\ /  $$|  $$$$$$\
| $$      | $$  | $$| $$| $$| $$    $$| $$        | $$ __ | $$  \$$\  $$ | $$    $$
| $$_____ | $$__/ $$| $$| $$| $$$$$$$$| $$_____   | $$|  \| $$   \$$ $$  | $$$$$$$$
 \$$     \ \$$    $$| $$| $$ \$$     \ \$$     \   \$$  $$| $$    \$$$    \$$     \
  \$$$$$$$  \$$$$$$  \$$ \$$  \$$$$$$$  \$$$$$$$    \$$$$  \$$     \$      \$$$$$$$


NFT Collective for Artists, Builders & Collectors
https://metaseed.art
 
*/                                                              

pragma solidity ^0.8.0;

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

// File: node_modules\openzeppelin-solidity\contracts\token\ERC721\IERC721.sol

pragma solidity ^0.8.0;

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

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

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

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

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

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

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

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

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

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

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

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
       bytes calldata data
    ) external;
}

// File: node_modules\openzeppelin-solidity\contracts\token\ERC721\IERC721Receiver.sol

pragma solidity ^0.8.0;

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

// File: node_modules\openzeppelin-solidity\contracts\token\ERC721\extensions\IERC721Metadata.sol

pragma solidity ^0.8.0;

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

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

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

// File: node_modules\openzeppelin-solidity\contracts\utils\Address.sol

pragma solidity ^0.8.0;

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

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        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"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: node_modules\openzeppelin-solidity\contracts\utils\Context.sol

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: node_modules\openzeppelin-solidity\contracts\utils\Strings.sol

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
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);
    }
}

// File: node_modules\openzeppelin-solidity\contracts\utils\introspection\ERC165.sol

pragma solidity ^0.8.0;

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

// File: node_modules\openzeppelin-solidity\contracts\token\ERC721\ERC721.sol

pragma solidity ^0.8.0;

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

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
     * in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved)
        public
        virtual
        override
    {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

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

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

        _transfer(from, to, tokenId);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

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

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

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

// File: node_modules\openzeppelin-solidity\contracts\token\ERC721\extensions\IERC721Enumerable.sol

pragma solidity ^0.8.0;

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

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

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

// File: openzeppelin-solidity\contracts\token\ERC721\extensions\ERC721Enumerable.sol

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: contracts\lib\Counters.sol

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        {
            counter._value = value - 1;
        }
    }
}

// File: openzeppelin-solidity\contracts\access\Ownable.sol

pragma solidity ^0.8.0;

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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


pragma solidity ^0.8.0;

contract LETTERS is ERC721Enumerable, Ownable {
    using Counters for Counters.Counter;
    using Strings for uint256;

    uint256 public constant LETTERS_PUBLIC = 1000;
    uint256 public constant LETTERS_MAX = LETTERS_PUBLIC;
    uint256 public constant PURCHASE_LIMIT = 1;
    uint256 public allowListMaxMint = 1;
    uint256 public constant PRICE = 100_000_000_000_000_000; // 0.1 ETH
    string private _contractURI = "";
    string private _tokenBaseURI = "";
    bool private _isActive = false;
    bool public isAllowListActive = false;
    
    mapping(address => bool) private _allowList;
    mapping(address => uint256) private _allowListClaimed;
    
    Counters.Counter private _publicLETTERS;

    constructor() ERC721("Letters", "LETTERS") {
        _allowList[0x7BF0688Fc3ab0CFdD00E48673b3A0D6128DF33Dc]=true;
        _allowList[0xc28FA41bcc3964Fa784e2793e3915FE4d4dF8d3E]=true;
        _allowList[0x13Fd300cd3E3DB045Fd420dDB3030eE55108Db4E]=true;
        _allowList[0x83002509A1836cE8030041FeB36C9D15511423F1]=true;
        _allowList[0x36Fa11f6715A5E440871F531030Ee4E94d7B9309]=true;
        _allowList[0x69a2D7D53e07E31b184196C895b02620d0Ab0104]=true;
        _allowList[0xC8932B5B7a6994A7f82087c4D6E8c8D67E6feE5C]=true;
        _allowList[0xCEB992E5e82C718491f776299d4fe775D9214147]=true;
        _allowList[0xFc1dF48328D4BAe087899072f0f5f8031BC38fff]=true;
        _allowList[0x8b01553BcE7f63864058Dc632A25F2b0F56810c2]=true;
        _allowList[0x5C41BE79c5af91cC019d94E6cF0C999f746136Db]=true;
        _allowList[0xfc981edae4d567e530f827ec7fED3307C484C5B6]=true;
        _allowList[0xab7b9801568A05A44E6E3Bb626B27030C763479a]=true;
        _allowList[0xB5A2370E6e741c6A12c40E6FF8FC6852D38e88cE]=true;
        _allowList[0x61fAE2d53Ce42D87a089753c55C2d26309F0A89f]=true;
        _allowList[0x370F2b7Cb212617ef1353BB20E8E66dc5950374f]=true;
        _allowList[0xA764E937556B742a88723Bb6c8B269B26dAe742A]=true;
        _allowList[0x6A69Efe85FE9AEdfaE63d67C8Cc354349B7ef89C]=true;
        _allowList[0xeb2B62Ca1d4A59d601fc46c652D56ADFb065Ce4F]=true;
        _allowList[0xc49a570a3A3ce48085E869F53f6511babD9c2CcD]=true;
        _allowList[0xFbb63846776982dAcD4BA710501F93c3073040fC]=true;
        _allowList[0xAA65f742193953DAf7703a5EEAf7406c0F6b9137]=true;
        _allowList[0x466AbBfb9AAb4C6dF6d3Cc03D6C63C43C5162048]=true;
        _allowList[0x803028dD9D3B5FC1b12e48B4f3F4218cc6470146]=true;
        _allowList[0xbf99402420AD0cB4091ffE8AB37314785EffE64F]=true;
        _allowList[0xA227B5ef06410639D4985d6be693352B71b8A165]=true;
        _allowList[0x1721E4489fE2b2A9a8c95256028e7f3025c50569]=true;
        _allowList[0x56543717d994D09D5862AB9c6f99bCe964AE664a]=true;
        _allowList[0x23CcD60bcC6457c634C977534948928983ebc2DB]=true;
        _allowList[0xE6ceF3226E19A5bBf2b4310A242AB1b9692E4A15]=true;
        _allowList[0x65EA52776ab213971ACD173013Ca5EEb8F7202bc]=true;
        _allowList[0x4660fBB1E7C72AbDdCf4d90B244887e3521AD3b2]=true;
        _allowList[0x51bB62F1753C741D717D74E1BC435903E42e42EC]=true;
        _allowList[0x3F4373aFdde3D7dE3AC433AcC7De685338c3980e]=true;
        _allowList[0xbAabA45DcabD9DDC8C81ad246aA7aE92964F0C81]=true;
        _allowList[0x023d8c2F6374F61B943F1dEf2A910197bb653858]=true;
        _allowList[0xFDb4cCdfDcD5aE3E45e85945E2e19ABD3F422D9e]=true;
        _allowList[0xEbA1184a59cA067286ab492165E0AaC51A6ff3C9]=true;
        _allowList[0xaF2E919B59734B8d99F6Bc1f62Dc63d6519d14BC]=true;
        _allowList[0xB709Dd16453CcD67fA15F9BDDa00a02751dfac9b]=true;
        _allowList[0x7255FE6f25ecaED72E85338c131D0daA60724Ecc]=true;
        _allowList[0x5219DA43dad677892a4c009c0B610FB189d06963]=true;
        _allowList[0x23da856b31F486A6c39DA1E12c3CB49dC33231B7]=true;
        _allowList[0xa25DAcCF7bacd8c229B3f8C59a314496Ae642F5C]=true;
        _allowList[0x31Aabd64819175430a21B23FA8e57d4cE00BD6e1]=true;
        _allowList[0x881a5E8Ace5Cb2cd72b135bEC25d9A94Df3d5413]=true;
        _allowList[0x628eA111406A68f4EC00cA3587843Ef0058BA6f3]=true;
        _allowList[0x18A4EBeEA97AAF45d7dE8c248b09AB9c25BC1906]=true;
        _allowList[0x67066F901022fDFC4b11b3bee59e9A0fdAdE7Efb]=true;
        _allowList[0x41AF923750584fE213955b2FC707717fB4Adb256]=true;
        _allowList[0xAa847D567d6968E59D1CAb8b1feA6897A21fAAee]=true;
        _allowList[0xd461c0E84C98650B7d573Cb7cDd3d7E0bA402E6b]=true;
        _allowList[0x22d0794A82EEBdd10245C2d162951eB1CA6FA58b]=true;
        _allowList[0xb2e0e159aE208aE1a16247321949CdA20da75e62]=true;
        _allowList[0x646020747321527ff22Ad17CA6A6aA139cd0BA54]=true;
        _allowList[0x39b15858d4585D24Fc37beE690d6A102F9a1FF90]=true;
        _allowList[0xead6365C2926006faCfE0411db42702888722453]=true;
        _allowList[0x774eEd784BD501BaCD7cC9FF9De185D96c04Bd51]=true;
        _allowList[0x99F607CffdA434Eed851EE5f25Bf34F463A78657]=true;
        _allowList[0x18Fc8940309C4F58806A67C101aFe0d3bD16E424]=true;
        _allowList[0x5011f2a7E9e6A41b7c8d68d2AFF6529E6e167d7d]=true;
        _allowList[0xFc84F9cE5A0BA010344D690f849988FA033031a5]=true;
        _allowList[0x049E4649Ac8b41c5E5b4c26212476f9E5490A034]=true;
        _allowList[0x1E8C0cCf25c2AF914FCCB659808ae196eCB93b6A]=true;
        _allowList[0xC93C4593A7D55b08f48b8b416fBf9f631912e2C9]=true;
        _allowList[0x7D75881e214Ba08b7595BEcc4F62168F71e49d64]=true;
        _allowList[0x2a3B3AB29E88310F48739E77D008DbB0940c01A0]=true;
        _allowList[0xD05d113669355CBe5AC7c4e466eAa9E3e87e8054]=true;
        _allowList[0xb767D67b5b5AF28BEB0b760cA38169ac508B8D6e]=true;
        _allowList[0xf19F1C9b5985A3e1B999E95Ba3CC4f591a2dC019]=true;
        _allowList[0x3406dC6A8e01Eefd44C8623AaB704Bb60e074743]=true;
        _allowList[0xcFeee429a333Afcf89E6Ae5BCCaf9aDb01AbA6EB]=true;
        _allowList[0xEDcF12b46f57207Ec537Eb73C4E2C103A32B233A]=true;
        _allowList[0x66C22847026859dA04EF475113a58576d1347845]=true;
        _allowList[0xF1d2706250B4A5C0c42bdce5025ef5a1E2F90293]=true;
        _allowList[0xdd8406BF72fe27bfff96530aF5348F20bAB300B5]=true;
        _allowList[0x0775a23372a9A1572B2138f0eb5069A60f6b8b05]=true;
        _allowList[0x3dA954C2e7a494e25102Fd11910223849FeA9B77]=true;
        _allowList[0xCc6D4546F57Ae7d37A2acb17D07228e0d8439e6c]=true;
        _allowList[0xDff71A881a17737b6942FE1542F4b88128eA57D8]=true;
        _allowList[0xd116a6edAaA77Bb0B9d758C8E8d705b3908D9353]=true;
        _allowList[0x190F49C0F92a2C10aca57108B8ccD49416c22d25]=true;
        _allowList[0x1a98347250498531758446aC22E605dceb46005c]=true;
        _allowList[0x5fe91B15F8b9a2B305628Cd49a686d6A0ca81e81]=true;
        _allowList[0x85951C90CabFd076db3095B705A7B1A5DFDb31e4]=true;
        _allowList[0xb988c18408Ea94139BE704fEc1CF9350d2A0B1e1]=true;
        _allowList[0x6f96A08D5CCFE4c9712670dC17a0118441CC621d]=true;
        _allowList[0x3D7f2165d3d54eAF9F6af52fd8D91669D4E02ebC]=true;
        _allowList[0xebFbb1233FdE916F2744cD3784a5D1581f2661B3]=true;
        _allowList[0x21bd72a7e219B836680201c25B61a4AA407F7bfD]=true;
        _allowList[0xeaF7814CDf7236Bc5992D19CC455F9C92B00AA9e]=true;
        _allowList[0x30c381EeB974C11B639e5e932b58044F08BAf737]=true;
        _allowList[0xd79586309A9790A0546989624a96439c4Be9abd5]=true;
        _allowList[0xEbf5feF7946d95880f4d1B298F70F7F1bF552a9E]=true;
        _allowList[0x5022cF478c7124d508Ab4A304946Cb4Fa3d9C39e]=true;
        _allowList[0x167B563eDAA56407CA8602562C7e2e38a87e674F]=true;
        _allowList[0xe7703b16eF7cd803FF46703172Ef402f07A0ebb2]=true;
        _allowList[0x20905a56858AF03DdB80B32c9FE26E96093edcB5]=true;
        _allowList[0xeed1F8E56932beA3e77e996710e1524fc642FCFa]=true;
        _allowList[0x9644A0B2A8e1f56C82b20E6ef3f71aec1EC2aB6B]=true;
        _allowList[0xEd74e8cE17F2dFf13d801583c70f5e9a1aCE5d6d]=true;
        _allowList[0x7313a2E1460e41D6A1eF20CFd5c6F702a8651551]=true;
        _allowList[0x07b2cFB7674876fb34EeeD3248E99Bc63d238F91]=true;
        _allowList[0x586D9F26695465e57f34930E2fE9AE1CF07367Ab]=true;
        _allowList[0x9BE947791880718A2A0D5baf6EA8b883948eEbe4]=true;
        _allowList[0x56f210974e0Ac548cF75c6034f1C0aa515c818df]=true;
        _allowList[0xBe9Dff4A9E1b1BE116172854F3b5680b4d225E35]=true;
        _allowList[0x7DD3666633b25d8CC5C68cbfdF3907F443DAe5c7]=true;
        _allowList[0x2B4b676397A75746b77b2F5999f106929174fC01]=true;
        _allowList[0xFE15f7adBc591fe2Af5736231e791D469F64Ae26]=true;
        _allowList[0x439016804a0F0A9B5cBaf82461573Ca0A5e38e88]=true;
        _allowList[0xd5e5d602aDb31A00D90FEa6d6CcA4d085C9252dc]=true;
        _allowList[0xdc1036CB9B138A0206aa567BDE08D50b81Ee4091]=true;
        _allowList[0x3326AA7595DFeb4aa163391Ef49fd8e7DAD771dd]=true;
        _allowList[0x3A0A8ECD310C23E909f7ca96E0b7Ec42d2C4a957]=true;
        _allowList[0x9c19f0Bd6218f223320F5B51fA4F4F74A0f25b51]=true;
        _allowList[0x6d15c238676BBbFd913822713d971cDFC170E2DF]=true;
        _allowList[0xA021Da3af846EAdF9539Bba8D0d5Ac59C87B3ed7]=true;
        _allowList[0xd27db4bAdaA0347cC50c2Bf2ce91e6CA7ab6158E]=true;
        _allowList[0x769380D02Ec0f022B610a907abdd090DB23c46F3]=true;
        _allowList[0xEefc64D684A2dE1566b9A3368150cC882aA0B683]=true;
        _allowList[0x0d9bc5D496C805bC6B49126111fcb538a4eC360D]=true;
        _allowList[0x5e19Ed4A406eDdFCE924B4949aAfEe5df15C2bE8]=true;
        _allowList[0x093e94741A8F96Bf44Ec92d5F0E464B109242138]=true;
        _allowList[0x01e8fB920df7775ACEab82F07c283539473e8f2a]=true;
        _allowList[0x81044165Bde432fbc131AE3E83e2CEED68C424F1]=true;
        _allowList[0x50c077578696A1e35Bd690247fCc285A44A29710]=true;
        _allowList[0xf14c2b72c7c8821A579a578B098542eBA13D8a12]=true;
        _allowList[0x3661ec1ee571efe8179b09436F3308DF6A7C089C]=true;
        _allowList[0x7dAAC88c492c641A0aC8D08420B6a7D78764615D]=true;
        _allowList[0xF94BA062308EA92f7AB3CF55c4B410339717C74d]=true;
        _allowList[0x8D0569C7B80098aa64e64e9F6b7a6A3A1EeFBb8f]=true;
        _allowList[0xe7ffF33d78FD81FA0Bfdca008695e125c3710EF8]=true;
        _allowList[0x44C06482aa80D4611A16E6F4116137cb44E6aE2C]=true;
        _allowList[0xE5Cd0545BE357D206187052B5018B342C26b819A ]=true;
        _allowList[0xc7BA81D2a48f0C5dc285835456A7135713aD994B]=true;
        _allowList[0x6130B7313833f99956A364156b3329e50695BD65]=true;
        _allowList[0x549cEa1ff6e0210Efb79f2fE58D7b0674701A6b4]=true;
        _allowList[0x89E61810011d8f032F92fF1F3F9680e2D2feE83F]=true;
        _allowList[0x26f921d0358EA791e4071ceC84a5040f5fF73440]=true;
        _allowList[0x3d46386BECc128F900e707b04dc1BA3C4144B43B]=true;
        _allowList[0xbBac69f7Bf99a0dD28a9e1ed4AdE8c508AE90c2D]=true;
        _allowList[0x4802dF37A6b97565c760caAA2E49AF0Cf204726E]=true;
        _allowList[0xdcd1E41eDbfCaCFdeA40aebba38BC28416FfB743]=true;
        _allowList[0xA5f11cD33A4F756C2633Cee4fa466c8A4bB6518a]=true;
        _allowList[0x93675bE4842871BA13a92d555C1Ee99D15691E92]=true;
        _allowList[0xF95b3cccB536bCb9F1F6eb4f3D703e65fC41689E]=true;
        _allowList[0x05CcF21A74324542F5c68bC8F216E173382C0254]=true;
        _allowList[0xBf071f633150f47B31C45Ff7D04f94F06F39974A]=true;
        _allowList[0x16a6E1Cce134fD6440Dd610a8Db2CE91542a6DE3]=true;
        _allowList[0x614ef48f3Db5544A33c148921352Ccb32ff480dF]=true;
        _allowList[0xB7edcF5Cd7C1d9a1eB175e54b62FE913ab87f327]=true;
        _allowList[0xE33e0BD203B8A7de9ED6A2928a1A1623851e5257]=true;
        _allowList[0x81450f038842311cd7BF878a14bcAAD9529e5170]=true;
        _allowList[0xc6A9b7b05f9dA87bfFb345094b238Db6B18b9143]=true;
        _allowList[0xFb8C0777051218D3EcB6ADe85783B64Ce54ad409]=true;
        _allowList[0x54fA1B6f88B289e58D32e1f0A03570d08F26B31a]=true;
        _allowList[0x27Eb78C1Eade6fc040d25b94E7acf6BBe0689F0A]=true;
        _allowList[0x7D87E23d7777D4829845F03f31721E10775799fd]=true;
        _allowList[0xA68595d2B71B3f7bd943FA02E51bae01ae18b8ec]=true;
        _allowList[0x1E77175dc45e51c37f982f451c0E5131D9b688E1]=true;
        _allowList[0x5a9CE28f388784Fbb515d68802Ab0f1a0C4b7490]=true;
        _allowList[0xE6CEB755e9c5706F001eAdebE5E47eaF3bEC0e11]=true;
        _allowList[0x938a0aF4B86057489bC651Dd02C080890d8ed5e5]=true;
        _allowList[0x5A077f81e4df021431F25b12541Ba233084380C2]=true;
        _allowList[0x8A9cd4ADf3C065aF17b2be9Ef347c4EDC5C73D05]=true;
        _allowList[0x280E7D851B8d6bD46B7ed4f98670a08f08ad1A5D]=true;
        _allowList[0x7c7869c553e180A8A90231E4F016fa382dfFc029]=true;
        _allowList[0x06762dF3dd1473306Be29072588b75B6Aa443Df6]=true;
        _allowList[0xF930b0A0500D8F53b2E7EFa4F7bCB5cc0c71067E]=true;
        _allowList[0x72d5704bA3850E131B9047D5F26876929FD2A2b4]=true;
        _allowList[0xe713794D7e3083687B93B64d5e5B15C84Dc6DBd5]=true;
        _allowList[0x9985273fa044a6164f9599Ec3E26d6B1bCbcC756]=true;
        _allowList[0xDc9DfBbd17Ef58aB8979D813f5aD0E0E4d9319bf]=true;
        _allowList[0x616ed054e0e0fdbfCAd3fA2F42daeD3d7d4eE448]=true;
        _allowList[0xA9B8A2Fb3802EB0c509831e6Ad232c0AC684A5a2]=true;
        _allowList[0x9fd2912eb0D8af91aA065A0002eDE74F9016514d]=true;
        _allowList[0x4394b956F78AD75d7a0Cf434fE5eff0A4e1D52df]=true;
        _allowList[0x436667b3F2715938791a3A1f1c040D274eEe2141]=true;
        _allowList[0x4993B35f56799fE504392d0bb1D57dfc3D73DA70]=true;
        _allowList[0xA0DB7A17B3B912c5b3bCcBAD5E9f7be910a05888]=true;
        _allowList[0xBDae25428c19d25659ca1da2DE626346e939EF4b]=true;
        _allowList[0x4e0DBF4d4835C8bE33C9f43584bdF385Dc66d61b]=true;
        _allowList[0xd4aa18a5E9C1bdEcb4F97cf31928De7936b1654C]=true;
        _allowList[0x17E80B4E239298C4c23F5445b5017D7d91D22FE5]=true;
        _allowList[0x8175BE7836445E2C4bC33216E2a9e84Db732F170]=true;
        _allowList[0x4fB23d2A4c1F9b16a0A237Cbe1A07396000C5719]=true;
        _allowList[0x2B6F5ee4d2275DcC1CF08EC01baa5B4D5b967d0E]=true;
        _allowList[0x20Aa44524D165043833e2526A754F46A77514232]=true;
        _allowList[0x9eF4ca1A90361Aee93c4638D142Ba04A5a8fB08B]=true;
        _allowList[0xdf09092bAe5C265e404e0a8Ce01eBF341481F531]=true;
        _allowList[0x3018B55796b0B9F6B4fe6853561FD33B9261ff30]=true;
        _allowList[0xf712929c4D3a341104ADbA9aAf1eaAD73e37b5b2]=true;
        _allowList[0xc30452caeB2fD97222455Caa3ae3105a96ec522E]=true;
        _allowList[0x21818f7Fc4712e6b3BCE71a7EEA40414f1FeAD3f]=true;
        _allowList[0xb6af0e59E41F75552af00138a9F62ACAef2B6254]=true;
        _allowList[0x8c74C3153e829a9c7d60bD057b27D2eb3222DDdf]=true;
        _allowList[0x0DB1f2147619d12f5281B2a3cAe9B34736F4532D]=true;
        _allowList[0x1d7b8E4A86Ae6abe09FE4f0A5bcF2495b17fF199]=true;
        _allowList[0x0bB1066194cbb52B10183d7D79b1180cf2B5eD48]=true;
        _allowList[0x8cc3A2f4DCdaaa250037Fb913c2629A010f1f8eD]=true;
        _allowList[0x4115551A8341d24c5E8747abD0D0f85B8D0352Dc]=true;
        _allowList[0x70FC1502f222E721A86731661DB5F3AbE21A8C6F]=true;
        _allowList[0x8E55c9518416D12dB2763EE17A2D60f2d6244D93]=true;
        _allowList[0x1b8f04d48567ab20F7dbE3A191CD0d3C2826BF7b]=true;
        _allowList[0x8756Da913378b865Cc6e5bbD8d403995A0b37567]=true;
        _allowList[0x7215b80FbA9c774d629Aa930baEf35E562e0Cd57]=true;
        _allowList[0x6292afeBa1382b2F22Caa3214F42073655092EC8]=true;
        _allowList[0x71A39b27A6F3B384180945870b72767c043e638a]=true;
        _allowList[0x4a75C0aaefbE2703C3b3a8dFF1e6e5bF9E4078dB]=true;
        _allowList[0x88F964C4CCe207eaa77Cf9eC77e0A2e716B6F1f8]=true;
        _allowList[0x9630D91664f9014874308a019F060BE838Cf63Dc]=true;
        _allowList[0x1B52175fCb2a892b53330810F29735Ae23dBCCDe]=true;
        _allowList[0x3754469Fb055400C816e4F8Ec0223912cD9FBC7B]=true;
        _allowList[0xFeA363925253d83F43c2AA5Deb578C6298E511E1]=true;
        _allowList[0xcc6292BC2d67a3BDd84DDd6166112Aee8Ec0c986]=true;
        _allowList[0xc75fe38dCE675cA98B3F3fb6e9402eCf5E120D5C]=true;
        _allowList[0xb770C98FB918c323d5b55be1520050782E5ec297]=true;
        _allowList[0x3F42b979cd581e3484469825c712f03f0Efb8C94]=true;
        _allowList[0x53eF350f3d8c7fCDF04661Ff6672A8fe406E7605]=true;
        _allowList[0xd3d2F1373d73A31AaD6DfE226935585A9608F4a8]=true;
        _allowList[0xBd98fa50265ff40568Cf7728E02Adfb7a30FF608]=true;
        _allowList[0xd5FFE973DfE90dA96CC1af4fD8f9E67093E51E84]=true;
        _allowList[0xd7EF4213AC470D243a61aACaC2C1DE08dD4c9903]=true;
        _allowList[0x1148b66f5BDc99a2AD9F659D42Bf115aF0755266]=true;
        _allowList[0x58d8CC6f87f0C3c69B5998dBE62DFde9DcAD2FB9]=true;
        _allowList[0xe94AE36efC66aD2cc3a891893217CFAD33Fee418]=true;
        _allowList[0x5fE8a15dbE1863B37F7e15B1B180af7627548738]=true;
        _allowList[0x5CADCcfd488E2B919596e2430a7ec3a6cc1CF2Ea]=true;
        _allowList[0x068565c1F5bDe10D4230A8157Da12a4C0A825613]=true;
        _allowList[0x10a04e477016290fC974b1CD88cAc7720E418FE8]=true;
        _allowList[0x2fbB04CA08Be1094F6131e2c8B33368b8eef5F9f]=true;
        _allowList[0x4f41FA9664EAfe2a9b8b6663D81473B942345dF6]=true;
        _allowList[0xDaBc0fC8FF02c784871e1122784DD9aF15AAF0d7]=true;
        _allowList[0x8F3c36B25D077B9301Ee6b9B69D02b18B1E390F5]=true;
        _allowList[0x11D6622d7112eF328b2a050693F871A7716283e7]=true;
        _allowList[0xFD0D1A8AD4F8DfC3e91d4843559316DDbd675542]=true;
        _allowList[0x0e815ca87DbE52A4C4322c29c768255A44320005]=true;
        _allowList[0x711E207B2fa8daceBb4D7cb9E4b0f77D98FAfA22]=true;
        _allowList[0xd11071FD3dfd4FbDF3EE8Fbe88D97894cf777375]=true;
        _allowList[0x505aA4bA3ebc89fAB940836a157c3e38f2844491]=true;
        _allowList[0x141c663fD81914A3AD328bce16a1b817A7bD82F2]=true;
        _allowList[0x95dF515077b7BFE200DC3f9C541F9563E19Aa3Af]=true;
        _allowList[0x6518Dae4d5847e1195A080611b96AED3714A8C41]=true;
        _allowList[0x833bc15c3aAF8BeCb9c82dfD8fd9474E31C9C583]=true;
        _allowList[0xF8e0cBfA60D142d4D5ef28491A6737EDF5f6659F]=true;
        _allowList[0x91E371C3CD3Aa81aF27b1602D4d8cf9D81ec5a90]=true;
        _allowList[0x76e469dB0E97638a92532DcD132b348F5CF48037]=true;
        _allowList[0xAA4e17A7a9f3E46339715F214D261D139805E4a4]=true;
        _allowList[0x356663f9D20D7126f0eF4226377bBa7F20708C21]=true;
        _allowList[0x56Ba5B0Aad0298b4aEceC0f307CCd0d7d6163915]=true;
        _allowList[0xF1a9F5AEb0F975489aC2628A22040Cf42E9fE8DD]=true;
        _allowList[0xb8dB0BFD726D774C7A0c659503376d3225cF9B7E]=true;
        _allowList[0x5Bca4075dFC8065235cF75C6b15B410e62845Fec]=true;
        _allowList[0xDE8cc955b627620A82eC95D5DBF8f6fCedEEDDED]=true;
        _allowList[0x7BaB574D52834E25aF94F265Bac34A971d299139]=true;
        _allowList[0x2a00F63Af45627fF351549106eA735Bd973Aa86E]=true;
        _allowList[0xc1849D147Dc883E5B5d4923aE49234A4FE8ea1ef]=true;
        _allowList[0xB8a7d78021A83fb29263D0c121C839C96CF07Fc6]=true;
        _allowList[0x948Cc15dABF83047219695645f8f9416b7aAa11e]=true;
        _allowList[0x39432039ddBd6fC67668386C897e54c1c5554CE4]=true;
        _allowList[0xf8439818Be6b8bD15aC7b2096E4a4325389A1f91]=true;
        _allowList[0x764aBE778aa96Cd04972444a8E1DB83dF13f7E66]=true;
        _allowList[0xBa595D92A314d7da8D31971BB227c0C002a04041]=true;
        _allowList[0x007DbeD1B4a125c45DF88F3FFa350ff70c94DD9f]=true;
        _allowList[0xbC6e70CB9b89851E6Cff7cE198a774549f4c0F0C]=true;
        _allowList[0x5043C8e2F1573E7A1A009Be23f2C31266f1948f1]=true;
        _allowList[0x9Ce6840743F3d01550AABAC539056ee7258C13cA]=true;
        _allowList[0x1Df722258cD703Cdde8bac7C079e222c4b145BBd]=true;
        _allowList[0xB830B2FD1518B04310D264704A4e46f9E083B41e]=true;
        _allowList[0xC7bE5A69F0Da5672E3ECfaaf5529b5FE81D803A1]=true;
        _allowList[0x6f5DE938cC4204245D62051c13c391f149c6e092]=true;
        _allowList[0x362bD4F29D03d68bF5b1b6bc118739f0e7527f15]=true;
        _allowList[0x3632C0ecCB5760Db0b049e3dF9fb1dfeD62a6237]=true;
        _allowList[0x6c90a82B53356CDBa4a1D0aB49D9BA11dE2a722F]=true;
        _allowList[0x0aF0CC88182856aFD7f0d5D953c76673395fe85D]=true;
        _allowList[0x86aD40B7B57551402E191eB2E51dDe23DEBd9E13]=true;
        _allowList[0xDa8bFCdC68A8174B4BB5cD53cf5BE825FbF20dd2]=true;
        _allowList[0x6B605318017255D7fA0840Ae62Ec4ec1950Ee9E7]=true;
        _allowList[0x84179C31f79683C7aAe040D7c9c05789BaCE912a]=true;
        _allowList[0xacf9E2d1fEDEDe1893F6f667af8110B5500Ff43e]=true;
        _allowList[0x69B9D379774926cE40bc9493C8BB8497d1888A80]=true;
        _allowList[0xBF64136ccEB3158E8d959C2619326f6877B7f239]=true;
        _allowList[0x76d06E8E4cc5b949F2e668E98Df62A00B663C6e8]=true;
        _allowList[0xc44e64a59510b626AD49F205b2FA5ee1B2781398]=true;
        _allowList[0x6Ff412F54E10588A2CF0442cCfB228f866ff1684]=true;
        _allowList[0x36c5c9ec647c0C6DdB283465dCbbA175C34D7125]=true;
        _allowList[0x1bb6Ad7CD3cb7C86e1a50A5a5E956567D47EeFd0]=true;
        _allowList[0xdC84BFCF2DCb37f7F30F8fB64F823794C84c6358]=true;
        _allowList[0x2a0e4ef6C7693Ad911Ee2d3A289f2707296F633b]=true;
        _allowList[0x647FCF04eb545EB7eCd2C0987f0D6e742A1331ce]=true;
        _allowList[0xf74404BCC86b9408373E8D081575bFfB9FDD6C98]=true;
        _allowList[0x99B937DB7E11f1Abe6ee1795317912BE46E20140]=true;
        _allowList[0x3Ff74F5524259b4b5e3b9163D8a14B42deFb9a71]=true;
        _allowList[0x5d676c01A602E478d7a345454bA1495794cc91b9]=true;
        _allowList[0xFcA5ea7c64133F2fca39aD099234b07aAab2df61]=true;
        _allowList[0x338Ac132E077a14A657B5515EAB9E337Dfa023Ba]=true;
        _allowList[0xe8616eaB82Aa739E532ab72F75bebb8e3238c583]=true;
        _allowList[0x748b19a319E4b11341Fb967F92489377816C2159]=true;
        _allowList[0x9fb622b200D7403Be7c596164018fC7F39aB1536]=true;
        _allowList[0x41477FA04d85cBB4f030eD577f5950C039EAEDBd]=true;
        _allowList[0x14669Df8BFcF56cA60dBC3397B8e8f0c0aD23062]=true;
        _allowList[0xC1d65A0196d6adB817368324E1859C1c8C060068]=true;
        _allowList[0xDB93342558502d4F522E774Eac55D71BFF8e6130]=true;
        _allowList[0x874A26517f82F96114F8d4A741424D88C8aE4a03]=true;
        _allowList[0xa0FAf6a7f900d5a10E7a51592b39858Fc0968866]=true;
        _allowList[0xbCa5a56465c9A3f3A19C0617ac9AB5f56877D69E]=true;
        _allowList[0x2D09b091922809a2b0Ead12866211fB4389A256C]=true;
        _allowList[0x7AbCA3CBC8Aa182D10f742F72E2E8BC68c4a8839]=true;
        _allowList[0x9CED3bDC0e6ff65C3f072b0b5527184843Ed4eaf]=true;
        _allowList[0xCA1059d0b589180FDF870D12F6B254F235Ca7255]=true;
        _allowList[0xaf15947D32b82BC053E46Ca380664C8EF46E70b1]=true;
        _allowList[0x8C5fC43ad00Cc53e11F61bEce329DDc5E3ea0929]=true;
        _allowList[0xdD5BA3024D0CEa35007e07C2D795BD9e93a4c127]=true;
        _allowList[0x03f4Cb9e297ea659F30E09341eE7155a7d136398]=true;
        _allowList[0xbdce0d84ABb90AaBcC1a530475A6b0E0E4e39aB1]=true;
        _allowList[0xfD72ab50c5e80a07a19ae8Cfd6b23C4116FeCF62]=true;
        _allowList[0xDb54C320A0B1e994D2bF7dd2eC939F6c25918011]=true;
        _allowList[0x327535dF246Ddbacb25D86CF25276ba626d9e29d]=true;
        _allowList[0x3f623a639DCfeBDc6F96d8A1e445fbC3403662B7]=true;
        _allowList[0x4460a4bD792585b7b1290A1e5C10A92D71d2d8f2]=true;
        _allowList[0x8BE62F79Ea0Dc4bf199Dd65363683Bd892E17f66]=true;
        _allowList[0xbBa1D8028cC2a942ea678e6fCBc17946784b1030]=true;
        _allowList[0x677620f63dad02D3d8Ebb04e4eB941799aC811Ee]=true;
        _allowList[0x7112FDF95e273b82e54A66E555611578A31B2E41]=true;
        _allowList[0x2363bEf09Bd8C872228F8A8D42B7b205E8AD4AC6]=true;
        _allowList[0x1533eF8a7BC85532a8515DF6fDFb15d165D0d03c]=true;
        _allowList[0xf9A95f15d178e0afFf60c543A9D7117235e54204]=true;
        _allowList[0x4cB298bB77b98A0F68B47cEf292206d3855f7059]=true;
        _allowList[0x5Ec0D096f8ef2Ac2dBd3536e3dFE2db1361BA6a7]=true;
        _allowList[0xb708E5Fc7E0916AaC3e2B0a30721F72B9AEC02bE]=true;
        _allowList[0x84dDddBe34C36c894347fA3649B0E25550dEb4d6]=true;
        _allowList[0x720Bf57F67b6B00B97cBD9d967a0Af2427352435]=true;
        _allowList[0x8E4E5Ab35103ea35a5FDc77313c50Af9Ff060608]=true;
        _allowList[0x19e6700Dfa0dC3F288c3cC21c86016546d51B3cA]=true;
        _allowList[0xAd16A82eC6d12367491e39EAEf6C6a626F2f7748]=true;
        _allowList[0xe28CC8f24edA328eB311C4bf03BBa2D4bF15500F]=true;
        _allowList[0x490262214be7B9486dbFaa547a947ac913889DEC]=true;
        _allowList[0xD7bad5Eff26389B4eE7822690207b13106E03D43]=true;
        _allowList[0x86cfe5B9D71a61EB489fB323D8B839D89983fb37]=true;
        _allowList[0xf04C8f815878Eb09B8E4602Ffe780aAC818AE6b9]=true;
        _allowList[0x654fd4b0c2e82cD869a76889CCC14F52Ae282f37]=true;
        _allowList[0xD8c88B8681B3F699d8DAe59ec239fB0925acC660]=true;
        _allowList[0xB3B3eEB4D999AfC09049F8Df15A6e286c0f212f1]=true;
        _allowList[0x76Bc581fE5Ab1235631a18C39100065a770482C8]=true;
        _allowList[0x04F581FF13481Df7E55fD6d4A102277aa3eD3ef0]=true;
        _allowList[0xA0223601E0AaC07346B0EC4bCa352Bc74f22b099]=true;
        _allowList[0x77E1b087378d0A12Ba3769D46A983A8AE2E61e69]=true;
        _allowList[0xe4f0b2b776E779dE24B6B62D98E58c1fBC786f35]=true;
        _allowList[0xbb44530e21b3A5Aaf0c86BA10D605e1396bADD88]=true;
        _allowList[0xD982987638b66E72a1241A81a965050687d09B24]=true;
        _allowList[0x868a8b040653FB80eDd83A211f8Cf21f8653F970]=true;
        _allowList[0xf6B6Fd916852CF7339B0b5d136fCE5ae29a80780]=true;
        _allowList[0x4c9A65Dc425f512e4b4B57e47fd760a0A5123bD4]=true;
        _allowList[0x117D4EA1f4498Fe2189BAf08f2DC02dCDD7507A8]=true;
        _allowList[0x5B37B7777F13a8659a10EE84e9102b049272EdA5]=true;
        _allowList[0xc3f71D25b5b15A6BC0d1b233C23e2Ae31334fA6F]=true;
        _allowList[0x06Ac3826c858C64b5755E292d17477090d3d2149]=true;
        _allowList[0x222b17dE9d7D549f6212E674964e7Df37fEF25D5]=true;
        _allowList[0xc5699f5a395234956FD8B1Ef764eF74A4B895631]=true;
        _allowList[0x831Ee284B5068A607bd84F16975Db3A867aAf50D]=true;
        _allowList[0x028368E212809C44Cb9E2D7738481f7fACc5590C]=true;
        _allowList[0x2E83B8B7205Cbbb2dF2b1160099Aa2c727351959]=true;
        _allowList[0xc68E624a02d76FEa3bC3Ca3D8434167ee943D403]=true;
        _allowList[0x01b44B1018C0629eAd48fc88C59d56F3894b1535]=true;
        _allowList[0x4E60c3a0A1a8ba1987f03f971fd2a63c80C718c0]=true;
        _allowList[0xb85633D34203B20F57b684F292fe3F281e7b8713]=true;
        _allowList[0x741F14A7Ee342bf0A97615843bd5DB57CBc7Cf5e]=true;
        _allowList[0x3727234959241f514CBcA2b2C44D18Ea50BFc6B1]=true;
        _allowList[0x0BF815975c7b1ab2c5Ff2E30fd8e3bC4a4A67123]=true;
        _allowList[0x5f38c1E1E0D31DbE6CEFf00F7dA7E1cC200A43b7]=true;
        _allowList[0x81FC4AE2e1795Af7f142e31Bf9Ec5C15363c0eB5]=true;
        _allowList[0x57bBa57417e320671F1bA999e7e686923299EaCf]=true;
        _allowList[0x7565DEdDCB83a14B185eb9520914bB918cDfE983]=true;
        _allowList[0xD4dD6702b064bC2EcCF58ECFe1a364B35a6511b3]=true;
        _allowList[0xE188b0Ba723260B14D5C61DcF8e7a69Ab4B9cF41]=true;
        _allowList[0xa2eB54B2CE875A19E82088B88ABF2a1758836760]=true;
        _allowList[0x323D153a48b42B3c530bf860b1A647262642B171]=true;
        _allowList[0x0f1154dF03359ad8653c694019BE41A8C39F413b]=true;
        _allowList[0xA21A6f85e9E782427491C20361a84Ac6B816fa38]=true;
        _allowList[0xe6d029fD16f6fb0E7EaE3553FAd5De209Bc03d6C]=true;
        _allowList[0x8c08BA3c775C125Bb2afa46e0e43698F216B6789]=true;
        _allowList[0x990FFe2980D29eAA271A9710F1b8e38a1193Ef57]=true;
        _allowList[0x1d7F4bA2997D644d21195aaDA3F2f85F24330e6d]=true;
        _allowList[0xc9241fA1cba2b3755b154F3670E2754fd86f9a4B]=true;
        _allowList[0xCab38F1c738042E1e1208DA1d4C6e53Dd83C80dF]=true;
        _allowList[0x871ABEA67Bd376A8484E8dE649c73965a0d3e794]=true;
        _allowList[0x6A45B137c9681cf3CF531Eb61E68545779FACC36]=true;
        _allowList[0x7c54B32219fa879Bff62e55D00A81C9B59c1fc99]=true;
        _allowList[0x78D4e8fDC6E5d03e208Ca4E0FcB7D9CE633378b3]=true;
        _allowList[0x62B5bD7F04Fe783796810b2526470dfdE73dAA49]=true;
        _allowList[0x32debd59217e4adf5e8A942166D4765C46d82B82]=true;
        _allowList[0xE136C0D0039aFAe187F022a5e2F37B8Bf5d176a9]=true;
        _allowList[0x9De33BeE1353E65fE86Cc274F86Ade0439021576]=true;
        _allowList[0xF2c519b1633241cDdfE21CeCaE1A5B0FA4C776b3]=true;
        _allowList[0x8E63E4376dDE62cb82f5a91C4bCE4156457dEdB1]=true;
        _allowList[0x36356e0284Dc9aDccC72649833d453Fcf229b630]=true;
        _allowList[0x16951212197B6E995aB4ceCC5cF6dbeA976782dd]=true;
        _allowList[0x61e722c09Ad1F625dE6f2A1543577a67FAf31119]=true;
        _allowList[0x560772126fBc21bF188AABF05E714299edC7bbFC]=true;
        _allowList[0xBcE3C9499752dEB24d02AC2daAA96739F5aeC4Fd]=true;
        _allowList[0x8121b28051B4B1D2840A5b0E00A4A59b72C3d169]=true;
        _allowList[0x64932F86d69F2717307F41b4c6b8198000583c63]=true;
        _allowList[0xB3Fd0c9647ED347AaeE9c2DD8dbe909BB26272c6]=true;
        _allowList[0x7695Ea5De20f829Eb3161B6D5299D94Cb68F0E11]=true;
        _allowList[0x2B935746fDd506C4887a2ff87E4559FAbe2aCa13]=true;
        _allowList[0x3f9505a255174D66c533cc91099c126D71E79406]=true;
        _allowList[0x7dA940212642d20862ED2f479A56Cc3eb1Ea3c8c]=true;
        _allowList[0xB4725430bce5f9CEaA3682933fa04b741a44cd30]=true;
        _allowList[0xB87991FeC50Aa91F5dEe55Efa70817e750029789]=true;
        _allowList[0xE14dc6FD0A163Ce3Fba49f4B2B73941E3Fb7c0AE]=true;
        _allowList[0xBf44C636A4A4Bbe257a87067B25c4C875170e04D]=true;
        _allowList[0x396155c7F15ae8Aa634FD1Ed15fBa3Ee7397AF36]=true;
        _allowList[0x22F95C8bd456b565BdB1917aba5B0611C105Ad5A]=true;
        _allowList[0x996e778ff6e7Fca4b8FCf8a9ec2E85C878241bC4]=true;
        _allowList[0x62FA9f3548611888BC96F5aE5A2eCA1EF91d4b0e]=true;
        _allowList[0x361e8ff276689F476B9B942a67fD2ca69649389E]=true;
        _allowList[0x61B857bCcBca5fFA1412836e1b78F238D1085AEf]=true;
        _allowList[0x37Fa3D9B5a7522153259EdcAA22DE5ED9B3a0150]=true;
        _allowList[0x410e867347634a2283031D327461078a72c38a0d]=true;
        _allowList[0x41d4e731f6a555BD3a533fd2B963185793e56f31]=true;
        _allowList[0x1cCf769B05f509c9FB51ef4911d3941d06821901]=true;
        _allowList[0xb3DC6Ff7C5BB3f1Fe7b79DEF802048EaD10F8690]=true;
        _allowList[0x012E168ACb9fdc90a4ED9fd6cA2834D9bF5b579e]=true;
        _allowList[0x063a48F3b73957b6d0640352525Eae313D4426c3]=true;
        _allowList[0xc309efF4fC1A0d694D76d982188b18a6da7bb756]=true;
        _allowList[0x44331702C2f80dfFa21e3e4934D601648ba5cC56]=true;
        _allowList[0xCDf641863B76E5Ef6A2D766B86bedacBD16CeADe]=true;
        _allowList[0x9f1E19C805Bc2DF9D0c00d6622E6Ed386A0CA30D]=true;
        _allowList[0x30954DcDfBc971901E9Cf6B9EfBE4F1eEE10d6aE]=true;
        _allowList[0x311b0200653e986CFFa77Eb56bFA6cB191b5D190]=true;
        _allowList[0x8976bbbcb15e79181725FBdfe2959f89bE041a92]=true;
        _allowList[0x26c9Fc612b005781127246BBc5dC39f823E3106E]=true;
        _allowList[0xC34493729B06A62efb5bc10F7d361FAdDD546562]=true;
        _allowList[0x2A80e679389a3de24dF93a8F511D04130F24f591]=true;
        _allowList[0x42BBf5f71C234284265D61BC77f564209B1140dB]=true;
        _allowList[0xFB8625CeA73cdd67b737b94b10CBe6554aF279d4]=true;
        _allowList[0x5ce7df30118dBB34D29c2a2E7bAd3B5b98E9c926]=true;
        _allowList[0xF98dD7e0d41586ab71F843df3F29723ADa890727]=true;
        _allowList[0xf8b9c607675C554be8898e874338355B0e63A7F6]=true;
        _allowList[0xba69593F1F51D4b2ff0a73298c8bE0C8586be931]=true;
        _allowList[0xB7972C694cB76d4756346A9a7235d90064D8bd8B]=true;
        _allowList[0xc8ba12882C3547B5fB3bd215f474Af365A55157a]=true;
        _allowList[0xEfa131b185De4F8965b9c1A6f02E6264CAC36a28]=true;
        _allowList[0xe028498570b2727d620FB288BF1fe37B45bef041]=true;
        _allowList[0x497713ee53C228Eb4B04ae8bc7a2E5b5898CDFAb]=true;
        _allowList[0x8753982d800bbBF1fAf478eF84C3e96F2775d3B9]=true;
        _allowList[0x3B334052bc8d623d7733c5318893ae4f33776959]=true;
        _allowList[0xbb0a7d261F4b6102e5A9592507a39f19758e8fE4]=true;
        _allowList[0xcc0cc3eEc0A10374819D363DF84148a6ad2399D2]=true;
        _allowList[0xa9A0Ac2b50cE6F166d169c3D3178F94251ec23C4]=true;
        _allowList[0x3A78a990DcfE1fa140701CB4A02c7B9D8c3f3E9e]=true;
        _allowList[0xd2F17ed427f0fE28b243854a6d615D3259D69243]=true;
        _allowList[0xaffC8B03f84E1BCdB759378da1667301a5ac51F2]=true;
        _allowList[0x3a0491E718988C77394C12eF639C9bC424C536dA]=true;
        _allowList[0x09f95bd58F8714D231809440a459e2675510fd4C]=true;
        _allowList[0x3fd26eDA04344456a3768Bb8504D24DE81Ee7B6b]=true;
        _allowList[0xAfA4CB60EC55adD92de2aD5318562c175f95eF23]=true;
        _allowList[0x12B668eB9Ca7354B2f05361E3AE12b27547A4986]=true;
        _allowList[0x86E45049d74550f86D05916663be90b7A3881440]=true;
        _allowList[0x8a1b6a1134628E1F3827fcDbbbDaCf6A2C54C5Ea]=true;
        _allowList[0xB56332AfF8018B5780305CBbb4b577b6FB8c80D2]=true;
        _allowList[0xE9Cc4F546CBab8A1BDF7e6E3e37851C6250d28F2]=true;
        _allowList[0x880a42D5aEcdFA4226Eb2F99a04a75baFC336780]=true;
        _allowList[0xEcE44413e685659eE964757364d70B062505fEef]=true;
        _allowList[0xD4F17B038B10CC720778DFf27Df3E47D637d6cD9]=true;
        _allowList[0xe6660Fd8d59F97443ab21905D8CD8E8C5A12Ad21]=true;
        _allowList[0x49b8E54031482d1A516bE9197D6f1B71239E00E8]=true;
        _allowList[0xCE4569F6639a3EE7217aE24b32bE28d4c3f6D19a]=true;
        _allowList[0xD502d966f2B50e4C1768efFe99D4C7C90C3a7625]=true;
        _allowList[0x21Be698347e62235309A0FBeb98D0F60989d68f4]=true;
        _allowList[0xDe609b02125b7574C5126b3c73Ee65332c012642]=true;
        _allowList[0x057D1e845402b371EB793135F877966B47577e28]=true;
        _allowList[0x2986a4ccF8EaB3a44DF43A655dC9ad1777Feb00C]=true;
        _allowList[0x2308E386896F78ad4c9675EC22401B287C72eB78]=true;
        _allowList[0x81a1B8ED2D0449a50168C6B410a4De24CebB9f70]=true;
        _allowList[0xF93962fE1C9C5085D429BEb407a654EdaC210e56]=true;
        _allowList[0xD34e3c34Ae9828dffEDB9a2f236aF47119A113Bd]=true;
        _allowList[0x685408262D49784be403455aE749ab0b81D5E110]=true;
        _allowList[0x92A021C3B21dffF0192175831791fA261bdf7018]=true;
        _allowList[0xEAD3B6578c71117526A9C972c0932C446320CFb0]=true;
        _allowList[0x7b6555058649A1a63a6EA4fC1EAfd28e78949a0b]=true;
        _allowList[0x264b57Bb121589Cb210932a81Ba482f0a9873eeF]=true;
        _allowList[0x507568aCd9F5C2982c97b3370912Fd5b401D98bd]=true;
        _allowList[0x263aE5D5c93573CAC6392Bf65815acf6570f8637]=true;
        _allowList[0xE6316b387E4D8951De278297e3801C02395F8803]=true;
        _allowList[0xbBBAA9b374136A2FDEF831758Fd6D00f0aA116F5]=true;
        _allowList[0xA2dEbAcbF2b543b6E4CB5D4A4F26220aFCA4e9cB]=true;
        _allowList[0x905362Ec4410D0E9295d16acC584d488ED2819A9]=true;
        _allowList[0x54505b8c1447678E744150d4BCd9261D589dcD66]=true;
        _allowList[0xf92aA16174c441766e07a59600eDf291B4e01a43]=true;
        _allowList[0xA44804c4d3d6D9Fa37102fD0aaE39d23de7a3839]=true;
        _allowList[0x14AB9F431B7D25FcAd366EC9511DcE38E229745C]=true;
        _allowList[0xeEBb3e1d120aFEE9004d4B62E1A6eb2Cb0FdD3F8]=true;
        _allowList[0x1597b351f2390a8bFBdbFcF88179f3bDc5D2Ec82]=true;
        _allowList[0x0A3A0cF2B9f37e15d3d559B85b8A26a3099b0894]=true;
        _allowList[0x49594Fb73a7912Bc6dA5D33a1060Aca029907086]=true;
        _allowList[0x445537dBfC407673d66E2c8A86216257aDDd91C0]=true;
        _allowList[0x71eFEa85A59b461853dFB6aeDf1F06B6d6E89E92]=true;
        _allowList[0x759EA6dB5bf409fc91551a726092726Bf58Fff29]=true;
        _allowList[0x26ADcf5EB1FB4f87202Ac772c009f02D51c89e1b]=true;
        _allowList[0xb8d24EAc7840Fdabe2A96ee88169c8D7a205a4D4]=true;
        _allowList[0x6258D54320e3281B3e0fceE33363425A60845581]=true;
        _allowList[0x274316a1359b0df41e88e06cE2d33Dab6B5cA772]=true;
        _allowList[0x0c3699715DE1739eF5a8a0F3a667a7092EE7e0B4]=true;
        _allowList[0x4251EF8361a471E51188fD3dfCBaD4d5f977D9f0]=true;
        _allowList[0x01d08a68a55b010ab4B87b17064125Daeb523A3C]=true;
        _allowList[0x23be5cC51661d247e7969E26420274cAdD9347Dc]=true;
        _allowList[0x9581F459897A5b490332173B90Cfde37229A4Dd1]=true;
        _allowList[0xC2bD7faca51549dbB8E701f48baAF5C135374613]=true;
        _allowList[0x78FA3A61C93666882b56ef62646b8E9F39150A50]=true;
        _allowList[0x523D68f55b6b4d4ff76b2a3e073BF334233Ac86f]=true;
        _allowList[0x8C04D9E45c8aF805a5877B7f6611e7bD2Bddac38]=true;
        _allowList[0x97E62921B46E0f9048CF505A13C04e11D033E6D4]=true;
        _allowList[0x4fB0b6d348bEBa85D4ee4B45d00FBd1824fBe2eA]=true;
        _allowList[0x872eab8A707Cf6ba69B4c2FB0F2C274998fEDe47]=true;
        _allowList[0xe91F0085F5c3e67C8Ebd5c8f6E7f4d884452DBAa]=true;
        _allowList[0x9e7f531BF5676aeE365375f362C4F9c7110f9d6E]=true;
        _allowList[0x09DC47C3C21a11f41e25a058C1DfC07951661C22]=true;
        _allowList[0xcB1fAe08008B69e023Cd16BA9024650AFfc7d0c3]=true;
        _allowList[0x78Ee5e45B0A5b85CB282C7a9009fF9A40C0481AB]=true;
        _allowList[0xfeA31016bd0C4B9CdFB8b683e39901Cc99B1ED93]=true;
        _allowList[0xfc9B347bBbD747595EaB7D8bdad60585ddFE5784]=true;
        _allowList[0x668F386b1780A757fde264eaEfD7877c263cAE2c]=true;
        _allowList[0xC0Bd088d18791Cb74e9d75AE9fA9B40B736CdAA9]=true;
        _allowList[0x384eeC1dAA1a3Bd58430bd5117B5D8658b121983]=true;
        _allowList[0x286A6f617cFe518f2F5bb67686a460141A7B89f7]=true;
        _allowList[0xFABCC55906b142dE23EFebb97A107e943Fe5BE98]=true;
        _allowList[0x6c2f39dF4e989172647E033bB1ECB79eE91e67D7]=true;
        _allowList[0xf19B975AB5B1ab459eE989f1875C80FD24359b4E]=true;
        _allowList[0xDfB67117B3C36d6c0584e8b268F6a6a3Ba4E41dc]=true;
        _allowList[0x9aa5075ff25c6798355f2BD49bA2f15EdD795180]=true;
        _allowList[0x3C34634763424d775111d0685E2d7D11Ec8C41A0]=true;
        _allowList[0x2E6d1Af99C10cac1Ec4389e86a90c710D7c10b8e]=true;
        _allowList[0x3bA8C4067C4F245d8FFFB911969fbb0AB492cba3]=true;
        _allowList[0xF83787D15cadd1cAD2158646E7cab858157c8D7C]=true;
        _allowList[0x44de03c876d575344417FF01e8A943D561e8df5a]=true;
        _allowList[0x51380EB9DC67A2Cc7A2fE29eb3174CABa90C817E]=true;
        _allowList[0xFCb49314d478fb81caCe751A73272F1bA1a15b01]=true;
        _allowList[0x2380CA49Ed8e933c97905977763693E5CF8770f4]=true;
        _allowList[0x265BCCe851F84601D05E122C40187475C98BCa10]=true;
        _allowList[0xa1a134BDA79F8CB9c3C5E419E88A85a2a97b0917]=true;
        _allowList[0x734ebeCE6D698a50CF90aC9bF15e3F16dC34a204]=true;
        _allowList[0xBc2c226364fBdeD527BA8d13FF5af7fB359A0E43]=true;
        _allowList[0x61B4e7cB4003a55dEbF52dFc5ee3Ee1151287d1B]=true;
        _allowList[0x3c3fD843d1b075af719d086DBFE5aB33E47F6aE8]=true;
        _allowList[0x30f0d26D5b01Bca26b50415DE8F9AcB88C2aC744]=true;
        _allowList[0xE1c5FD5cBE3Ba9fB3E418B1B2C7241F05E794b8e]=true;
        _allowList[0x99526b337AEA2eF72F454dE80722C98Bf216E6F9]=true;
        _allowList[0x5A0eA806A8F713249ba650eC859EDc9Ab9e78f08]=true;
        _allowList[0xA43711F5DCc3559a1E07eC124fd167e26c9BaD43]=true;
        _allowList[0xCE1989e08253d27F7Be389692B59A60353424420]=true;
        _allowList[0x348B1D9e9e7E837228AB17e42602160a654fa781]=true;
        _allowList[0x6d02482eACF2E9F5D97160231291C26EBCA8De19]=true;
        _allowList[0x68Abb61E97fFD7C59D6112c01C622E76187C26Ff]=true;
        _allowList[0x54EcaD032486a010E5378bfB0aA2E6a752f335c4]=true;
        _allowList[0x5C1107B352514d158d80429b1B5cf50968F7fa9A]=true;
        _allowList[0x8745125effd4A86f69aeE71bFcEa9768AA519E0E]=true;
        _allowList[0x2b212c0c6f4eFcEEf25Fb5B00F7130b325f96284]=true;
        _allowList[0xA32729ea990d4005329212e8867FE3eCDa8EaBdf]=true;
        _allowList[0xAF42E51B8d38876d6b3aF4caE83AA513C35570c3]=true;
        _allowList[0xDb8286D6563c680c22b91E715d628C2bF232FDa3]=true;
        _allowList[0x91832bcd20d938Af88462F2D1B41abE2397fbA00]=true;
        _allowList[0xa843F841928094844A73A4c6284718DA88f5713f]=true;
        _allowList[0x679641F9450609D2Ca03B2C468AC8631f87d8Ee6]=true;
        _allowList[0x9bcfAC3a3f7a58Ca04ccDA110d87CA40D862c970]=true;
        _allowList[0xBB6B8faA2651A6c7Fe8fF56A7c4F96d9325C7B93]=true;
        _allowList[0x787e06FAE1C2139Bf8cFa2d5C5784728A6E5fc9F]=true;
        _allowList[0x7443E57a7d4df44FE6819dd76474BA9C3BE3c81D]=true;
        _allowList[0x8F383669200040179D7F9f0d58B17B975662CC96]=true;
        _allowList[0xe48EDd2cD4d82b6E703A9c3c45775d072d753591]=true;
        _allowList[0xCC3e7494Ab2c5615587d635C221b80E9eD5AF292]=true;
        _allowList[0x59994F5952d65761CF81bB00320BE7989C5DDD4f]=true;
        _allowList[0xc8cf25c6FD75c97E94d0A4edA01ffe47703bEDF6]=true;
        _allowList[0xE1f8b6d331b8c93f8f7C47b86B52cafe69f25fC1]=true;
        _allowList[0x1250DBB785833a0BBEA689298EAEEA88B6F23317]=true;
        _allowList[0xdB869ec912BBd37d322f05D3EBd845AbE19ef42F]=true;
        _allowList[0x3c6Deaf5C95717eD5442C9836dfC62C1e5E83164]=true;
        _allowList[0xdC47B7380bcbBa367671C8caF9F96F6494214183]=true;
        _allowList[0x2c79aC9f76c3310B59D4C5E3FD214a73AEC68553]=true;
        _allowList[0xdE5fB7260d57BA0E4F7F1BEAB6217f5A6cEDfE85]=true;
        _allowList[0xe68c0650A819d1c4c9f541a0dADBB457CC793419]=true;
        _allowList[0x36C5EbCfb53dBd2B304fb75C208f022430607058]=true;
        _allowList[0xEEDfb23b3CDaa722e88B082ceC11EBc6838665d4]=true;
        _allowList[0x933707B556a6d32177dB68600cD6f0e704B53FC1]=true;
        _allowList[0x96025F21F49d7f63F38e43cfC8498EF1cc396497]=true;
        _allowList[0x36f77c3cb4E777F04e12F083A255955601Fb91d8]=true;
        _allowList[0x2225723952dc1DB233A4ACD6b752729e6c9DC376]=true;
        _allowList[0xB3D2ecEf92Dd0130DdD8EaC286528b7E70df4Ee4]=true;
        _allowList[0xed11924CE2f6d832b8fb7993268f1A23770dba88]=true;
        _allowList[0x6860C9323d4976615ae515Ab4b0039d7399E7CC8]=true;
        _allowList[0x72256967d7933d87840a76b4546EA9c6f5659ed5]=true;
        _allowList[0x199C4f59804eA806309616733d9ab02F88bC8524]=true;
        _allowList[0x9DebCB17f2AfAe04bC7a0c7b66A8f4f904313aDf]=true;
        _allowList[0x877a0762FAc76005816618CaFC62223a9689a6Ca]=true;
        _allowList[0x8c80E286678eE035c29392eD3b3B5e043fD55dEF]=true;
        _allowList[0xADAae0CF49B422fB24cB988d669e77F4E015608c]=true;
        _allowList[0x9D80c6F372b13a6e58fb08df11272b8dBFAA3779]=true;
        _allowList[0xE18e6002c7Ce832b2a6A23c6C00c04CFf461A56D]=true;
        _allowList[0x736e0a7Be8c4b8E96e9E300974F68D5ff5C86911]=true;
        _allowList[0x882FF1134F17017fE2c1F4B464EEe7d4f0B0d476]=true;
        _allowList[0xF0bF1C59ee9b78A2Ce5763165e1B6B24Cb35fD8A]=true;
        _allowList[0x0c7cf2EB315eAE5473a58D5bc096aD6645bd8d86]=true;
        _allowList[0xCFf01b81fbBc4C534619918599fC4625d977F1F1]=true;
        _allowList[0x476dd09cCF3e8F1aF9f25719F76EDA376D09F4A6]=true;
        _allowList[0x9e2328ebaaCeB57FD83e5bF109e0809Bba210D76]=true;
        _allowList[0xf83a126b9371655F02F8D9486d9cCEe606DdCEED]=true;
        _allowList[0xc501B327a682c268400639f8eC3B8039695a07ef]=true;
        _allowList[0xBCb8951810Ed55010FE0F43e5B4130Ed0c55333e]=true;
        _allowList[0xDC85Fe5DE6fdB27ea980d1027FFA1833aCf12a05]=true;
        _allowList[0x57D0A76320Bb11a06f0A193b22a60441a06aae8F]=true;
        _allowList[0x7fA77093e83C9292C2357ea799AC2C57EC138203]=true;
        _allowList[0xdEf6abb057A37aeCc03E47552011b668ab5F6F55]=true;
        _allowList[0x3D7cfA343B7b87559C61D58462DdFe6D5EE30658]=true;
        _allowList[0xBD66d837A0f034e88EdeA79F7b9d61ccdd6fB0CC]=true;
        _allowList[0x4E7932e035489ac4c9E5d4c849C4C93C623ccCb3]=true;
        _allowList[0x2B4f7FEC7D0C9D94993EBB3FeDC0F87f0cEB7e5c]=true;
        _allowList[0x3a66F923e59E969609CD24Be579084e363cab0Df]=true;
        _allowList[0xeb90D706F04fBaD5feFe8891045eecBB2dD783C6]=true;
        _allowList[0xe4f04b5c35b9bC0A3704a77Abb2c990298E5605A]=true;
        _allowList[0x47493C98c663De61092a61365CEc07569703e761]=true;
        _allowList[0xbe69A9Fb57aBC64AA6758f97c6a36Cd97Da8B3bC]=true;
        _allowList[0x1afd5184AD81D4D27afE507141Bf8013E3C7d5FC]=true;
        _allowList[0x9A0078620b68CAEA268FdC85395B4b2fbE435EDf]=true;
        _allowList[0x9E3D6025e4A8AdA9F437E5b17aC3f549200DaC2A]=true;
        _allowList[0x22Cf007B5C2245211fB05B9F0fD96d3B791c5f81]=true;
        _allowList[0xc906B0c46fc44a44D9d55bc09A8841AA13B76104]=true;
        _allowList[0x1569e9232773cb532c027Ebe262E699153A71D70]=true;
        _allowList[0x61Ccc816EeEA3D14A00604EB0e85eD2962315032]=true;
        _allowList[0x9004Dd38aB40d488151059599a7275eF0915D5F7]=true;
        _allowList[0x660a60B72FA92132E5e2f03ca6977544a000893F]=true;
        _allowList[0x4233C93649444871FdB2a5bB63ab548F41E9a71f]=true;
        _allowList[0x27eCe61C5bC34809DcC368De12C4f39614f77376]=true;
        _allowList[0xC6239cd97a08025C57a0880619Aa17BAbB165d36]=true;
        _allowList[0x41d9D2eF3A1af44613777418Cf6452170d78d844]=true;
        _allowList[0xA2dD3dD77e83fc9B7423d1b089D178a06acaa8B1]=true;
        _allowList[0x2251676d1Ff6FA9A10878205E5107a399BDa4F16]=true;
        _allowList[0x34Ab707d42717043a72Afc54DFF1DDDB1833cb0B]=true;
        _allowList[0x01d8978564fDe99FC4609892ac7b605f85600803]=true;
        _allowList[0xA21b8C1253e0d9287bbda6ee42cB583A338d5600]=true;
        _allowList[0x43d3086F1f329227dae2341A0dAF19132578C867]=true;
        _allowList[0xb8A79871C8e2CADeA84cC90310eF233Bc764D5eB]=true;
        _allowList[0x5375B3ECC262d21e8Bd00F2681aCedc53765F4eb]=true;
        _allowList[0x218d5638Bf697e22EbB3CD4B6fbf73DCD1A8F035]=true;
        _allowList[0xd7c82352118A8b68a3043266aebc66e148Ed3755]=true;
        _allowList[0xB14Da89AeAA3fC9eefD73E0D93A7952ee3D51E66]=true;
        _allowList[0x0604E3F8dA1771e17b9672aA18A705001ce30Be2]=true;
        _allowList[0x2535314106f7A3E8390B847a918Cc5D38d046f97]=true;
        _allowList[0x1CccFDBaD92675f7212cb264e4FdCbd8699a81dE]=true;
        _allowList[0x7e01EbF8Ba839E71dCC663cB2E7eCA0eA90CaD6F]=true;
        _allowList[0xaa114724F2bCBD859d01585435E3076671314D2E]=true;
        _allowList[0x52F87DEaD80104256A9A35295bd4155C75082E7c]=true;
        _allowList[0x9c0089dfF60cF55854Db24b1f560619988AdA7F3]=true;
        _allowList[0x0F3E5F4D5033C8EEAe3b5feac3C6c51A23c7A852]=true;
        _allowList[0xDDC628Ca39016AF4283B83EdF2d426A2EcBB732c]=true;
        _allowList[0x8A87164E62c031fc6eA951dCF827134015FEFa61]=true;
        _allowList[0xdbEFee517025559E7898d3a48f18221C32D3Fcf5]=true;
        _allowList[0x5b20b4bFe7A3F32969f53Ae43c9BC8696553C5aa]=true;
        _allowList[0x7E719b6c7f81a4C3b572cB1b0F102f9921306787]=true;
        _allowList[0x14eF92bC08611eEBaC0cED6373A0c08034848948]=true;
        _allowList[0xC091C86f56Ac120815A528d3F68D9Ab1a3BE7BA8]=true;
        _allowList[0x3FfbFd5d177b5D306A2bEfCB0d3F9613d6F32eD2]=true;
        _allowList[0xF7b617acA6075909A78cc4921C909b90010E55fd]=true;
        _allowList[0xd4faB4f5F5DDb5f459b85C48aDA8FBaC238f0Ab6]=true;
        _allowList[0xcd8Cf64b220E3d10fBB175a22BE7c42E8AcA0014]=true;
        _allowList[0xa0558eD99BFA1260421Ae7a0d2069899EDa68021]=true;
        _allowList[0x2D5CdDa4643beB674182b9D75C144AF39cC7196e]=true;
        _allowList[0xF98f6d9B5B1d4f226cA7E4fdC20b75d44fb12B58]=true;
        _allowList[0xB5BC2701c6f5373ECE42F7DF157dBDee8798af67]=true;
        _allowList[0x9D1766d3EB95D68A4c5B82F904A93424DBa230e9]=true;
        _allowList[0xa925E1fDeEE5E2BF60cd257d1FFCFf6f4d8775D1]=true;
        _allowList[0x5370Bb6ADc4818B1641D1105bfe0984B684E3661]=true;
        _allowList[0xE996929df7b68e2eC2F57432e9BB4Fb879aEDA77]=true;
        _allowList[0xFaf6bb8F1a300130fB9dc582DC8363a50841882D]=true;
        _allowList[0xa61696402876aEb0d23E343DA8e48A5C05eCa45F]=true;
        _allowList[0x4ea54430e7D588Ef5d009C1b9d7E4d06a35565b5]=true;
        _allowList[0xa97c7af7532e661DB802069571920A718338618d]=true;
        _allowList[0x2c7F66A4F33ec1BfB6CAe0326da665133Bf6d830]=true;
        _allowList[0xf8091A1A3055C9a8a7492E7Dcc31162D000747C7]=true;
        _allowList[0x13a1DB3301fE0dd554aA4Cd4fDA4e27fa1f63Bba]=true;
        _allowList[0x7b17dF087859f731a2097fe040a1af3B70DF3c95]=true;
        _allowList[0x54E26f921313E98CB9e263e64DDff83239Aa3837]=true;
        _allowList[0xf706C06CfcDa4C03420a532361b51cE30885A187]=true;
        _allowList[0x920450c569E148404BfAD97B81728262230F980D]=true;
        _allowList[0x152C3d6ADe7424e43763ec2A582Dd411459b229c]=true;
        _allowList[0x42bBEce6eEa8F3E90466E798849838Aca9e7181D]=true;
        _allowList[0x156306d98B426521573e4789F3de09850b03D309]=true;
        _allowList[0x4e93aE6aD41f4E32A210b0067cd35dD1CcDdb8C4]=true;
        _allowList[0xF0e2ac11c872E5B993dCA0CAb8c41773F529f0d5]=true;
        _allowList[0x6e19cE8aF8c4Eb668840680a38C12FD7390Cdc42]=true;
        _allowList[0x694C80A5c910586b894bDf51e711d9127783a76f]=true;
        _allowList[0x49f1509a1042BED9ABD5721b29780B45EdEC435A]=true;
        _allowList[0x0b50844B7b1E4885c3498f047Cc6dcc36103313E]=true;
        _allowList[0xaC9f48825c51f16125d03583376Fb170E94e0A79]=true;
        _allowList[0x0817E382a40d484A8b90C792b399667174E50aB8]=true;
        _allowList[0x17B9fCf6fea88b21075b4dECce026a24f3C53C9b]=true;
        _allowList[0xa628D3a520c20C55d200Aa1Bd4ce7CAC0386d2aE]=true;
        _allowList[0xDD2C0120e177457BDcbF3b94Af30fD118d6b09cB]=true;
        _allowList[0x6946ae4360d19f4821e1009C51bF5Da1E50736db]=true;
        _allowList[0xbEeBE2cd0AEF888230945EA40767B62C9570299C]=true;
        _allowList[0xf45D07e683caE570D56300A108A6D6B1E7F1Dc79]=true;
        _allowList[0xA334e6E97260B22728521171ab12017Da3c36609]=true;
        _allowList[0xFbEeBEFA8DB8B3df57e89E739bbD461bCe7E9109]=true;
        _allowList[0x8752CaF9F5dB7E5D1375866525b7c8fE12826dBF]=true;
        _allowList[0xd879B9a1112759d5f1e64553f20B66B5Ede13F2f]=true;
        _allowList[0x2e307Ceab1b4c5F4cAc508E3B13C3dBfe86a3c81]=true;
        _allowList[0x894085BBFdDBd1e5257ed33886BF1B3bA3cfb492]=true;
        _allowList[0x911bD2dd808882AA4B347745a9A688D616110A1c]=true;
        _allowList[0xC820417B367FFa330d1Fd1ea829d82F32c108601]=true;
        _allowList[0x71281411a338C9Fb813cA350510F805A6AA54990]=true;
        _allowList[0xd7062b24e96e82e7506E90730A39175C5e9e68E7]=true;
        _allowList[0x1Da98aa4FaEFB6eC93cC1bA6AdcFB59c8aF51152]=true;
        _allowList[0xe0bFf868219253510a275fdddd14B4Bdf859Ee83]=true;
        _allowList[0x44340F7dc53bF90363E503350bbEDf69e2D7870c]=true;
        _allowList[0x8ab83D869f2Bc250b781D26F6584fd5c562FdD9D]=true;
        _allowList[0x9C26583abDAD7A5551fC1E85097A161B76e16450]=true;
        _allowList[0x95dD010D54Efb6B4fcD040dBBd93eeE8f2acc7a2]=true;
        _allowList[0xAdE29cAeCbAb402527e757dd078a150D295379b7]=true;
        _allowList[0x81BeBeF0Ff62A9D1d80353B3FA2124b7c8f820Af]=true;
        _allowList[0x082ed91C65EcbA6Ac147B115f661B1c7b584D23C]=true;
        _allowList[0x4ECF5BC9A031bF984D2a00D3f9eEf0BA6c7f692c]=true;
        _allowList[0xf08C831bE98B0e4482Bc9411B435664Ea3f84cE0]=true;
        _allowList[0xb50A1Cb62eaB623c785aBa912F59B69F69fcC0cf]=true;
        _allowList[0xe71D0fB50Ab4e57e69B814c63aBF1A91a830F447]=true;
        _allowList[0xE688f6c910ee98f2cf5d12192C7280a81205B3AF]=true;
        _allowList[0xE918973ae1e3bD95D0D9D30059404fe0C7Ff0eAA]=true;
        _allowList[0xF8d7daF9DaA9c1F8beFBc87A958f778Ca5A7cc3B]=true;
        _allowList[0x7B93A0205e9F4F389A1BCbb266f9DD23D1Ad6f4b]=true;
        _allowList[0x51aba10f51cde855B48df6fD8B01d70AFcea2C71]=true;
        _allowList[0xE4559A7ee19F6a66D7b1DB3Dce507D30C481aE35]=true;
        _allowList[0x83742fAdDdE0b5b2b307Ac46F24a1C118d332549]=true;
        _allowList[0x792b4Ed2b3DDBCEf0A3ae09810f3925105A3d6c1]=true;
        _allowList[0x8DAff7be83F1066DE2873449ada2b7A33E3F6A22]=true;
        _allowList[0xa0aE9FD0168214A67389090aaee1b534Dbe72d4b]=true;
        _allowList[0x0e1072D89569FFAc2B68fD6bf2e433F071806B6c]=true;
        _allowList[0x165c55362690c34EDE6aBd699bc0E76818DBe870]=true;
        _allowList[0x6Db5E720a947c7Cc2f3FcaD4Cf5058402FC456c6]=true;
        _allowList[0x503105C030eaF77C4411a28BCd479D47D3f1AB64]=true;
        _allowList[0xD2dF3edA1c5146C4D94ef020D539DFd60005bDEd]=true;
        _allowList[0x70b26A35F8f308eF8286798c33b4f7a1811c7630]=true;
        _allowList[0x9Dcf33d6BE32ecF8846f05c4407781bCE8e59A89]=true;
        _allowList[0x817e1d0D580C4BD21dB8BdA15d326c3d76B6ccC5]=true;
        _allowList[0xDE26b5A134c7e6F6f9a041B71C701430e9FA9630]=true;
        _allowList[0x4C61496e282BA45975B6863f14aEEd35D686aBfE]=true;
        _allowList[0xAd49b3d265008a437d828C0c7C5096958cde5f62]=true;
        _allowList[0x7A1853B856964898E45d4443065C3bA720958C00]=true;
        _allowList[0xde67c92c7281dE52097880412Ea2dc2f85E578A6]=true;
        _allowList[0xdEa68e767890f4711ADa53c3aed81a26FeC5cEa8]=true;
        _allowList[0xCafde7463D1a7bAd5E635602CF57029B6aD8795F]=true;
        _allowList[0xE27f91dD0aC362EbA67b7Fc7f88187df25509d6d]=true;
        _allowList[0x2fb230336C189914aC28b256c544674e47Bc9925]=true;
        _allowList[0x54E9aD1D7c15a581575C727c68888D19d71496b1]=true;
        _allowList[0x63B2D34cd3a3a224389Af8f410D9E528c30f2EbD]=true;
        _allowList[0x90d9172c62a0206848B1eC83A35065bd61bA0f08]=true;
        _allowList[0xb30C65a6544967CB79fd13a610374d4B1451eDd9]=true;
        _allowList[0x2AcEa0FAAaFFDe5Add96541Ce8079F2A0cC8CF4A]=true;
        _allowList[0xDB79b9D1FFB602Aa4E62241A83B7c70FB6e6D5C4]=true;
        _allowList[0xB874c334B78abD95402F18CE02b99EA145Bd8709]=true;
        _allowList[0x0C8EcC562C855A20841499813F1cFE1abE23c2B1]=true;
        _allowList[0xa66F733bd30A6CF895f78d3BF1B116060bb77F6C]=true;
        _allowList[0xbC8cA0906e478fffbf4F3DAe3Da456814fb14416]=true;
        _allowList[0xe86EFc1C9E7f23700508942A36bA3efF6553F20d]=true;
        _allowList[0x576B08bcbCe27180be35EFAF2F67d66b8e9bEbC2]=true;
        _allowList[0x14C4Fa9c3dF3C225eA8aAc7Ea40692c0Df1e1Ed7]=true;
        _allowList[0x0BaBb77C909Ae6Df906dc47B40AA9d63A164Eb01]=true;
        _allowList[0x3A51E8cb35cC1d458E995b66A6b88569494429e2]=true;
        _allowList[0x5257aD2570eB10249EC03Aa023e14e2c4De6EE86]=true;
        _allowList[0xBe02f3095985feF7Ba4cce00B43d043B2974A009]=true;
        _allowList[0x297Eb64Bc880a7a39B3D326aA8f9B4c1597B50Dc]=true;
        _allowList[0x4F65758795E0C8b1d3a3B6F841C301782e4b2f94]=true;
        _allowList[0x924e4fA75d441eED0b007d724E2FeE7ceBDDA7Fb]=true;
        _allowList[0x1cED02157579a61eFD97973CB198f63f635729C3]=true;
        _allowList[0xD06150ffFb00169c3cCE35C2b9fF27adAf6dfD52]=true;
        _allowList[0xC38233e8666b888EF17AFA814a855F888c32dA9c]=true;
        _allowList[0x5F2f0Ea12798ef824B26711d763DB33648eB77e8]=true;
        _allowList[0x28A0E828Fc3108011bA7b6aE45020C3310F8C386]=true;
        _allowList[0x00669F9D9ff7F72E83d49F3D955fFb3e87C77971]=true;
        _allowList[0x74da634DEA0B9CdF3A80e36943928D614f4Ccd20]=true;
        _allowList[0x58270BF3101D2153e19732D8A67c6F6E3b9f0F95]=true;
        _allowList[0x4dC12B0a36ab76542f7B74b58997A15Bf42af3e4]=true;
        _allowList[0x7f64d79293b8eaB2ad215AA17EEc4733abAA9e62]=true;
        _allowList[0xe0cfC96D177F1d0C222FA651518ab7cF08AEECeb]=true;
        _allowList[0x94707969050620655495750cf55DD3BF20E640Bf]=true;
        _allowList[0x14Cd8F10C282Dac0FC3d7D558FDdBE476feFbf76]=true;
        _allowList[0x15b68E412aD935bedAAaDb59133E4675BDC0988d]=true;
        _allowList[0x9752Ff185Fc7CeFa514398068731a60BAe3ec224]=true;
        _allowList[0x6F04833195De49aB7021c76F6C756ffa41CaD262]=true;
        _allowList[0xa6a15056f8DA65E91776bfcDb831eCA37E067133]=true;
        _allowList[0x4c6AB491dE3cdE727D931C079348E700EA675472]=true;
        _allowList[0x6B40459C0974F63987e628E68a6eAdE6a4dEE2c0]=true;
        _allowList[0x3d21175Ad1A18A262072e825CA9aC9cB962C8E0D]=true;
        _allowList[0xb83078cA87F43bB9fD7a4A93C0A716Eccb098559]=true;
        _allowList[0xAf6A78083708cAe7AEAd9C96A1475eB25C671Fbd]=true;
        _allowList[0xcb7e797c81E402448939d8A0b1427D394cbfE18a]=true;
        _allowList[0xfEA9B1760505fe0ac6ac48c30Bc81c9D7431f554]=true;
        _allowList[0xdae2d80e803e7e7bc279309EDE4E039788B4936D]=true;
        _allowList[0x24FF079523D017AD15636420F37e9013a3E47a08]=true;
        _allowList[0x6E24AC7A957bA929e48E298c75F6b76D0cDFa901]=true;
        _allowList[0x09379A0248Fe1EEeC49fBF01Dd4586fAfceB349e]=true;
        _allowList[0x72a2E41994A242a1d0a536Ce5823142f123204cE]=true;
        _allowList[0xFd3AA49af3BE98b8d9ac6e676891867bf34137fA]=true;
        _allowList[0xCE4A546B623c15E92889DF8E77F6601a0Af55008]=true;
        _allowList[0xf0245B2ef5befe163d77E4cEe8D0242f422209eb]=true;
        _allowList[0x887F4ae78D3F2219998b75Bc8fC2C9d9673a942a]=true;
        _allowList[0x73BcBAE654B6239132718e5a3c4B3ceecdED4b4e]=true;
        _allowList[0x992984C607644B42d4A491f51A0191b0B59F4569]=true;
        _allowList[0xE9f76e57388Cf5AB613A1671027109188Cf7789C]=true;
        _allowList[0x54BF374c1a0eb4C52017Cc52Cf1633327EE3E985]=true;
        _allowList[0x99b14277fd7b21107184f4eDED83254bA573E689]=true;
        _allowList[0xF140fEf0d5843DC9C7c30aC1Aa46750aaeD5a24F]=true;
        _allowList[0x1F441c82F5a5dba80CE2D56C993D1f0539ff19B7]=true;
        _allowList[0x07ea2201512f174b8e020efC8021a163F4143Ee8]=true;
        _allowList[0xC1CBFD0f49450878C074e3935554002201Db3235]=true;
        _allowList[0x707a7096D339975De22D1fEf8ff827790C3A1cd1]=true;
        _allowList[0x94DfE15282C232EF941D53AAEecAD2b7369b46FE]=true;
        _allowList[0x5f0D42172D2f1dF71224eFFe0161Fa59Dc25F625]=true;
        _allowList[0x9F286319BE34810f17FdaD364D9CCaefac31407D]=true;
        _allowList[0xb5dD21026a88770986C3FC676aE0DB6092f63Dde]=true;
        _allowList[0x3426A6a37cb469273B4e3fA3DaD53BC3A45a8ec3]=true;
        _allowList[0x70d9f98EA60658fD81Cc54086006E949AEE207F3]=true;
        _allowList[0xcE3595bcFdf3A901335364f628F58Ccebdd53c4E]=true;
        _allowList[0x41CFcC63981CD09201A37dF7f515307FBaDf51F8]=true;
        _allowList[0x64a2aB112Ab608a185A7358e7c3D3ce69D824Ec0]=true;
        _allowList[0xD5F7818b117193509382E734c9C4EBB517461B9a]=true;
        _allowList[0x32c6d855ee1ABbcb96Ff7635Fb14F4329C9e45F4]=true;
        _allowList[0x4D69C8Dc5AF12b9CAE0c4dC0A6440C4C0170aa63]=true;
        _allowList[0x504f0BAf0810a9A3265BEBe18ee25474800ffc45]=true;
        _allowList[0xa2F0448f346cE50B9029506c88Dfa58d07bAF880]=true;
        _allowList[0x2283e3E2820F6DB70eB6FA94Bf2C189652290D25]=true;
        _allowList[0x836B8145afcB81b995ACaDcFEFeFb2dCd399ae4a]=true;
        _allowList[0xd2cE4bDDd7CeDAa8B04d5F13b1Ece8f0D09740e9]=true;
        _allowList[0x75C6F6D54440441cAbcf53ff2Ebe63cD3218099E]=true;
        _allowList[0x5f08F3e687D907b976e1E24435b093d577982c74]=true;
        _allowList[0x0ebaB817a620E826732A5E94E1AF8dF100f04dB8]=true;
        _allowList[0xb7b008b162096fC66dae91fA63f9baf0C8150db8]=true;
        _allowList[0xD1DC0BCf70362A13F0a5f657f1Ad41A9E203E62c]=true;
        _allowList[0x049894C74ed994d904Ce34E56c4E45Ce150aF15C]=true;
        _allowList[0x34db35639EAfe2712aE1F69dfa298b06a5c25053]=true;
        _allowList[0xC93730E3b7bF06E392CDDe0dD0455A79A8C3Fe55]=true;
        _allowList[0xFc0048E8FCB0Bc74bEa2DbA777a6c556C1E34a83]=true;
        _allowList[0xC311d98916960F6DB4D514a47019F9dcb43eba57]=true;
        _allowList[0x660849eC825B8FE543F79A84A17B58a99C2Bb7fF]=true;
        _allowList[0x731Ed355833856dC1a004354EF06E6157B657264]=true;
        _allowList[0x4b47B59c5B8119bB7AfB41361303EF0f1C1D662A]=true;
        _allowList[0x7b7f11Fd3ef5615F607FF33EA4dFF30774B7b30c]=true;
        _allowList[0x0ff4A39c460Cd75767C60776d254F7Bf822caa01]=true;
        _allowList[0xF3b3AB6c4BA3Ec7434e0461Dd801e258A6b93004]=true;
        _allowList[0xB99ad00Ae0b27d980a4C236C41ED685D2bfe159a]=true;
        _allowList[0x03756d5B8f9Fb42abb735AeD6126dFb344eBbA43]=true;
        _allowList[0xf483e340848695aa9A2c78D7AB5758a9faE97d61]=true;
        _allowList[0x3Ab3F43A2Af6B00c639A4eD5143caf788da68377]=true;
        _allowList[0xFC0ce11136adc4fdA3c5DCD66f3b4C472aA5FFE4]=true;
        _allowList[0xC0509a3ce4225410C94029C3834e493B9d7E89F2]=true;
        _allowList[0x8aEF89129806B23C7930DFdf2B46E22ae1849c49]=true;
        _allowList[0x7fE1533C2e9AaB11d0e5074274EdC53Eeff8d840]=true;
        _allowList[0x5299582ba59EA5609BB9950E969f5041d1e01C23]=true;
        _allowList[0x3330777CC5270dB65E7dF1D738E989DC16Dd49f2]=true;
        _allowList[0x54BF664369c38785827DBA60Cf5a05d1bc68a0f0]=true;
        _allowList[0x4939C898da18b0c1E71DC2A42aa545AD228711B5]=true;
        _allowList[0xB1892b7a383697D10A9419eB132598F3F4bC8dD1]=true;
        _allowList[0x0e121D0C8c695A18d504714B1f4608b6EDa944a7]=true;
        _allowList[0xC9b378a35C6C2e9971F74b0A75662Aa664B3F391]=true;
        _allowList[0xbDf7EcD3938bC86373D15709fE09DcF9Bb677ca7]=true;
        _allowList[0x145Ca5302130bEcfcAEbA9AD93DE2f4dB4d3A72e]=true;
        _allowList[0x86ce39cB7f3F68D848F2a867c73Aa080AeAece97]=true;
        _allowList[0x6885dB8e9e82682e9219F1A3cB46D2B92C68fbD0]=true;
        _allowList[0x21c62b005e6e8123C33f0008DeBca41ba785F304]=true;
        _allowList[0x7ECF5D15862074d311c282E2b47aEeEdcFd20376]=true;
        _allowList[0xD58082F2dFB159670D85634a9a9de505c46a8E2e]=true;
        _allowList[0xD15d558cb022566CE7C291d1f229420BcA842349]=true;
        _allowList[0x915fB20645A6EC5285Ef298a93D25Ee787f1a1b2]=true;
        _allowList[0xCB17C8e39Ec71Ec7d9D0738275Eb0963A9aBC680]=true;
        _allowList[0x566ED43d3a275C0a6C394933c1a378050623876c]=true;
        _allowList[0x5C3C8d61AA8555dddCf85F10A792056Bd1bbdfc9]=true;
        _allowList[0x9f882cB17b6A3F53fE0B65A9B3f73BAc68a22468]=true;
        _allowList[0x413e81d8F46CD69733F7714cE6F5D6C8f47c5843]=true;
        _allowList[0x2855E8D5d8DF7009ccC204eAf328ce1a8DaC5441]=true;
        _allowList[0xCf25264f6d7D2305990872BE968125ed757Deba0]=true;
        _allowList[0x0D6DE7038B400f610d94E2d04edE9BAeF9d2376E]=true;
        _allowList[0xa257413252A3A1C367AE443a60d9d5Ea1921dF17]=true;
        _allowList[0xb261F055621fb3D19b86CD87d499b5aD9a561115]=true;
        _allowList[0x85eb62F5748E50AaD4584B2bc9e0176fBe247b49]=true;
        _allowList[0xa163C4210Dc1Cb11ff85EF292eb02345858b88f9]=true;
        _allowList[0xa45A3692e37089cE1AFEc88921650Cd1f1C2c6bD]=true;
        _allowList[0x98BB3A3921200017ebd0aF803aeDDD464e70E791]=true;
        _allowList[0x3e25dac1092031116E2A7d59953dCEC2824A6C6A]=true;
        _allowList[0xE61350D0b293b0516a83B610EA835C50D83Dca23]=true;
        _allowList[0x707d27D62411baEcd11f78482A8b3ACF03936f5d]=true;
        _allowList[0xDD60fC8E5c7bF835AB60437387344a0686924868]=true;
        _allowList[0xA5D5Daf174E495D1EAfcC18968FdA7c2927AB94C]=true;
        _allowList[0xDd5B66E6905f83442Bc4eF691aE2fd4f731c1c8C]=true;
        _allowList[0x19e39B0c71A4D6D2b615Bc4B6F6dc36eE7aeb5d3]=true;
        _allowList[0xD789b9Ed2092917472fb13bb746858B2F65f1aDA]=true;
        _allowList[0xc4996857d25e902eBEa251621b758F86D3761C0f]=true;
        _allowList[0xEb546f8DECE2463b7EE9c5A09BF2F741ec705daA]=true;
        _allowList[0xdF7bf4Ecd80d836646125794933b0Ae128F724Dd]=true;
        _allowList[0xe45432CcDC6b2B2674bB1657f9f566c9b400e7ac]=true;
        _allowList[0xa7bce13c268c132eAfA61633827B872a248Cb352]=true;
        _allowList[0x3a017854138C5f9b85b0457b832151B28213b6E6]=true;
        _allowList[0xDdE7b1103d7Bb19982ef9c6d9a348a0C0ea7e132]=true;
        _allowList[0x7c17D8dfCfC5672df200acfFe41FcD5c81252566]=true;
        _allowList[0x802720F980e5f9bD7358Ad0bd9caA272d0173E00]=true;
        _allowList[0xd02840d5853fCddD802cc957D00b7Df04a63ee5e]=true;
        _allowList[0xA3264a6B18b0e43DA9C7C235B5434294C2f9B10D]=true;
        _allowList[0xb822714d379aA6C0FDb7aefDEdCeB7616f83680b]=true;
        _allowList[0x973a2acE28745ce4715659C60Ef70B9E4c044086]=true;
        _allowList[0x4e9CFd9dc692565e61E157e1F61339D869381B50]=true;
        _allowList[0x67BF9615891Ea8879903858D8AFe56c980CE0962]=true;
        _allowList[0x791BdbC87f3eaFD6341bBFa54173ab8d81C6aA58]=true;
        _allowList[0x30E9Bd42A34059E59613d80E35FC8FE45861Be33]=true;
        _allowList[0x2e8D1eAd7Ba51e04c2A8ec40a8A3eD49CC4E1ceF]=true;
        _allowList[0x5Add76ACC48e1BB1a434da15d32d4a6734869430]=true;
        _allowList[0x4a5c27fc6d10e8A0feC4F2D504eD5bd05b4A4c4F]=true;
        _allowList[0x0E68ec6237f1294335647012B678E385f9dF3C22]=true;
        _allowList[0xE5AE91c6267f22D1F5AA50aC953025a7A36ed36B]=true;
        _allowList[0x040b104d7Cb4557EBaEf0122a4b8cbC073f1a021]=true;
        _allowList[0xBBE30cDe30a4b7f56602D72a2EDd9b6E61c424d3]=true;
        _allowList[0xda1B25a4bD1ae5380FdAEf207dc3a5999C5D8B80]=true;
        _allowList[0x2ec970270130EdbA7D9B1f0f7cE7DFb3d1f6Cf6a]=true;
        _allowList[0x91Bb0008b406ddfd9c5F66655d2AF77FbE7C99B7]=true;
        _allowList[0x4aEb7ea57E3f83d620FefCe39F27D79668e40aA2]=true;
        _allowList[0x5c5F1Fc018D9989D1F617f1cCEc6c2Da0e6ca06A]=true;
        _allowList[0xED9f922304a7bc4CD1f1C3611060D8486Fbd7c4b]=true;
        _allowList[0x413eE671f3351f54CDeC60BFabfFca7E7E5A32f7]=true;
        _allowList[0xC938100605505290fe55fEf5901626f12Ed45700]=true;
        _allowList[0xe60253102546CE672E550F0b537e3FEe3fE3B6c5]=true;
        _allowList[0x029Cb4D9566ef3B9E277C2E5887cE2C891D04EeD]=true;
        _allowList[0xf8817128624eA0Ca15400dEE922D81121c9B9839]=true;
        _allowList[0xe5f2f34BF34A74384EA09005818A74B953B15359]=true;
        _allowList[0x443bd36Fa4BbeD299173911b6E51c4f08Eb99C8F]=true;
        _allowList[0x0B4AE84E396aEe628C562449Bc6d49968c1E1AEf]=true;
        _allowList[0x059360DbE7aC512675CDdD37414C8083A6E2eD0F]=true;
        _allowList[0x397725CD38e28C497bB4A6862cbEBe69e7A922cD]=true;
        _allowList[0xf70EB1ab344d8066c4f74b125B7ab1e2404914E1]=true;
        _allowList[0xE6dc0034eDD9126dA7e0c5a398D8E7dC71171Fea]=true;
        _allowList[0x13AbB285529729ED8ACeCFf3Da52351e991F650e]=true;
        _allowList[0x8D35625c3D457bC03fF8AE2EC48FB023ffb05b3A]=true;
        _allowList[0xF75a7D7cC5991630FB44EAA74D938bd28e35E87E]=true;
        _allowList[0x93D020b0C5158939274235EE9E670eDb9612726e]=true;
        _allowList[0x44532990EaFfD73dbB2086b2a4124455bD7F1bC7]=true;
        _allowList[0x13aeA819C2b5f3bd409A6A7612A0C7A414Fc02F5]=true;
        _allowList[0x626CE14BD71d7f3B9AC33966AAa7611A4f5cBd2a]=true;
        _allowList[0x2829d75963e0f9475c31E8Dd014152b3AD2efC6b]=true;
        _allowList[0xEA6F17757172B189342852744D17577408d0f6af]=true;
        _allowList[0xf181C6E3EFD05F7C90453C090d4700e26b5371C1]=true;
        _allowList[0xB237b9bde8BF11F30dE1cC2d83599A584D86d05c]=true;
        _allowList[0x08c3d4a4fE4e28F4ea0402fcCF35D5B81E8f1EC8]=true;
        _allowList[0xEa302cF778a1186843Ae10689695349f5388E0D9]=true;
        _allowList[0x0F8176c597aA2136b54bCA3F10e098c668fA2CcB]=true;
        _allowList[0x99B937DB7E11f1Abe6ee1795317912BE46E20140]=true;
        _allowList[0x45da9dD8b42145F8B02F928365970bDE51Df17Eb]=true;
        _allowList[0x544b7df6e96b6c5b3C78efe0bD05Fba68a878828]=true;
        _allowList[0xbEBbBf96F42a744d11A0Ed3F6b6372a900DbB793]=true;
    }

    function setActive(bool isActive) external onlyOwner {
        _isActive = isActive;
       
    }

    function setContractURI(string memory URI) external onlyOwner {
        _contractURI = URI;
    }

    function setBaseURI(string memory URI) external onlyOwner {
        _tokenBaseURI = URI;
    }

    // minting
    function minting(address to, uint256 numberOfTokens)
        external
        payable
        onlyOwner 
        {
            require(
                _publicLETTERS.current() < 1000,
                "Purchase would exceed LETTERS_PUBLIC"
            );
            
            for (uint256 i = 0; i < numberOfTokens; i++) {
                uint256 tokenId = _publicLETTERS.current();
    
                if (_publicLETTERS.current() < LETTERS_PUBLIC) {
                    _publicLETTERS.increment();
                    _safeMint(to, tokenId);
                }
            }
    }
    
      function setIsAllowListActive(bool _isAllowListActive) external onlyOwner {
        isAllowListActive = _isAllowListActive;
      }
    
      function setAllowListMaxMint(uint256 maxMint) external onlyOwner {
        allowListMaxMint = maxMint;
      }
      
      function addToAllowList(address[] calldata addresses) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
          require(addresses[i] != address(0), "Can't add the null address");
            
          
          _allowList[addresses[i]] = true;
          
          /**
          * @dev We don't want to reset _allowListClaimed count
          * if we try to add someone more than once.
          */
          _allowListClaimed[addresses[i]] > 0 ? _allowListClaimed[addresses[i]] : 0;
        }
      }
     
      
      function allowListClaimedBy(address owner) external view returns (uint256){
        require(owner != address(0), 'Zero address not on Allow List');
    
        return _allowListClaimed[owner];
      }
    
      function onAllowList(address addr) external view returns (bool) {
        return _allowList[addr];
      }
    
      function removeFromAllowList(address[] calldata addresses) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
          require(addresses[i] != address(0), "Can't add the null address");
    
          /// @dev We don't want to reset possible _allowListClaimed numbers.
          _allowList[addresses[i]] = false;
        }
      }
    
    function purchaseAllowList(uint256 numberOfTokens) external payable {
        require(
            numberOfTokens <= PURCHASE_LIMIT,
            "Can only mint up to 1 token"
        );
        require(
            balanceOf(msg.sender) < 1, 
            'Each address may only have 1 Letter'
        );
        require(isAllowListActive, 'Allow List is not active');
        require(_allowList[msg.sender], 'You are not on the Allow List');
        require(
            _publicLETTERS.current() < LETTERS_PUBLIC,
            "Purchase would exceed max"
        );
        require(numberOfTokens <= allowListMaxMint, 'Cannot purchase this many tokens');
        require(_allowListClaimed[msg.sender] + numberOfTokens <= allowListMaxMint, 'Purchase exceeds max allowed');
        require(PRICE * numberOfTokens <= msg.value, 'ETH amount is not sufficient');
        require(
            _publicLETTERS.current() < LETTERS_PUBLIC,
            "Purchase would exceed LETTERS_PUBLIC"
        );
        for (uint256 i = 0; i < numberOfTokens; i++) {
            uint256 tokenId = _publicLETTERS.current();

            if (_publicLETTERS.current() < LETTERS_PUBLIC) {
                _publicLETTERS.increment();
                _safeMint(msg.sender, tokenId);
            }
        }
      }

    function purchase(uint256 numberOfTokens) external payable {
        
        require(_isActive, "Contract is not active");
        
        require(
            balanceOf(msg.sender) < 1, 
            'Each address may only have 1 Letter'
        );
        
        require(
            numberOfTokens <= PURCHASE_LIMIT,
            "Can only mint up to 1 token"
        );
        require(
            _publicLETTERS.current() < LETTERS_PUBLIC,
            "Purchase would exceed LETTERS_PUBLIC"
        );
        require(
            PRICE * numberOfTokens <= msg.value,
            "ETH amount is not sufficient"
        );
        

        for (uint256 i = 0; i < numberOfTokens; i++) {
            uint256 tokenId = _publicLETTERS.current();

            if (_publicLETTERS.current() < LETTERS_PUBLIC) {
                _publicLETTERS.increment();
                _safeMint(msg.sender, tokenId);
            }
        }
    }

    function contractURI() public view returns (string memory) {
        return _contractURI;
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721)
        returns (string memory)
    {
        require(_exists(tokenId), "Token does not exist");

        return string(abi.encodePacked(_tokenBaseURI, tokenId.toString()));
    }

    function withdraw() external onlyOwner {
        uint256 balance = address(this).balance;

        payable(msg.sender).transfer(balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LETTERS_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LETTERS_PUBLIC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PURCHASE_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"allowListClaimedBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowListMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAllowListActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"minting","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"onAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"purchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"purchaseAllowList","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"setActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMint","type":"uint256"}],"name":"setAllowListMaxMint","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":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isAllowListActive","type":"bool"}],"name":"setIsAllowListActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6001600b5560a06040819052600060808190526200002091600c91620099d0565b506040805160208101918290526000908190526200004191600d91620099d0565b50600e805461ffff191690553480156200005a57600080fd5b50604051806040016040528060078152602001664c65747465727360c81b815250604051806040016040528060078152602001664c45545445525360c81b8152508160009080519060200190620000b3929190620099d0565b508051620000c9906001906020840190620099d0565b5050506000620000de620099cc60201b60201c565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f6020527f35c7bb27aa7c4295ee74fc207b744372082b4130d62d32b67a3ad445a1e992788054600160ff1991821681179092557febc680281efc8f901e8b4d14dd108e07920a1027b20866a7358f69885c32b15f80548216831790557f8f5e4e0d0c6cc3c8937949638e93a003547f27ab26598589afd373ea34c47cf780548216831790557f491184e93340de1bfc1f084aa19cdbfc0b590391c9a6ef2a514cc6799178f7dc80548216831790557f0bc6759455cff5b80b53f8c3b664d9913e045f644f157646f67caf4b04f9253280548216831790557f7524b14ada62d29709637f7798da784df886f5ee3e7fb9643130d7c6bc2b974080548216831790557f93a9cec0330e2db0bb290384314922e146a3011e5b8b4c6d911e30d73d54f6d580548216831790557f0d0cbb4e69ad6b820343d0cdbd716dd772261b2cfbe8b5d0879e8b9699edcfdc80548216831790557ff583f299d316cec3d3f94bf0226393290fbfdee61588eb60ed3debd0becf488180548216831790557f535c1f82e6700a721ddf0cf652dcacffc235311149a97cbe640e443c4435799280548216831790557fabe1e5b1aa84285a15eeed8de2393ad8d8a9c818069bddd945e7a8173f5340c180548216831790557fa28d81bd1ef75f9e1b41862a2aedefc3a4566a85deb27d325569f843ccf02bcb80548216831790557f01f25fdef1d5dac9f03845fcc255254e8b5c430199d9293ae220f61e5590466a80548216831790557f7aeff39771e6beb897b6e0220abaa6e7337b3505d86395fcbe5a385a733b51f380548216831790557f6388f7201bf7097139e63f3d5a0f2c848884646075ba4a68ed947d8cdc17104b80548216831790557f451f82ddb8f06b9882893ecace85c012b068d195ffa75382d7fe40cd761ddbac80548216831790557f2b51ddacbd918757b6537b0ff127b3b225ccfeca397f6ebd52b48da9e0d98bde80548216831790557f32a50261abe09556a15b51ce3aa30cf301c15499489ca3df59558bac9c22be0880548216831790557fc253161645d8dc7b031fffcaa9830d8675d45b5f8cf0cbf0b8949818484e12ab80548216831790557f594deb443f4df178378deb742ae8865a1f2b39b2050f697c7f6ac0fcd150cd9780548216831790557f9b133ebf4e65e098dbdb81fb2f336fd12e578d437478bc3c9742eeb0af45a2bc80548216831790557f2c3852d540da659dfa393b5f2f6207af7a35c14326642fffae26c74e3c8e7b9d80548216831790557fb4f49e881820260c77f3233760dcfcd06f239544c29897bb3cdd3eea6134e87f80548216831790557fbb5dcdaad66067ad7d6125bb39673fd45bc942a56ea1178f4ff9fb2a0dd031d180548216831790557f9cd9daa871fbface52d1301e2b98e93c6ca58cacb4924cd0274dde8968e7624a80548216831790557fe70e5ce686a9065c0f1cd20c67bfd397cdc0d6c1b9449d04055fa9c25515080f80548216831790557f481072ad438e1ce83ebee1efb011111c9b672dffcdbe835cfb8e42d39379cd4780548216831790557f46a2b6301e74d9d6e6b53e35a261452a47ff6b88c751bc47bfa153979f232d0f80548216831790557f086e7f85bded83d00b1fb524104af54a4fa71b5c062ae011178d57bf1237a79380548216831790557fe4c4e65c48365bd509a792ec295174aada45c1210f97e655aef5f7c12980226180548216831790557f36b91d3027b203806f364319433e44fc29dc7a764234e0f06ddbf2112b768cb480548216831790557fee1a982f01a220077ac7bfd8ecc858f0a3b7cfd9e48abaf49c1ccf026c28262a80548216831790557f4c9065d42c23d55fbcc893971125e65c3fa44a9ad413eedbc59a91952943bdb180548216831790557f4dc93b8a12830c67e49553bd4f62548c231be7531ae674f025d07c7d780407b080548216831790557f761cf80e5dee6cfcf139a81f102e727c3e255d7d5728cac6fdafb75bd55c39ab80548216831790557f992971310b51f559106ff8fd6a2e9c53cdda500f39fd734c6c979fdbc34e855e80548216831790557fde0548a1fd40fd83609ece354abd1d726d474882bb1ad9cd9398b8345e0db9e180548216831790557f2e798968d82910c320271c88cf9e7bea0c9d850408e73db4a764eed7762b27da80548216831790557fcf5086df3503eec840a8285a1636cead42462e0228eb5cd1ba8b285ece9792bd80548216831790557ff2383516d0182e5416972305907d556b2a63627ce32eb1958d0da368aaddb2dd80548216831790557f194f03d1b617c02db9567544506f0815a38cea4abc508d217a9fff4d2cdb26b280548216831790557f1e1eb5ea6e29d53a6b9c76e17322caaf16e4d1229886e96dcb175b6bc1eeb77680548216831790557fe4737b527381ef15c16efa2097e30952f16118229226d07a7dd2ab4876a0748f80548216831790557fa7bd61be5249fd2c8e26ec63c66d1b914674afdb95fe09d3e57c5ba4d36dccae80548216831790557fd977f79cded4b40fda40918db8598e1b88e5ea7a0e65d52f816902295c9ccc6080548216831790557f384e81cb1d1630ddded7f82bbb8cee7094ac1732211f61530ad48e6bfea48d1480548216831790557ff70466a7857aeb0d005e6a153355514836876f40450e1995a0440a8796852a5b80548216831790557fa6a5ba3df104b8b0bf060e41a7afcd9f7bf60456569d20be0da1312c0dd40fff80548216831790557fd575c6411150cacac9e73d15e1b604fb7e083c02863cbf4b65293b45c9b8482b80548216831790557f272eaa4467c570c57364045f1c06ba1f7b8c58a118833b1845753b7041591afe80548216831790557f84727a26dc65979844549109821ce5ef48a242f8a9eb456518318fe99702d11380548216831790557fa0a43e5bad0aa3458eda1d836a4628aff02f0f33bb8a0228cc1447de585018e180548216831790557f4d2da2d7df47f58a2f3b07e06dac13b8b9d5f7cdad7b088c2b3402663a05a5ac80548216831790557fe8bbb08e0701c548fde949ba1e254cc60746f339f7a52be87e8b1fec770a73ae80548216831790557ff1ba8f4440c6b513c8946413f5276b3e98fe297d650850ef5eb91c4e2bc4d6bc80548216831790557fbe2db30e07a30ce08aca6d913ab49b0e65680847b8001352275b5497fc420cbb80548216831790557fb85c6d669bfc2aa44556da56e55bfeb32abfa89ed8947b5e75f79edb921d449a80548216831790557fe79114d95cab7708f0639c3ee2934992ee0dc1b9808f97c251f360f8d37246ad80548216831790557f09f12f20f1ab403429215f2c9ef1f7a554e90007f51dba51f49cbffe3f7182be80548216831790557f46b67fc08d76c596693b4579ebacb8c344b31d284721e2378b77bbd614f9182280548216831790557f82d06bdcb655c02d1b68873e7d485fe4a10c052d44d89cf5110ba5236a5a8c8580548216831790557e03e241af7ba881c7634e9211d69f7e8fc2db3b5a9b2ebe15db027a6ffafbde80548216831790557fd3b855786cb049f16f408ab7860a9d52bb1b0f9adb7e53b766abae897968408c80548216831790557fcbf37e97103d5b3b97756e0b80f292901a1fb7e6f2ff95ddbb31ba2f019c421c80548216831790557f15eef89033b757a5aa2fa982d2e0c5c00dede874b703dbf3107aef4fd07e006a80548216831790557f6f57c273f8931cfc40fccc7f10cc0f836c604adb6177a65d75f4773d833462b980548216831790557fe1b5a56902803cf0339429a08be0466cad6be9bd915bd6ae4e2aec0940464d7180548216831790557ff7fe92227c0a8c89f410bc916ef3af4b987118b2f3c649a04aff590295b8ad5d80548216831790557f57c1f5d17fb1955578df431fb7f5facbbfe336dabb9ea754c967519d9e90126180548216831790557fa1e5cecadea139bd75b9a712b1f21aa05b850712c3eebb0a738bb7f94e1194c680548216831790557f7f90844764504bca9dfc4709fcca82991c0b704966fbe95e9dac02fa6dedbf0580548216831790557f9ad0433520d144ab90ebf9ee92498aa3037286abf5135ebac130d32eb4f5783480548216831790557f7c97853fee5d90da78e0eda82534ae0e67ade52444e5809d9acc1f7ce0d5289080548216831790557fa8461e6b1d3f4781c219ac4338b59bae6401231b4ebf2eec9cc1260787a2c61880548216831790557f0f37c75a0e762cdb2ca9c4f5578569a148829da5ea5914e549e5bc531bd48eca80548216831790557fb8f80602de2d15ea15b894baad74481ad3e6b5db83ed28080052d8770e07750780548216831790557fade168f62534916516659a3bcd8900430c137c485b66bec01e26141714c4ff2c80548216831790557fbc0b71e701db82ab6d2014e4d8fbdf226c3202bbd543746f2530ae9f8ad0907d80548216831790557fa694eacb392322b4439e83ab648e0b65bd1e94a9437d3600a771bd289e4750f480548216831790557f23aa7b1194a89cfde5962cceb6631d492bd63ad9e49949bcfbfc2b6d1d4a805280548216831790557f455d35c3599744d3a89ee38d786c6a74be0b4fa7411540217f379aa4cacb807680548216831790557f0fb6a9d4955536b2a60f621f9f889515e38df6530d0c74bab4fcde99a80b062980548216831790557f1a037440c428d43c5db3e9dc9f75d6684c02edeb820366e6b5db4edc021c564d80548216831790557f8611aeb274253627864b90ee5cc2fcc2e511f527a72beb2bc748712b46fdd75280548216831790557fd30cec320d76290d709820d45449f3703ad6e6f61271aa11df426c68b8c6585180548216831790557f8e23db5d9355754f0cc543139e8c01da1ea3b24a30a0b84a19eb7e02767aa7db80548216831790557f0d0e13fe0fc9a2abe85ff32491a5ba6947c1b1833ebf711ad686f4e4a8bdd56980548216831790557fd102844cdadd502cafa68bf4e79920a5df558b94b71cadb62774e88dceb85f6c80548216831790557fa877b4c6414a903b8f126fbbba4e3a249162a390cc0e79550d2c29102648e7a380548216831790557fe853cfbfb75c7127b4626035001073bdb412c3561669b5a198f704534d99897880548216831790557f2b26abd56699fb685c32646bfa9e18a89cdc54d0fdebfa24613dc7bc095fd6d580548216831790557f60bdbdf9d762a1f511a9052e8630b84d0c9cc41dbce2203cade085631fb4027680548216831790557fe86b06a8251563c610f32e08580c3d1e5ccd181c81e3eb58bf0f003cb7fa371480548216831790557fa1b33a40ccd62f6231c9666018fd316dbfc165b55b42ca83ff5c5d8e3bcfb3c480548216831790557f5cd83e43283fa60571df56be9047ad4c1c4814088597d83a0244533dcb046f0580548216831790557f85a5e4535834c93eade324a7a653e0c43e427ba2de830e6287067fc7348bd81f80548216831790557f8d217a40841a15db16db159671dd1c89c09f0e891197e9f94fe237d8cbef262280548216831790557f9d3da3b6f2313be4efe4904e626761576b5a2ad45d317bc8f158fa7faf69500480548216831790557f6af9b4972175fec10587c5af58b577e18d9c2923d91b5475589401e7f326378f80548216831790557fbdddc093a3a052d8e7d6dbeed378dc3b82dbb07953bd3ca569fd69208cabdc9480548216831790557fdcc77146d0d9aee1c21bb1231ab1ef41e5e1e2dffef0a5e9c6067027f2efa14480548216831790557fec511a82e13b0b341f220d32beb2c5d934454ed97e7eff070306f6ab3f1486b580548216831790557f11c6d2f8ff76558c36983e2f5c510598723292957552f5b6cf6d61a34884688480548216831790557f2c80c3ad9a2e8f0a74135d766139c33c758465652d7273d10abd51926bc462b880548216831790557f6519b24dbfba04937b7e9da99a1e4440b5ea75c68539d772c469166bd2b16ef880548216831790557f57f4ff20286ab079adbcf2bc23f564646cc847a9124d6eee6ee19bd83f0e5cef80548216831790557f58a66f2a1b6033abcd3a6cfe13715551e4669d3789d700e54ab7b0d3d64db34a80548216831790557ff1230d3c62c824ff6e5db141e5c2c34730a360693aebd1f3681766eca03a86b580548216831790557fca647d89d7d26f1cd4f41ead42c8f79e1d7fc607cd9560e26e029b4461cde9ad80548216831790557ffbe67e375e3b20301b61fae1984fbd0fee2f93454ff189ad0f009c47e67e267680548216831790557f5ef42748931be2df9e33a0f76ead2f0380bb8adfc1f4272ece616f58816a6ef780548216831790557f2ed994e944c10c2f2807c48960a31fc2fc4c41ed68e27666f8227eb5a0ce82a380548216831790557f0add17db4d00dcd9745416aadee9c7ef99fdc22b2964e2c8e62184b089985f4e80548216831790557fb280c82ce2ca76c5e3d29ecbc47c006da4788b71feaaef2e356ad8ff336804f180548216831790557f7983119bdb12da9247f101a0575de7b743dc5b3dc0387ff3d9a590698963a52a80548216831790557f9954cf95b111180b9370e41074edfddcbd5d616c290e1bf9b0144ff45853563c80548216831790557fef557b3299800018c469ed868406cf6a3546c7eaf92036b2234be6fea82db99e80548216831790557fb615e74fb46558cdfc11bd36ed01bc09014e8f194ccf0c2a845dfe936420197680548216831790557f602efe55cf62df6befdb4c34404433ee0c59abebe60148be10ebf491b32b018380548216831790557fd9e3661e5b6d0195267c92bc993782e4ad6556e775e479301ea8381b434a1c5980548216831790557f871b10f9b852fa7026ed2723fbf883836fb5e918d85940f7341a9916236fc7f380548216831790557f2b0142a38449480146ccca16413ca917d8cf9d557453b3108af7461dcdc0c2f980548216831790557f9348dd3d875840607d4ff84b4174d9981b12f1b9c380afe3e43353a6480c21c880548216831790557f99370f6cb47fea52e896a0e59eb10dfc4e00c4187782445457a52e1a3752d8d080548216831790557f8bb313fee669bd25cd5fabc412c37299f2494d7cf0b5b07e8a91d5400cbe68ce80548216831790557f4897b4348eacd8c8273ca6f9ca53bf628b242c5a63bccf2b6dad1401ed76bfe180548216831790557f0aa456acffc52d52f74b135543c2fe3c0fd63dbd91da285d8d8235d217d66af780548216831790557f8b36f54cd5a56be9abc8a3ecafcc9589db3ce06751bd54d73328d2ef9128280280548216831790557f6410f08c2c3d04fdbd90b3c7897fa78c7a342705e5738a1ff8b35d44e77d08a180548216831790557f113ee4955b52cbb41602dcf4cdb5be5bec3c6c558b3f0ab2644968c4f850651e80548216831790557f8ed17ee282edbfc22294bc0653ed1cf0f25ac9e58b24ab322b1f326dec648b7580548216831790557f8b7babcb4bff5e1beaf0d5ee3f42e5f6d7565d1974fdc5c19f0c629ed627b7c480548216831790557fd7ad72ce769370df11e617dcbbfae1548bf8a78a89266e31a3329786d4c3cbd480548216831790557f28f3f1a0d0d079150b1e23c260f9100fc69fd5921d891da4547fc359efaeaf5880548216831790557fedf0da0188dd97ea28aa2aa139c74f07e0553a387562257ae829d2e7c6c377ae80548216831790557f53c6a408201a178aacb23658e7b1999e6d7e1fcb38659722328a766ec976aaa180548216831790557fc7bd8f84e9c965793572cdf15456457a5a00670dfddad423fc0a9bdfc82cae8a80548216831790557f02d1081c9090c33c4da9b06c50c285b5a3cf9b6629603875852cdb3e24814c8380548216831790557f8b91967d23f86adfbddbf484f16c13e1382abdd9e8777669bd346927c742896d80548216831790557f83948aa505b7ad938a307a9fab15ffb616c55bde999b0cd0287a2c0d26838e4a80548216831790557fc97ceef0d77b3bbb8b8708592732025f54ea3916f4c050e0f128128f09adb99480548216831790557f4a351b8fcdf1c961b38da83d259415b235cc4030515e49cae57e3498f84fd8a580548216831790557fdf70d94d3f2a7945cba82fb4775225cbc7b25e9f1792d5e937f3f65db48a8f5c80548216831790557ffe32ef8b030a582d87a6aba7a789d0e69569785334985fc05abf5ba6fdf7a35a80548216831790557f81327b029c7dac35dfdc09bf10fa71c04c4466028830d1840894eb2830a3517780548216831790557f05e41de67fa62ac0a7a403b72557d7d30edd0096b24f2af8ce0123a58452326680548216831790557fd1030274b86afc588eaa192e0a09589d175c9970da4903399e4da02b01691e3180548216831790557f6ab8d7673b8e82eb4348c78c270c088a8e25222952fb97050b9c29adf20c53aa80548216831790557f83641f0d76e0c0b7bfca508e6ac68e4b20c3c0e25985a193ff4cc7ed833b63ff80548216831790557f7a94be0a658a879400bdad64b8450ebf830e6492216e23dde6245e4d7d37b4b180548216831790557f7f4aba02b24a2abc17466886d52df9ecbd2641484f79155668f48a7a73a0d7c580548216831790557f7b2ae84760eae5ad78a8dcece08587e826f27bcea4dd7108a5c6adffaa5e4b6580548216831790557f57acba67c9bda145d2e928e920a1b21a8ed9421654b490f5212333a2679259f580548216831790557f259623357cd35e731e96a464365fc441b7d629be6caabcfd885f9c293d2a388f80548216831790557f21895a2e9282308e9b74c06507fdc9cc38dd4687ebd2e413cd9d4aa7158cd6ef80548216831790557f643997f4d00e13f7f1b3637e0f72dcc015b49c17b6b8f0f952fecc6e3ef401a080548216831790557f02f82019a781cd68a7bdc7092446c3ff658ca57386b2f58fac1b588c9b3b1d7a80548216831790557f6b92d3c0f726265f7c3a775cef047fa9bcc1f42fa1aa2e09693f55ac72d7a2c880548216831790557f21289a93960b1b3fc3398fe097bae79f5e95a05e4e34ba209ca4544502da1d2e80548216831790557f38151a208a551e1024438bec6319cffe2bd0517d38fa615de6033efe9de34ae380548216831790557f800bb155cd4c6ba2927363cad5cf7104a0bafaf05b2045c43446be8c0262a51280548216831790557f81da70cf210ba0856b19edc5786620791d3e9699140b25d8dcd322ddc1dae1ef80548216831790557fef5093e9ae2103def1727fc5417bb3e5c2ec07dd105d6d14c5691a5a1cb805e480548216831790557f1d40e19862fcef665940cf413751f6f9ed298561b9307e686f3986e0812a45bb80548216831790557fb71ce3864927195a9d46a7f506f58429c6fe645b49b883b00ea98b7754a0897180548216831790557f8b3b4371899ed29e5b42dfb3373f53af72c3d73497d93ac90d04eec4674e298080548216831790557fa90ee192c0c8bfd841055a7b7e573dd1da316893cac60bb1590517a4664f6bec80548216831790557fd259ef1744461df5404fa9c83dbd5175d8780ecf0ffeead423aa5d854a1432e180548216831790557f9a8c3ad3d5bac9d19dad41bdb75ff84bac206df0f66c0270d08b8478cc7c9ff080548216831790557f619724888dc5f3d66056d27a36a9286e72bddc9aa4828613d4e51c797a9bd49580548216831790557f28b161b516fc8c258df87eb4da1b2756af832c2dc67fe29fca43b4f967b6b3f880548216831790557fd1431a8d92feeb5818527ee54daaed670ba2613f099a02bd20fa9d9523de4e1080548216831790557fa1b78e7f01f8b64299e04906a4a2065504c90f4682bdb088b76830dedfb0796780548216831790557f17367e0bba919818f2e0b11fe09e8620651e3aed5694eb2c8726ee19b2a5801a80548216831790557ff899e77584eea9724e1fe1b563e7313e9553691652ad3a8f42849e403fcb9ac780548216831790557fed814ea2aa25479cfa15ce1d71b5aeadd4a6910a6cceda8889b5b899dc27419280548216831790557ffafe7468a104b7c4c7ce47433f0eb254632b05359f1e067955d89b730daa246780548216831790557fea4ca32f0b58c0fe195d33c7d593ce0752b327d1867fceedb333fe62e1ec0bc080548216831790557f5a7ddaf5e7f3b08996b8009f5ff414250d5cb191b1b074703ea85aab60d4d64680548216831790557f866df7441e4f266ac8fd21def24db5ef0d228da5ea5fd6771e2ceacdbe8ac60280548216831790557f07d96efd2bb5f4c46c516913da6ac8281fc42c231a8ef4f2fce5acfb9f22711480548216831790557f207d79ec663d0ca641887927d7c7f334cd8b7e4459b93a67808abf8b3db9795280548216831790557fbda49db00150a81dc7cc2bb330abcf9062c2b94fc613b8b0dff5bca0ee53a7ca80548216831790557dc1875a0f0e7088595a8dcb5fd3d3b1a7ed09813bc10fa653915446a5511c1980548216831790557fde6dad4bf4273f13cc17791469ead13cf1f9bc45ff4bdab03f27c157b9165c7180548216831790557f41ef92a1f238150b07532f78f09c47816cfcb07ca9e2388569495a9377df96f480548216831790557f2d9b23f65ae1944eb3cb8ea41bec3eea3d60ecd3062e518d95c3ebe1c7a79ad580548216831790557f0bf7e765d0de6ae49ea85b48a0b5d0ce337116dc0ab84d87df196d1b08b8571a80548216831790557f704623d7db2284efb6ee02cce438c7bd7cfa2ae3edc30ae8642d4ae9e36e5acb80548216831790557f024670f7035d786f7115ef67b3ce51cad0df0eb24bded69ef54197c94361e8e380548216831790557f32dc11faae112dd7413d2785cca50d9cd2a0e48a371c0a2ce16026de272bc9b380548216831790557f960d1dcd738d75f5dcf563df05ab7484de516a2f72935b3c894daaf563eaa40880548216831790557f465ceeee0844b5623795e45db4d488e8e56591326491c510d2e43e6672c8908980548216831790557f7ddf8382a87f9271c7ca8b00ae5d227fa9424b3904898b123e750e41595e595180548216831790557f788aa2ca286b457fe1cbb1d32a0d9f6e08ed487e89d8d0bfa7f6e429ca67452b80548216831790557faf286348cc20396a00f0002b61dacd318faa1c4e8978f383c1a81f08891182c580548216831790557f0287763c5b14cf63ef6f9653b4fc9c215c217c71cbaff294ce0005d97168674d80548216831790557f4a7af0ec9048dd58010595f815448e61b456c48ada41aec58af1ad7278faf6b480548216831790557fe31bbb95d014a98a2d06cbb39575a6c8a7461d7d9ee83e943d430f2c01736a6b80548216831790557f252f4c032484655947c0a699cc6ce79182d3d60619d349f12f8f0ef2f77f313280548216831790557ffe2333ac7db449387174efe6f5944d089f839f9c2986466cb593a12f317e222780548216831790557fda65aad31e417c4267e58772d1e295b156a9a36ae133d3077275f3318fd03e2980548216831790557f9e0e9eaa7a7e5b2dae7a3736d29339ba74952725cc550aaa1c5007cc7dd076c780548216831790557f85627de0cdb7a207920ef51329d373a9fd6e71af228e16f8520e23132283a03680548216831790557fcb476f6cc25df09dc20c045c24970edf7412d1116c702a1317400c02be5bda8880548216831790557f41e20409ddd8ebe0736616a3afb485f8f33cb2552f7e0734eb96ab2f99e2212980548216831790557fef5166c6978d9d1ff934ef6f46968dcb7b2af3ad9f1dc931dbcc3dbf16afad7380548216831790557f2885d7ba134a8d9d04043838861e7b8fc3d27099b5fdd82d535944d9b8df446580548216831790557fb8e87d46c3bea9c2052b8cfdd52e6fe54450cd5af3ca9981197008803c66426480548216831790557f31a2a45a4b9257f69250b5e9e15081f3005bceab8d9ef4ab4bd42a48e3c00c6b80548216831790557fbcde7614f7a57e2d68fda16ed4e3229d70faed33a1c3891c0e552453267fadee80548216831790557fe2de5940763124d338679ace727bbf4a397e61dd286aed82d5f4f8a36f78f94780548216831790557f07abc4bd79969ef0b820ec54a856857c4c76b581d33a1c67024a4a9eb705a5b080548216831790557fc934c12622a83e50c4aa1939d699f8b32c95830031e8948f9d6a24885307f01d80548216831790557f7843d9ab4666f1def6e6dedb629c4469409060ead8e44bba674853467e9b447b80548216831790557ff11a989261586cca1a5de566965f58c5d64893dda99b098aeec32b0c954083cd80548216831790557f0ffe73911d3599d6ee44da9e66c27999d7ba0092d93e462b84d900b6962fe1dc80548216831790557ff0f9813dc750b7a3adf9e4468b60f973c09ba7ee7c37daa9bb04d6d1c07a950b80548216831790557f1d9898ecfafd2cbd5e104afa807728ffda31e5522e2f4ea120556944a0c671ff80548216831790557f5b7d7276e09f6984e1bb94aa173704ea53089b45f58391c039f3f5def700487280548216831790557ff4b6dc92fbb191fe3f6fe8310eeecf8b7b8e045318466874a9f94fad322cac8780548216831790557f3b7e858f6e15fc8ecf5f3279aa174d915f2b4b5c79d37a55ff94713a7b46c49480548216831790557f54b51c1d72f60421c41a6faf70b4e37d58d4b5ccb574e0b973259796016d5fc280548216831790557ffccc32908515f817895fca717a8af00e9330ddce0ff7c3f24d957a14ba880a5880548216831790557f2109dd924802e7c32cf7bc79c283b2de2a09de02e2cc93e0efb786d128df3c5c80548216831790557f5f44048e12b30dc9eddacc71479ab1899c008072ad543bf474e0135a2fb7f08080548216831790557f43242af413783a34178b5b29e8d9a23d9d0b79265bba31c78b7bf8811d0e103a80548216831790557fc0344026f696ec4045d53cd006747fe82c90474dadd320fbc41751748aba456a80548216831790557f13cc064aac54f196be348f6fb717574cc6245b43d21dc313e093c21109a8f85780548216831790557f9af89d7475feadf56a75db156682f80c49078da15ebf3064aed5e4bdd328d0a980548216831790557fb2231b532c9c365493d7105eaca75069a853c8722f5560be6ac8e1bec1fdc87880548216831790557fe2428a65b326be097d3a508989f4944eef67f1085ac877f5d30558d7dd2e523180548216831790557f957bfc5a1ffb53dcb63375307fe5e29729137f75baff6e9f38b1f1f92e5f637c80548216831790557f3f549cc85b9fe275fd6af4099c4dba23ad8e4e49a9b80bd9134d1216341816c680548216831790557fc3f6a40da5d6a511ec4acc7315c940b577d85863a02ce8ea062cedfe063ed3f380548216831790557f6ecdcf048cca0b7388dd11100409b830755ad41ec06e8d13c60bb6356cc440c680548216831790557f13b033ce7d0c5938fb7cc1ca528277478cd8b10eb92c5446894988136fa8442880548216831790557f4138212b343cf6240d730c0cb44971ac0921a2ce844b53cc436fc1e8fa952e4180548216831790557f7f6fb87dc61f175c94560288e3d88a37e6ea6bf61bccad66fa87005af51c3c5580548216831790557fb1f158358e6f61dbf74d7aaf4da09c91d7fcf7bc9c1e0e42de622cc0cde762df80548216831790557fb7a4acf63c04034e5866ba4eb46a66e630adcfadbd8b844d51a85a2dcf83194680548216831790557f729b53a765cb28b966b5e7ed5bdc9a14b28368ecc776cc695e2bf5e509c724bd80548216831790557fd53bed7de4a534807f46d3ef08d06850b4d43fda7e1aa9214a6e501ca72d8fd780548216831790557fdaf07ccb519f0db2ebece8d69a4744516ad1c0e4394ead146cf6e8fd7911a4da80548216831790557f657096bc90fc0c45d1fcc63d20c830863787933307d09ae07c6614ae70f5232680548216831790557f2d128e8b6c4208fc48fe1ec5b27698409c3b98a543f629e7c85a453005b34f9e80548216831790557fa6ca1d1a7038690ae0bae6d69198d1114297e61ee5d22a338d0fdc8b13166a0180548216831790557fa92b794c903703eee43e5c8360d2c20a3d75c4993b2b00bc23a7847277859f9280548216831790557fd7a427a3316775cb3e500bc0ee8a99df1e1c739576bbd665b4912e8fc84a701980548216831790557f07499ec93f0dbda47e8f3b8417c96713f54a86fc60a987d140ae439903dce3a880548216831790557f225384f44dcb3c90c4a33cba21577142702e2fd6585f56194ffe1144f6c4bd5080548216831790557fbc9f1b5cb8c155c8e0ec7e16998e51474aa27a8e3ca2a5aad1c689b46ddf871f80548216831790557f12380d59d79a512d28204ba04502d13bdb6f1b48d27cc08d58c4d3eefc8123b880548216831790557f551788f18d9a4f01770db2cad9c866d5e9775687a3676495760e37999cb0fc6280548216831790557fecafaf2c75147272bec606c05736a8846cac0fa929730aa7f49db2e80615130880548216831790557f253f1d792f42beb70f1437829d4829f8eef9839606abdc8e69f480867a4c6c3080548216831790557f884a5f5bd870b6e76b2addfc554f8bb864af74c43945c39232fb4b3e2cd21ac080548216831790557f64254ddc5b59f068d6b3e9b79c40213d1e498a835612d9285e27c24ff09554a980548216831790557f4f1a678ccc558ca71104b3cc0c29f97dcd8bf7651eedfe5f3f2b454e4814456f80548216831790557fcfdc496b6e2fd2f86a5d96327a274c54352dbd7dc8b5ce6271a5dcb7ced6a8d680548216831790557f72b8860aa489a00366244dea93c6b6b65e3ed0265e6ebc2984dbb444a6abbef980548216831790557fecc9111116d754bc38f21072536b7c739cff7214f79edc17d8b2ed5b563287d680548216831790557ff1d89bfafad45d926c55c9dafd4b5322ea844dba4b2b702c55554754d9a0933580548216831790557fc487e1c1094cb527a1103bf8bf7df0c7eb822b66a9894f3da8b39537cc47ff4880548216831790557fe1fd11fbd3cce17508c52e6e34fa29211a7038d87b0cac7bcc8c4ebe1cdfab9980548216831790557f864943a69b112bd5f8473c881fb87fdb1e9312d05fd7e8c846377872ed6b894680548216831790557fc014d60b5a86497ad71c58373f13d75918e5ed7b734c41fa518112397c7c1da080548216831790557fd869fcdab5f0f16c6224e4f438e0283821bdd3cbb7cfe1a019572cbe57e6564a80548216831790557f4f915504bed163883c29a48225b6725748cb9860e84b2f3587426d63d62797b380548216831790557fef99e3bc496eeac16969ab15a6e5317ab064ea1ab03a2edc355f85232d11c07880548216831790557f24418d2765fefa012d4c27a911f50cb78aa1a8c5963b5d88975f3d2912508cab80548216831790557f7a8654b6156620aed83a4c2af2f04b88c135c2fac7f037d80611b497b28ac65580548216831790557fdba7222662cef5d6964cb6b566b03c3072300892625daf103ce9d236469f4fbc80548216831790557f2a083157589228af7c8c24ca24a4a54cf930e9c10d5264b6be712c5b751ce8f280548216831790557fc63504b585cfc340f9ef5942c4f942dd2312e24fad875087e0bcfd078656bcc280548216831790557f61c566489a0f25539c96a9f94e22467ed62333a8f1c6ad5858f0a24a2d58a4ab80548216831790557f0eec22ee1202b7589f3090c90d4cbafa4f92aaaae8da11bebb7487695b30457080548216831790557fc06f934031f2d7045e0990bc56f39e4e5ac5eeb6002a2c6ead1c47d1effcf03380548216831790557f40ff6a097133c9f8c9247958154aa358ffdf0e23a75da8205a38a3b69b202f3680548216831790557fd62b22667973976bac7d6ea6de3463f632d9991303d63973cb2a150fa51ab5ff80548216831790557f35ab7ca54d30d735842a66cd2b2dadabd5f84723be451124bad131aebeef32bd80548216831790557fdd8dfdc342ca8e14901023c245e0fabf226e2ed8a848bc6dd1508ed5652c9a8480548216831790557f968e834ebf692131410f22c6d83e8b0f3f4889be9c99b6bb03230408c7b98ef880548216831790557fdd3a40c150dccdb8b83749805939618d60f5c6eb0a172c3aaf7bc3750e21abe080548216831790557f318d2adb85703f741313c9c55014cf604489cfb9cd011c5a95fdbf3866b7fc1980548216831790557febed195035c38f969fa3165a3946a305b671318d63093e61d5277755118db94880548216831790557f96f6c1aa36986024e7558221397931ccb85717469b46aee880eace3ec0b8463680548216831790557fea486e2e0f8255b047452950d17f5f4fd21db85cd798b74c2c4a7b015c96ef7080548216831790557fb2336a87f5e950e7b183427ab34d15171282c26050a9b613041efbdc858b612980548216831790557f4721c304fca9a1520f37df707f2e2e4e718371536de74028c5e658b8cb38a7c180548216831790557f337aa638365c09348f6f053475bf7377c6d4f6ece72461876e81d3d589d97fe580548216831790557fb14ed56029935e326e1f7e30e8811f72022c2224ffb8789f5f8c4e2e3a90f90a80548216831790557f70debca03a29b6e0865ff33d7f835bc72eaa611e54001cbc6d89a3be800f529b80548216831790557f11a48dee170dbbff8eddfaf14e261d3e7bdaa6c48b7b10f00d79f4d0ac6dec9c80548216831790557f6055b73f7df76fcf0516fcb919830cc7e9fcbeeafe86e4168bb32fd5ca81a88a80548216831790557f78455f0bbb1fa580e992980f22aac1fee8ce33fcf2635bb40b1ebe13b62550b580548216831790557f248c8e380e10e02c4f6cd158e937302a5af47f32cc11e63d0c4fe34deaa9ab3b80548216831790557f47fc4280d4be70e15bc9fb32358d573bb8c5a060519e52e77ac6dc41d03ded6980548216831790557f70215299755157935ef6e33a742574a9c77fb8dbe9a440afd3e1819dc2b0d57180548216831790557fd72a35697c2ddd4dd03c0a7612be26b58e53a28a4cf774fc836a66134294cde780548216831790557f4c23998d047761024de33b701f831fa1e8ee9ad6e1281bd81cd5911e7be5ebd080548216831790557fe7146a48d73c182cae2568fde6608e147232eda7555ea3f6f5f67599e3a211e080548216831790557f240a4540a663a0b8c0f51abcedc4d79106c74eeb3daf0dfa41e274b93f48bc0d80548216831790557f9e4061bc0158099f9561d6fdb960e01a08c32442afc1666dcf5e3471c2c4123080548216831790557f8364119e4540a8da059304ec164dee097a67cc1dd54125b71e12d1eb7c3dfe9980548216831790557f878f502e3156d497250aae0cc7e69f1e27d5dc227563891f476e4f53a2dfa9fd80548216831790557f9baf9fee99834e54724e67dab94736c5fd2c2e58ce9eba2039378aa360f2c1ec80548216831790557f2b72f0abf197cf3c196fe7003c0ee6626044eab9bcea845ef54bcb11deac0f0680548216831790557fb2e4b9c04d01658efae2bb111587df1e3db97636cb5a794ab134a4121d9a4a1980548216831790557fb620c0fd67102a2ea6b4935d1ce17e007b541fb79ef450dfea6db25cdacaf7ef80548216831790557f17901f710b5c65b9e2f10bf65a6b952ae1af98b76759daee0ab47bb156bf465f80548216831790557fb55949ceeb6c1ed5962108a2b955ca6b2b43c6497ecde1dc367c9b679052708680548216831790557fd3091b90a5953635b9f8ceb63233bb1ed4985d734cf6c511e82767fb2a7e84a880548216831790557fc81d6d6434e66d22851700da95e71eb41dae8425fb14cb6cab0efdfac7fa627680548216831790557f16c7dc91694191040f8c2a8c909d99880314740dc1c5674ecf7a9d21d39c7a7a80548216831790557f90c48792197294a513f1c49a2653765abf5c3c69a75977a0bc829cbef3a0487480548216831790557fc827ed402168997a9f30548bb9b7e58426f761803492f615244abbef523e15d080548216831790557fc65834f1767d714aea7f93963096c346616bd80aa7beafb6c0382fd4c740e71080548216831790557f41629a6d53ce3c4a1ff6f07574a9c35a108f35fb46718b185d7b10c2a916e39d80548216831790557f8295885e6be3e36ca4a3bbded9b04abd2312c3ab95e61cbf3b25fb40de0e722480548216831790557fb129e39dbf077aadb4c275cab15cfe968437844a39d4575c3c398aacdf56ed8880548216831790557f3fb79c2564a703c82bc02043ab5442ee4e22408e1e3679588360452b82f3464580548216831790557f03490fb7619c1e2d7b5d11040eea9130d44203ee1dfe8d5dedd88ead18ac5acb80548216831790557f956cd6dfebeff3c3f447ab4053905260040639a47b58b8eb1fd67d01eba8cc8e80548216831790557f3554f6df938deecd57bb7e05b3f25d0586d53c64a458a67a708edf8c4a4e68d480548216831790557fb630ca73818cf17ac5f86c5f49dfe367f90608abb100b99fb52c5ea8f2cc414880548216831790557f0e7d6903a34cb252008f6b443e7f0c841b96bd7b816bd1642ef0dd84ec06186480548216831790557f84463a49d63b8a2edface3109209b3581456a06e4e9beb6dbfce10e62ec2610e80548216831790557f36128ba397da20348ce4f533434c4904d6949b1d28309770a238315aa2ce762f80548216831790557fc9c67155b718551362dc1e82a87d6b3bfb242be1139325dbd55023cdbf125eb180548216831790557f7de2fb366bba064a5116633bc5b52068efc8bd425e713985284d47d9c5e508b080548216831790557fea38d790c42eb2a06899fc188d9c7890d71a10899c454a213d8727c915bd60de80548216831790557f3d584842a3c1ed48b8f16f520bae50239e4dc61777f683e09c3f3749be1fa63b80548216831790557f82f3280d8706485ca9ad02f9a58c2f9562fb469077eb8745f929027ebd46aaeb80548216831790557f57fc6d2ecebf0886af0c86e65d291f3c322c7c6f721d1da14616b8953b810bc780548216831790557fabad3c0265b8405300a62c9be8b9fc414e42bb02738303ba196f53ed08b6495180548216831790557fb8e529362696a673f8cd79ff3715cbfc5c16ddcb2749e09280de8e3648bfc42780548216831790557f60316c23460a0e9a82df990b18b109404e296a31f4a735283e00b39572a1199580548216831790557fabd749e9a7721cb2fa92833d154bdfcb05c2889f260bc748165424a04754233f80548216831790557f7cd664ea16a25ad0a4059b46addb1864d1aeb06f1e46cbf75da07910aa58622d80548216831790557ff9573090c589114ebf61e9f5eb6479236ebac698003bb105608b6edb14fb8b6280548216831790557f3aa89437d4dcee1d87d2c2e6060b9a832932d2cd3c26a4d2cc74ecec6bf2e17380548216831790557f77ecf624d06e6940b43ae52683a03e55b10da94c5f93f50a06b45c7651fab78d80548216831790557fd365c0ab629cd8b135ed01d6eaa43786187f1eb3247126b47c2831065feb54e180548216831790557ffe032c4b448cad5346ad90c23ad54379d63ce3c8edac8e0c5a94486d1ab25a8380548216831790557f09f7c7fd89eaf02d07844a90220e45d1c4eeb7a8bc4b3f4576561bf6c9e0512680548216831790557fb03058423d51629ae865b2aa70e1403a111a02e72587c6287aaf5b3056f51bd480548216831790557f709307736f63795c6e3dd94ea9da95d00f36fdb8ed9abfb0475886bc242b323080548216831790557f97615504f92d01000fe3151d098017982da20590f09e8be01749494a95a281d980548216831790557f16482c8227f8c77beeeceea0353d40939a90cfc374c3532635f103ddd698b08980548216831790557f0377bed99a72058d4253c91193d485fc40e00080418be6ca77f12c10f65ee67e80548216831790557ffbfe5f7d3eb925136785892180fd2d98a4081bb7d9963de7030bbac48d861d5880548216831790557f5c284956a914d43a09a16a48a9e151d26aa164191b801c40dce979d09e353df980548216831790557fccd1318d5c31fd8f1745939d7caea43752a343e61a00edbed0a45e72508c4a3580548216831790557fe184c014517aad238431c39eaef18400e22cef92d1ec59ddc07f77fcfbf72ccb80548216831790557faa991b5846c1e79857947ea9fbd16af26327d6f60cad7b95b6b4da3b0b8b944180548216831790557f72b1d66f5ec198aaf57ea6e89cdf34cd927861abfc9bdaf4e72cc77672d05ce680548216831790557f207d16bde9a01264683024d96fa2fd5ff04a6e457b64831117892071036a377980548216831790557fa3cffd7db16f7814d208eae0e3b7cffafeb513d07098f0a032962ba67d004c2080548216831790557f6b0f939b5388608d7cdf7718a8b61d58f28328f666f9aca5d81e76800f90e1dd80548216831790557fff12ccf92f250ffadbd847802f8c49279c70290f28c1d3992b54ea52b501af3b80548216831790557ff5da4510c24d20efc24da6a0ecdede2ab4abc77c431f2ee8a84f8e1809358cf180548216831790557f811d8ab82c253561bbec7d6bfb5b98fb9f82cee1053a3717ddf7722c63d587bb80548216831790557fe5bdadbcfb8ebb96f87f75a7a9c7277626ec99e0d1c3da47f5b18fb94406e02680548216831790557f842d09b00ed44a5151e3a5fc6e105da29230d073e509645343582014aff80c0a80548216831790557fdd5f64caca6d7a45beaae3f8672f1dc774b69bdb412474302d1b317cf68d3c5c80548216831790557fad89a9cdeba3ede0f1a43511d05611b3dea079c2d612add4d67136966b4db13380548216831790557fdabd74029404061bad51aee3aaba3324e42d276929b3fba46b3ce8f7be8ce5d580548216831790557f4f0f7a4c08085b43a9612ce98ccb1abd3ef41c2965f7a32b8deda2028d1e45ba80548216831790557f4f637cc8a8968cdfbaa6b24d7d18ee0da61a29f7b962a0aac9c96e0b0c993f1680548216831790557fa502d8753c2772d3b7e93b45188b6817132575702ff99df0c9e87113a17a886a80548216831790557ff005091def8d61bce0341014dd093b3dbdab4a393bf7236dbe18b5dce66aa2c180548216831790557f32c44b2a02aca4a7f272a21f4a139052ce2f0c6ffcef8a9725fdef38dea736ea80548216831790557fde47ad9b9981b5cd008b1f644f384ba1715815f14a8f8cf773f2c29a84b475fa80548216831790557f5d34952ed40c8c5c7a046664fecdd75517c3c57cb77d157b80df721bc2a757ff80548216831790557f9427a352156dc21d44089d2c8452d09c8a93c79246c0ad804750ff79d406739380548216831790557f11b44649f49fb918c0b8ce534a73b8c5b7034c28f41f6b9af3ad9c591ba06b1b80548216831790557f40420dd91321fb3d18b0e8c62f16ffbb17234ae54c56ab7163b7f0997474733180548216831790557f888d1de4314d34249b1b869d7cc51e6ab84cb14ae19b1cd9db489eab4ab3d50880548216831790557fecc0ebadb02b7b714029bbd757f96da683177dac990b916dd7e80c0e1366a5a180548216831790557fe499e544d7826233fe0ecbb1039a3363d3b8d9f4bf464a9f54c1bf2a80f6dcb980548216831790557fd4d6c4a570765ad0f5ce30cd35c15537c492bfbd2e1bf59350864b4a8bbaa99180548216831790557f09aad1a743933201b896a964523fa59416968b288b1554e22cd0e36aceb992ad80548216831790557ff721ca73b2af85b62b2d8584edbfc55d5a3ca5b4b59f727da2498cc9b8a3142e80548216831790557f4b53dce7fda6b2080de4d2520329aa80c12eb78ffd0291a51920491777588a8e80548216831790557f1808bd9d03f4dfa081fb048b782bf64aa3fc3b059f04a19f1d276dd44a7725b380548216831790557f3d27d3aa54a9a5e789f2cd4a05c9be9fce2d7a922cf9b041efc32fc4b261f87f80548216831790557ffacc41a32375c4f6f66f0d1c2906fa1dc0da98e64db24e75d6d659050d8e2e9d80548216831790557f8bad4d5a5c54879945e2b6a4537251bd354a5bb52782b0fea98116457886e02280548216831790557f51e4c66609718b0912ecd324e7ba42b4d0271439ed5e2a6b284b1c9b4bc7c82280548216831790557f23cdff5d47ef7c75b7d282e76529c55737e3b4eebc1b0a96dac195280f8f5f8b80548216831790557fb7dc0eb948d3773954ed714b2617758720d8dd534ef9262d655d253f33db968880548216831790557fcc72049b6598ab308216ccca0aa106800a2d28b46c120bfd391f00bb9fad1b1280548216831790557f3c2f6c34f87124e655bb1bf99813f09afd5f88006f744a6e5887261fd0a4a3ff80548216831790557f5a400c5faf099d0558ce011988c4729b319856d6f5e4def35265f0740ed8b93280548216831790557f259893b1fff93b631fc12b85a8f32306346b03d1b72f8a714f60831f9df4f6d980548216831790557fd5dbbf20883d42005716aa744b67516012fcfb386ba476b59f3f8a51d45cac4680548216831790557f34e3134395ab66c746c5eba6f555bba8d959ea69fc879ff4059659b4cedf859580548216831790557f6a77dcdeb4396e2e6988f4ef9a5bb86ced0d4bfc44e653ff88b9cd44b771dcec80548216831790557f9e817e8f25659244e9eb95caa76f6c0fce5d040cd3102a48daaf5572d4fe6db580548216831790557f51242e8c675b3322c6216d903fd923e89680c5d107d74f815d7757ffa1e4c51880548216831790557f2d10932ab67b247eff003cb5541555f81600868348ff1b4135286a17b8505aa680548216831790557fc83a32164e065486ad091e1101807d574d6dfcb85029839df4e62ba54d405a0380548216831790557f6b3a9b30188242440cd1278fc67ed615eeb6ff722a4439d9907a656414a2c2d880548216831790557fc2f3864b50f6182d2dcc027ccfb4d6cd461fb1150d6c5749c4cdab7214c82b9d80548216831790557faeac29a567328b877e71b9308998a5ea10b8f13c1666fe05abd12e729944b8d880548216831790557f2eba602c7fb0c940dda4659fc790e45c31cfdc5ecb8dd79401c5d83c7a100c0980548216831790557fd6e51e5abe45e8d4085c59924f9aa90276a5cc641f22bac18d3d002501c3f8eb80548216831790557f0f927e68e1bf9a81ad8ba8c55ae731920984bff3029f682e46b1289cab6a214a80548216831790557f6a9557d169aa3c80c8c548066e4b7e9c1f4ad83271e1a533a229e6532c05b2a480548216831790557f07ca49624c43a122bd7be3af5bd2fa37ea5706a1812e79e893f19a6f01e21ac880548216831790557f9638018e3694704e6dacc9fae2490bfb86bec12242e6759411429c25ada4a14d80548216831790557f363735de3f85dd753b6bcdc4a96250d2504251c3d8aeb45fbe6eaeceaa66acbc80548216831790557f20593645a42944f62d80d25abe7a689c59972e7d0129074223bcde7ed586e7b180548216831790557f7a380c8304b74ff74857ce54334a3f955aa34c3f4c9c284e895755252753a6e380548216831790557f5e4c520c1d9756c57d7c78ac4e1f2e2581e21f5e969a7e8d8f26041b7de56c3680548216831790557f33905791947d3453d15cc45ac759181391ea3dde478f6b84175256c4d9af14ed80548216831790557fb3bf39f574f9302baa123a8518985d82d127ae25a62e1f50fedf01fe2195e4d980548216831790557fcaab1724dc83a267b1b8c835a817ee4e6ab310c9d81f16fcaffc0e466557bdd480548216831790557f78e0c1ab5fcd7691fb9b9ef280ad2b8fafcc75fc82be96d3c337bab9a6c5d97a80548216831790557fdc254b35327423680c4ebf7196a2735071fbdbedac03aa19f36d1dd45789322880548216831790557fcf696a8fd536c42faaa00c8bb1ec95fc9000021d54011c8a4e14cd5367d5474780548216831790557f0b7d6894e975fe3dbe5378743a91bae26ce5592ccf351baad20161bff5672dcc80548216831790557f8370fd81aecb38120211a598701b600b4b642b959b159f921f0dc6c4412aaa3280548216831790557f8d957612c8f6b4854961beccbe174876db2f771c404bc407f34161cbd464250180548216831790557fb5335b40806a3e944d17361746c2061bd8a8715e88ba3b4796ac3086ed33500f80548216831790557fea216a6e289f9fdebb2f6aade9dab93235d95a7f42a658860d6edaddab1d104d80548216831790557f216fe335e7007c2d2ac782c23852993f7082823283601c3221521115cc629fcf80548216831790557fe5dd8a9fc4ba4b4a450b476328cee9732b84fc52338a15a97b126785a49c5b2980548216831790557f94b9bd32b1467d7c156842f0ce5a7ae789cbe06346894c167104e3dc19ac538580548216831790557f5aef5e61be7100c5d85d4c666853ae3bfaa331eb22fbc7dcec8be2de989bbd4580548216831790557fd5cafbe9d237649aab37dd3eb3124fbc21916c26ac193576a0d2d572a425c85080548216831790557f697283b9cc9971c5acbebd785767a8918b8a5a47cdaf5df0fdddc48d6b7b66da80548216831790557f68bbb33de6beef9ee231c7a96a8ea2595ff905696196d1c085dc44b9a9ac38cc80548216831790557f81e94f7273cafc84d516f0dd0617ccdcbb6e03ce2e0c7a319a2af9968606fe0080548216831790557fefbd30ebfa51694f1c6316d99e2494d8891b7cb65e1ab0e0ef1e574db59d183180548216831790557fc740567c6e9f342834062c43bbf5d6eb2498d636bb517140a13cfd674e29455d80548216831790557f1adfa9bc2d041fbe4e52bed941382954c343e2d426bd7a51773f902295ee636280548216831790557fb84e88437651b3ec85fbc099886f441c7e0ff50a80a6aa3981aa9a3fee4e671f80548216831790557f7eae0cfb6d726012c71478a106dce906a27b34dbc7d31c75692f57fe4946d9c480548216831790557faa10ec649d1c855109206fcbdd0869c0345b6c10fa2b8d67ad85d59ddc173b9580548216831790557fe2f701113cef2f7506435ebffc925c9e7d851f481ced69b6e27df9e4e057e4e180548216831790557f9ff85458035a7f29766883eab9cddae85c6ec92b0145ad57f71169d6c9bfdb6180548216831790557fa357183dbb35b2640b5a7e123052d0c0679fec569ddd6d2455a5b7a64f4819d380548216831790557ff8558f0c0903a505bc59afbc552cfbe89905ffb3a7e1b56901fc258d9b889aee80548216831790557f1f9956e04918c7bedc6629a4208090d8561b6f6ba2dc3e03272f8053ef73cc4d80548216831790557fb8b5a10192eabfb26ce84462f4a5d35996ab242cc18797eadc4e72537c94b4ea80548216831790557f30eb8e77fdd72cc693bd2ff65b248b9172faae984e0b31a08624b1fb5fde526080548216831790557fd390e03c1fda88f09c3fffeeb74666c697e62c28b68df7e9cb87d8c6baa51dc780548216831790557f89a2f7382bd94cad526a4bf6b53947e0cce6c2fd14ea5446826415eaac69316f80548216831790557fc8f0d3e29e28f728bac52641c452a580c0a81bf0f6b963e03a618b230a1a157680548216831790557fbbac85a2619b83af8cfc6c20b499610f3c95e8e3c4f5ba029c4d0ccb4fd0642a80548216831790557f54ee45bc4aa37dd4c448acf61d22e91d800b820a9449635c9846e69f3763349980548216831790557f4277c8d576cc3444e8f429d5da15dc6a5bd6f88f4ff66183f3b8b37e2154f9a180548216831790557f2a840e3265ce9ed7ae82a81fb17bf45869fd337c383dad3ad6a512252c02593680548216831790557f0697ec4e4a955d1fde1957c76d552c474e35054e9e7e340af6c35e58b242f63b80548216831790557f3841ec09c733c46bba444f33148e68b90e1fc1b5a8bd68d0ccd1e2028773458c80548216831790557f1a6cdc2b7874b3eb642049be3827f10acc0b5e17d815b677ca11d656c11baf9480548216831790557f040142f89065f6f2440d382f269633a2df3bb8c8f4ca62d50abd86e8a19b15c980548216831790557f73fa7e8abd0cf767b64436a716bce49a9890c0e3a1057932950b47132b204dab80548216831790557fef32bee432cd3f7251a1d8fe065addd9c4f882e3cb1eb3e619c189b415c901d080548216831790557ff285ce0966732e2f04269bf87006c9928c7e2a7cc60d6cfc5bf5312f9e0b0b2e80548216831790557fe27cce913732f20a63d8131a5f30e8a0585291e9648a9073b27bc377027e5b4380548216831790557fd48b16e8e99c9955cf30bea9cefdc6f62ea98e5b4eafc6458b8a655f1ecdd6b080548216831790557f981bd1e56d8dfa1f01792ed9ece49326be2b72ffc54e2ba91bf388663537c47980548216831790557f051fe9c63a488932e1ef07007ee4e0ba573f3dfd3ffbd0b7add751045c67564480548216831790557f7797d7101e9d7ea71ded961bafd4cc7c6bb7af67ebc814c001f6bb53db9622ec80548216831790557fc049f68d3a9e960bd66acade410cf9caba4ee8e2977b38bed6975c4195a005f280548216831790557f49bcc85e4d8bf6cf5838a0f994acb3fa68cc858e97957627977232bd54b13ced80548216831790557faf863607d0d5fdfb3bb16be61e64587ec19017116c8dcf71e908f01e3691f94e80548216831790557f1a323ca7741895dcaf1fcb4ff9d4fdc3c68dafd3f51f314c8809a7ccac07020080548216831790557ff41f826ef5a0534158da566f625b7b1f7e26d9950be8f63ed09fd7b747fb9aa380548216831790557f3cd1e917d93058218569e9d582bc27b429bc0fb658cebf64daa41bf429f0287680548216831790557fc33802a1152625d5328ff238152206b62f5cb0f00ac4e0204b2dc31ffe82574980548216831790557f1f04a3b8f06d66c5f6271c576f083a8d2c128dfa501486848338c68cfc03efe380548216831790557f402722e2c19188443bd57f9570a85ab9e74b9caf14d2a959970aba9ad8f994d680548216831790557f6986df69c720d5658fb7737a19328d4a3bd03f101c459bb962b2c7dbb1d0c45e80548216831790557f51654d3873986492fe8ebfaf11b18ed1e83f3a811804b01ac7cf0ab481c5fc9980548216831790557fdff0199edc76a1c3da2ce0e970dfb77170c0f453ac8faeb1854fb9ecebd6b13680548216831790557f50f4b1ac893de5117a4aa3e2f64b16194ba142d6b24062cfae69b7eb88228ac880548216831790557f77183ceeb7b8974ee9a9d62afdc2f0cc9baa45cebff7bf6ab1b22fc273110d6c80548216831790557f644c3c81e6135a9126446261d37a3126534efd0ce781c8713f000566648661d080548216831790557fba4e51251c8e82039237ca9812353a522522666a74517ba678f31d16fb33ff4a80548216831790557f1d20dd1be2e0d165e550343c9e79280cf5eb90ebb2e09ba255325aaf6b339c3980548216831790557ff8afe3767f2d583719fa4bd7ad07b12c125473cee14b63a4523d7379423733fe80548216831790557f9767a1343997340f61f522645f9aefdff3931efbae256990f64f2224d665968080548216831790557fcd31263b5d05e467e735b1c3fda8516323539ad50ddf5163395ee9e2f0e4060c80548216831790557f5631bb67c7b749b77e8ef5a8c59aeee2b05eac378457c63883b7826d3b8f479880548216831790557fd29545d479762a56561594f8853ba7f85d3fea2a27dda0dc215d5234dc6e6a0580548216831790557fb111a9951604fb5fc2d7fadd1d118959f52631ad5e604a7fe39539b75a32088880548216831790557f13261db51017e9f1818efc2ed6539fa9893f73c765f7e6f4f3bba6c429bc626380548216831790557fc09f16219326be0d4298835b128795f69c87d792340c427ec28acb1381a055de80548216831790557f0b7182bbd147ff4b907fabe875232b4e198a13d2eba5a720805090a8f5a2cbbd80548216831790557ff4b2f7057ed3eb255971fed93b86acf7e2e491818a51f9f8bbab0de75516a74080548216831790557f5135d55f8197adf1420a8d1ca21a644b32e80a48d0841770248bddfe49bd3daf80548216831790557f57f12e8e212e74f43f8d593f145948d7c18d32eafcacaabe3f1dc2b359935ac280548216831790557fe2a4859cf45f2db6ceae4cd6dd1a147efd944e197f26e07472528ddcd6f1808580548216831790557f68d869deb6d94dd31a6c7857a7fc09a614ee6c2b2e5d671c3dbc992e5707a0ff80548216831790557fdfa0cf3d5955ec7cd81a0a8071df802215c9e9b5136afb197ce3bdcb8e8b27d980548216831790557f445bb3098152509d1ef905f13543e33383fe7632bd095a5885eefcf5c4e55a1280548216831790557f9615befd421fec12d65a06c238c8fe9754725122558317a7a7e1a277cc62c18680548216831790557ff818d4b0d95231e2936b6e2b3a905e556001e1337359375cf1ef73e899b658ca80548216831790557fd16f26930fa4cfbab0e9839eddc0dcf87cd99174760c1ede3a4da0a173ed346a80548216831790557f36e1a652a8351afe9be881e4e1f3290cec514d0cbe5c3bbf59fdc6d0ba96f83e80548216831790557f8b0a2f086639f4b42fe333ff1f68550e5e5b10dd7959c834fddfbae6702ff74780548216831790557f77aacb52d7887778722e2643951e20f58665203a04695e4cb8304cb5b97a241380548216831790557f6ad7ee396a06c294e51f9b8c5f70f3f965eae6c674efff39fc36c03d6ebe391680548216831790557fa76acd43b7d1ce40b617369f3e27a665ed6f88b0622b5bad7def55b779a621c780548216831790557feaa9ea1d60e6e3f013f4293b272b0fbedd4819dbdc4c5caf7b614e9e3554fb0280548216831790557fa57eb4bf24d0bb3f2002d087b417f730162eaa167b2cf1fc4d9630ea8c3fee9780548216831790557f358c9f45e9f81d89c393fa32ccd9d1433707134352bfecdd222227003f6a8fbb80548216831790557f59297b3cdf9a07aa69cc44109623336c1624645945b27b7802bfd8735615313480548216831790557f32e513f9b592fa0a54c7168a53ffc176a8357fcf90b0b8df9f674b86de06a3c680548216831790557f87f6cf1e18cb3c4ec7f84b363340a517fa1caeb34264ca77a993348b7e28389c80548216831790557fcb59c2f7277f99a544cb53352b8893b8b2520525c5023526c1413a10da77509c80548216831790557f1dfe65f3157d047134842e098ec8916498e4c3c8246b2079d2861e4dc3de45c280548216831790557f16f9805d231a440ef2213a84ebe5872be57ef799eb56fb816350bbef55d84b7580548216831790557fb5a8160e2510c80f0408e35f6c50b0eaede4bbab7f9d34b7bfe6f8fe314baf9680548216831790557fd43553b822482cbf837ef7d38bb72cdd14368a4e3e43c3ac2cb79bc778c77ac280548216831790557f35f6f5477db2260af34885739f7841eb4776d58a0a1e1ea0d6b48ee75e4a875b80548216831790557fdfad143b8dcd17fb4208021903f9a9cfff00a79f396ba1e0261e0ab4b3eeecb880548216831790557f656cd64650fca1d50074053c1c7713d116586b2b1e91041460eafc03616361df80548216831790557fb2a7b5ca8e06197e06a5849b4cf11edc702ba5ba1badf3489bec47be24b8fb3780548216831790557fe7921aef64d2b7135db14004a290e1361c12fb8adb6b29ef2e64ac8f95553f9680548216831790557f31db2ed1c61f6cada65b65a8cc53cefa77187244fe5c8a055b1367d3e4a6b58f80548216831790557fff6fab05cae56324f8959c7f945f077e31ca9d0b9f9256e1a3504332b44084c880548216831790557f712a7b9dac0f2325bc95dca47793772190bcfee7dce173fe959f83b36406b3d380548216831790557ff2ebebd08958d0ed8a197424bd2eec7b8fa9ecd67d8c9b99ccbbf78dbf28bd4a80548216831790557f77dcca8c73bfaedc374e93c49a75860c2f35889e2bf79d62d720495634ac1bd780548216831790557f8378850b2a4b6c7d5c268cc53cb32b54b28f992375ce7c26b1a22fa7f5c13f5980548216831790557f6b323ce3edcadc6b88913c09543841cf432279456b5b73533b26efba7ab329df80548216831790557fa88b95849d8be120dac4270ee2cfac7226f2b362ed2f5bd474c25159fc5003da80548216831790557f7d341c65668f49ada74c1dd0838da1fb8b06c8fe3fda8c7c4bac58e961d876de80548216831790557f2ea602315531fefe65b66598a4289a2edb883d912f5464d87a042e639cface4980548216831790557f475e68a4e8181ead2c302c2cc95ffa2053c864c161d4869796cc56a32c5dfb7f80548216831790557fbcf6b4eda3419bc4f714750284ee2bd1eaeb429114c6a30bf197055d0bff7f7080548216831790557fee2c1f754b04c87e69b92a4b7479b77a81a107a8f17ac4a30c9ae1b98c6c80f980548216831790557f0ec027636215b3e9436b63bae68c9940145dd8560e6439b6427a9b218c4357a380548216831790557fa73eb204a45ef5623c84769779d3ce381241ef911f01d82c70b017b09742488e80548216831790557f0de501cd46fc5f60c6bc4ea5c6829a0d211777eff20feaa5ad976d93dc3a95fd80548216831790557f2d29d9339eea5a6c524061ee0b2a679b94c9c678a6991adb47ff6c40b720e38480548216831790557fe964ec27b32648d945badad58d9804d9924e624bb95780af5c5fcaa5e1d41c6880548216831790557fccc4b3b817149eb315909c0bd0e294d73593d84f7bc7f81572edc3c0b029b69d80548216831790557f41d965a5c05465fc60be46a9f088e8ac87ed0bcc0e10d4b62a7240aa847c64bd80548216831790557fca72216d01e370f7d892f06a0402f6cd8b5566b591368f4da4121713a067058380548216831790557f59feec819f36915c014e3538857a9bf4c63ee4089c97080977eb776c0e879c8980548216831790557f6f738461027fead0b9823a18f68906d66854a7b69ca9e2bc17dd723c794bc3fd80548216831790557fafce1d2c5f84a72f9b2b510c5d3c8c995b1e8d93f1dbaef2ae579c06c2ca59fc80548216831790557f730713a2534f30eddcb9f32172d3a280b346727351261abd86bdbca602acabe380548216831790557fa9b33f4194d0e7e8022128bb55f06c95fe5b0cf137a663895e6aaae3eb2d3ee380548216831790557fc24684b7fc941f065331b81fbbe829bfcec9bcffa18f35d933a17084396c77b680548216831790557fcc8078fe88e29bc83a312c949ddb521906731c9d204a2b98750992513c48660580548216831790557fcbfdbd672beac7f4d66884286d6f1d5497943014817adf6422933a4ccb7123d380548216831790557fab83b1b17978a8eba6b3779cd4682abeee5decd0c0eae576e97f5744766fd6c280548216831790557f7e388934572d6781d3cc1d2171ed169b9373750157c04430f20468ef9f59e75f80548216831790557f3233cfc2f99e0813f77b1d42a111927c94c21cd17e91d2e2debabe703b88376c80548216831790557f075188dbe04211709cf0c38dac294df71fee6a1a5702983a3e17632b310946d880548216831790557fca8893d29771b8cf666436bd7deaff15bcb2ff9ffae942bf3e6ea56d3cf3bdd680548216831790557fd7a1cbc022dbf1cfd8629ee69439af916a7361951253a3db9a680713e677e74880548216831790557f2829796f9ac25d088d7123a12b002053c5cad895cee51f56f7b0736f31cf5c5280548216831790557fb7d28a853805149e601466a31f2b03eab1f8e3a95db97be9ddcdb72a5294d2f380548216831790557f55dfb6cf1941eecee6f6c595bf5e63c458a96571ad8f743fcfef0c5835bffa6380548216831790557f651193a9aa98521b1d8d77dcb89a690a3e7d337baecab119164e9824c382dd5b80548216831790557fcf227e2a09b39ff36284da53441be991686901ffc383690ee33983e3c42395a180548216831790557fba1379f759c404e15225ac53478b792ec5681265ca39dd078a47150b880cabdb80548216831790557f727a5ab5d6d646f577ba8290985d8c68764900548d88b7b61604b784aece3c3e80548216831790557fae8c7fa3de1d421792ab56106ce8ff790eb7e8b85d94ca2df85640da25a343b180548216831790557f49fc971b631a2f7a5ce2667bd25a3a6259afdd2b9667ba1de857cc0d4a8db30d80548216831790557fbd8d389d75eeec1263f881f8cbdd279f880b3a97b0013b8232cbddd67e6ee18c80548216831790557f03aaf56a9b362c8fe2aebedc4258250f5abe1d4429e1eb9135cea0412237dc2380548216831790557fc466b6b2caf6fd00ce6a1ce2cbe1458a5ac1594461f0131326738f450d68e69080548216831790557fde7ffc2a45be32c4a850302f3b24146d4627d71236e302366dbee209dc6d38d480548216831790557fc9d621d7f5aa9afb120315a4270795455d03bc75f2767481098b8b3c421c80d780548216831790557f3bf5f08a15cb4e5d02bd9dbf3d9f7dcc74ae9ac887d06879561ce1aa762f9cf080548216831790557f0d35f47d9d022b78719f4ea332550f2b57d46ab3927ec1cc5552b32044987c9780548216831790557f3743ba8d1d59917f2fdd7c02871a539c103fe70c87220e22768eaac376f7126f80548216831790557fe0ad300ba9b3709ffa3a91fe5e9236706b76d80531b99ba4a44802c896507aca80548216831790557fe95d7b9f5b20d2fb4eaabfedae6596e71c5c8379cf59777e6c2299f80446695e80548216831790557f7aa11caee00ec8b27683386558f7fe47fec7a4717c0beac7848c1662e94e79d280548216831790557fad061b076e2ce9f697b1acf9540c8977a56f497240400e0bb531c0a9ae1d927280548216831790557f81b3e87653d86c65c8145cc325a987791a495631833cd6bb425aab7df199f83e80548216831790557f419e010b60bce03cf9c2922efc1fd0fd8549ea12acb7242b1a2ecb1167cb6cee80548216831790557fe015e55630574fb1234806c2ce6accb4bd04df4bacd6de822036030de8586e2c80548216831790557f3bb9331bac88b183a004712352042ce71f3da001a844e7043dac81ac700b65fd80548216831790557fce7fe620d8270a77a983d0604e0874140d2e79b5ff8343cd12b71391ef31c64f80548216831790557f356ce2322541d47d40815f6956fec5f27826be20520bc8be5e4da846f741379d80548216831790557f9d6181f2c460f96abaa7dcd2e8338ab974223ad7edc85d7391501562f6d7d12780548216831790557ffcf59184b6f341bdbdf6c998dfc01214e131a6ed3d444b0b7fd1fca6d4561cf880548216831790557ff3d6333970eca5ef5d0b1151478623c2ae6ff7e33a1c3063004e4a813b9963f680548216831790557f9af6d67b9ae6a3a617815f8720fd86246daa7e942e6328e549f51ab465a7002e80548216831790557f9eb0cb8084abd7cef913fad54fd572d6c58842e1bd55b42409fee2de8820280480548216831790557f46b4bd040921e45d531469051048c2513a8b334af06ce69b021644dfdf38c7c280548216831790557f0309cde10cdecaa3dfab3e36cefc1f5f16c730a60799a7ffed983fa68a6d5fd280548216831790557f7787f620c8e1bd7bda25a66bf2bda25a01403748d9554d54e112393c063b63ce80548216831790557fc9e68853b9b161563b87b1ed82e67a56d70eadaea8348194782bc3d2bfa4171580548216831790557f35f50933a42d906b8bfe2355c84e14983f54a23bf4f2473739857b03d011edd780548216831790557fc2def1bb0408feeaabf9634382eb7edd7a1922aa34dfe7a14b0b4c76e924b8aa80548216831790557f9adf5fb85ded39163062cdd5ac96b69a2f755adf424025585f06904b2c61caef80548216831790557f8ccb9e6502dd645eda91b053f9124d404a725af297c62d38dd7d00d3faa1f19180548216831790557f5a88460e1c0d67b8ccbae1dc27476ebd21d2b029af3103c81863073302399d2980548216831790557f573bf499678a599bef4fb09b4b7b5485dba07ac2ddc021b54af722b34609de8580548216831790557f7d6aa8ce000c2431a4109c9a2ea3568d13495ffacbb09abd79f9131bcb573caa80548216831790557f98fa613abe378bdf7dbe022378d46d236633a533a62bde34cbf737461725346f80548216831790557fa5a8a15886d693f004b06a8286cdfd8c261a9ef8661438089a5c8f0c1fa4856180548216831790557f8a15a97af187485e797a643e63c0a5fa791ceb975493f0a12274f2b895860d1280548216831790557f725921e5ee455a6f2e2a98dc94466ea4355b5d8062859651911c4a8f9ac2126580548216831790557f7ee5244ca174e5c1c0bac5c0dea47cbb6d54e82fae86731ea10ad3997d96fe3380548216831790557f30ab9ad9cb6044047bd25f163209c527b41ca919d245cb5ed8746aee7f7ceccc80548216831790557f98126f5373f85dc329cc00e93bf8aeaa5a1d924adab4f7f237b825f910f2bc9080548216831790557f7f66aff13dcae0bfbd70b6435997ec23caef2ae09228723107ffa5e5ad8caa3580548216831790557ff9e0cf1e7ca115d55fb8cf5bc739a1d5148529c880246ac8ad2e0d4bbfdb202880548216831790557fc4270c7ea28d45bcade57c675aaf89531ab949f380164cb6f406971384306bb980548216831790557ff9a57fb03829af0cb8524c28e7777dcb3e97e989dd5fb35a77a5e33c38df961480548216831790557fdc8bd598430235649d6b5c28b6576ae4f9549fc4c6c0f480f5a01ebbea9c073880548216831790557fa0dc4c82e63c607d140f3875a778f50ccf17f0f037aba7c30e221383197a3a4780548216831790557f2d490a41d04baaabbd15b6e8a1c142cbf799710056b2a4ea1fd648b1ccdaf2b780548216831790557f3eb417c8038044625e275b6afae01ef2668eb708f539eeb576a2adf178b3f07380548216831790557f64381d2ccd906dbbda8d6e949ae6103c5e2ddf33b4136e3a72c3e5d4784e90e380548216831790557f6c15b5c95f2afcd288bdde9dd8ae848572b465a58275cab05e0da5c0b777ffc380548216831790557fe56cf58484c443f42bd6c49c9347d7036e92c0faa75b693560a156f7bcc9910b80548216831790557fcda1e0c281893a2a1b061eeb0c455b4c07ba8e18bacfd48f5654dd6fdb8ff48d80548216831790557ffac87fa97052b3517ed247ae96ecdd9adb7a607493455e2fee5415b0fa88f80580548216831790557f94b2eeaff8100957505a0eee5e1bb1385c44e7ddc89a435680f8841713713fac80548216831790557f3359a6055bb7f9bf3dd1ae8cb3280ef1a243de274159398fa71cd3b1007817cc80548216831790557f453369075c6d115510fb50aa6806dcd641ace8aa55ed41d6ef6e4ae6c0e31aee80548216831790557f4ec755f4e1504a9693d379962a826a0360127ca964d9a2a0ce42262b770b9f1880548216831790557f0a7a91d55f3acc1225e0e2f23dd77910a0d048f585dba36925bc02066f96cbef80548216831790557ff46f23b214c82c8eca0b3a000dc072ebfc6a7ceda7fb68a349e1163dd2b373d780548216831790557f98638f09d25b74b08415c5de654ad4ce3a28c2c4eca33d63bf82340ee9f962c980548216831790557f6000c10f9944e427900f1de6d87bbb4b743a7ae6a56baf7e6cec5cf4539d292980548216831790557f370d851a1b5ca839131734600f4cba63ed9e772e2d8d4e1197c1ab57c449907e80548216831790557f16a0faaea5f1e6d32189e3008a87428f9d6b7b1df0e8c24648eac8a7486f2a6880548216831790557f132e646a24f546d5c36d53d55e4f3e109d28d123435808473ff925cd9079921e80548216831790557f2b975ef44cdd9cde347287fc2c102a2fbdee9e0e8d2400098a2f38b1b2ebfff880548216831790557f05bcf56483d6dc32a4c61a201c500954908d618dfae70ac8681f1a55407b804180548216831790557f69ea0958cde2acf990ad6155c96369cfc157752f3a2b4f53668c9e7dcd0b43c080548216831790557f1d1d5d075ca592a2d411629613b7b23c3f54a9eb5b965a8223dcecc04306a8e280548216831790557fa5aecf7c8db81d4b09d3befcf58002626200b968cddaa4583fe878d74a38f89e80548216831790557f2a14337faf8b1b1ce822467723fdb4a4329e08d967a1c5868cf44d42d836cafb80548216831790557fe85b432263675d7a2e6589df0cbf173285683afdc38a387b43ede8a97b58ac3f80548216831790557fdd2b8e8563b4dbc40fba5b98a2ad13421245c0d68d666c3ead6910803af90f3f80548216831790557f6eb52d3ff80d128bb28d96ca469a2b2ad298de80282e07457106781fd9e5ec3f80548216831790557f9c0935769464f68c5608c6e553d192f924539bb93c3f7d243dd3ac6529be87a580548216831790557fd4e09b9ccfb3e9bdf3517880ac647bf81f94a47cff8358d47bf276d6d268d37b80548216831790557fefb2055164c8954ef4b154bca2b63fb752da81675289f962e51c6ac676adef4e80548216831790557fd664d85fc516cd1bdf92060ba45e9e1c6d4cd11ed63a1b6d20b6dda4ebb3ab1a80548216831790557f235ed68ce42df852525629a7e26e9dd54f28f8f07388497f8d99dedbb5d3b7b180548216831790557fc1d2814446e519116ccc22463544da2dfeb992e5e6c13615d256692713adc99580548216831790557f2ab211460ec5debb9bba8d1f88abb83e3e39c3ace1d08ad7414399eab021982780548216831790557f78f30ab861c830959aea0bbfdb462fb9cc4d7fdae9e828cd4d90ffa917f51d1b80548216831790557f478db60736feabc512d41641fab5e5bca6ed918a6cf01a7f1c2b61ed82fb96c280548216831790557f0410f513abc8b69025a19bc5d8373539968c6601aafe889ab0d583698ba83d1c80548216831790557f789353d888b0dcbaa6e1f77d37abb4acecd94e5edd383ec76a24dc502cb6596a80548216831790557fc64907fdc704da2c4a7ade2f47c0657e0b6872539345791d25534aed1d49fcc080548216831790557fc416897344f444d5b8b42c1a99db80378a6206f64baa4fdfbda6a3cd51f9da7180548216831790557fb710532534b4d9fb70923a923040eeb6cae555bcccba31ae13a97d97c6b3df4380548216831790557ebb9463d4483a29b63ca40b03b5750e24b3cb7a65018ec6716b842f0b49910b80548216831790557fb8b8df56d68b9a2414238c1441da2cf1a8cbd1ccd4b4b98af8ec901879c02c6280548216831790557fc7266457ff4d139b613781a42f415f0e2a7f954ced0fdb5d3a303d54bc6371ba80548216831790557f08a010d14a86cba03ea5cc35f53edab41a4ea1f057f536772c441fe63c9ba93180548216831790557fd47b464472d09c6eadb73d055b58f26c546626e3a1d8b9e3ad463d3de668458d80548216831790557f15d3735ba493e8111496d85728a19004cc76672a32937424c91da977b618ec5980548216831790557f0d553a2f47f54e41efa51155372f874cb6b44d260f84138c6a113983d32dca3d80548216831790557f7d6c7807c8efba0ed69527e40eb523456c581aed900c3df3cc36a4a157e3afed80548216831790557fe0109447ce8b47a02d4414c5f976c8efc18d35cdcd1597efab664c17e281bb1680548216831790557f57375db87bf2e57b94bb2b2ab2b991655ed138c78c98537cbccfaa78adce9eea80548216831790557fa3609888319e24632c40b6b3d5c35525af8ea0428694199cbd4b258d2782ce4e80548216831790557fec89f04077c8f3f7bbcf2cc6f735f95bdfefc8c89ae6e5a35eb4faedc418d2a380548216831790557ff780a1c5998074804e913356e5a37a267f466abbd9f64f88185a1f2c9a82275e80548216831790557f138a97291ff8f13e0bcede1ac2cf9c1062436a5d30a5dadd66dd5633695b7a2680548216831790557f7820a4cab7eae4bccb0721df2e6fe7f15b782221d5fb07e4d1f186fdaaa78a9380548216831790557f0f518945a8fad343b7f5c1e416e50643be8c7d1b490fa827acef0f60e2c53cbf80548216831790557f360413f01decd15588b89bfa5585dc1f90fc58b08ead13fcb649335c4283b16180548216831790557fd8f7b1245ebc13eaed354059c75d79f23c3b4ed4f0e5adb2b2e914b0398d5cd980548216831790557fc74595c1998221caba2583ae1a72924227a1ecc0189fafa6d1c056b395a1f81380548216831790557f97f53a39efaf53fba80776f89ca4db4fd3b38c19ae0a3359037c7793eba6d54080548216831790557fc00b5b088c213c2178a43d4500dbe8538396160fc4c71b9bd6388fbab2274cb280548216831790557f6f8949fb5c09f1e968e25f3502b4be108359dace6b07d2a3df921dd5f96b381680548216831790557f98d63173cbb7b7c96ba5723a84a1dbf4104665a110bf07ce202d8ae8963565bd80548216831790557f5b974ba29a5f077faf39aeedfcd21125db2a330874f0832de5cb8caddefe99ee80548216831790557f9165d5a138d86425cf5fa30a801e0867eda9b52de88eaf5d8a9d96cb2e10027d80548216831790557f906ef1f41c07f2d3ab470e5bca921d66145cbaba672b463b5fb0c10652de2aba80548216831790557f278ac9b800d538933a959f11b2d5bd6e0f1463749f4800bf276c91365038978180548216831790557f4577a41ceaabf5b40177c7bf4f55e6be8ac935e249afdaf168126c60cdf8fe5480548216831790557f63039fdfa27e5ea6ff8e1b962f522205e9f6d92ef18445fff6efecaeed47e35180548216831790557f3e8b8c99eeb6502d2f8f2eb386cc419536162ae462fdebcf1c5fbb30ef2bb57280548216831790557f14f4e7a0428923a14b99398b6aa495eeccbdc327aabf9e426670e3eba2a46c7580548216831790557fa04b37dc84478ce3ca8e9fbe671d6b2c1c73fb0589c9ee9c558f6422e425074280548216831790557f41423bcf88c13685a47bd51b9a4cc84ff02624f85045ae4cd07d8537e0ef129280548216831790557f5069a354ee74012773f56a887a54c672b1f3e36433ccb17f6fa4ff30564c4c3f80548216831790557fa0eada3a855ac3e106b78f1006f0a31a4c4479711b4801a8917014fa6fc9e33880548216831790557f3f5c5ad6c8713f9cfacc1297c0e318994f129e3b9ac21766ff2aa07b57f0dc3280548216831790557fc75bbaed0a590422b8d2fd6e093d9b78f1ac389bdaa46e4dc8bbdb4cf8e3576080548216831790557f6d25b8b195d306e3da6b99020af95cec81b489388f0356dcbf12608f1212bdf880548216831790557f66c2554f0b5dd3dba930d50accc7a43a98b4b46fe84920b191557eff52eec50480548216831790557f50e24776f5ae5bcd47ba7024933212ca5965757e26aa68acc4cdaef96ef9383480548216831790557f16acfe0076d8b5b8eb7bce1aa95aef10973421868f17e56331a60249b9cf6ca180548216831790557f4d6bf44839f5e6c5949af1f3a2a867f5acf1c0364ed5fca66edf50b189a71fa480548216831790557fd0b507b69ea9760234c7a339271e22c44c563dbf56048774348d5b68b7dff8dd80548216831790557fc61d9533446a1288217d10cca90533e45c022fc88fc7ff2c488b56e191145d7c80548216831790557fe8f354652fa9d230b75ee319feb0455831ef85a746b2abe7dd6a0d1b29f3ce9780548216831790557f9b8ca658e0bbcd1782aca46ac9854d8c70eed87793b6acb7c773c5fa0d8e933d80548216831790557f1fcf1cf9642ca155bcb358fae136a51fd119f6a23297cf236b4be3ec0c8ef08580548216831790557fc2e5145c58d636e97520f7b2bf6f59ce34721cb4c7b40c56232d1d684e59083c80548216831790557f1bf5e85d12dca7527a5a5385a54489cab02bac91318784f3504074cb02edf7fc80548216831790557fb6acb832eeb204d9246c886ca109a4fd0767ae0039d3f0f340f55e9078e7c39280548216831790557f3a8f877fbad1f14b10c98e729fa98d2a99febe6b8e2803f38b544b63975e1c3c80548216831790557ffdd31dc12810316cecef62e90c8ec557b425eeec82ffd4a4b1ef9370f3cd59b880548216831790557f8875fb1d6cdc853c8ff1a4034639eb0a17da3807b431708ec4d3b0d67f757fbe80548216831790557fe62009383e3a1271e7c47b73f715db7dfca3a0de8ba7f7d3893c13ac7d79c50a80548216831790557f7fa792132aa6c2a63a8659a8014576542e07d059dffc2ca52509e966425a481980548216831790557f228094c23e2054ad8871c922b4464a4a85ed2657dc4f4842d57f2426f1095e0180548216831790557feb294d3bcc40c0791f5969a58f2d7426aff0973c958e1f48858ca596ca26d25480548216831790557fd5180512fd0da255a8190e6354f182e7820b60c6f655e09a842cd76ef0f51f9280548216831790557f81b6076564640db7557c12dba143fe51184b0c6907b66c345980956baa128aff80548216831790557f2f3adb4e333dff2a0526df25d38ff1260c97bef7572bad0c0bfeeaf3a235f92580548216831790557fa103d1b141f0273fcee350eabf21c5c8bb4b07d9463aef98d5fd45b6b92da61580548216831790557fcfdbd97f2e0b365ea19d23d796b58ddddf032ed2a8db5b44a62e6d64dc4a063780548216831790557f82491039d5cd21ab0f8c54984c52ec6acac211fb1c441a8794db33f3cacc1d4680548216831790557fd2f1c108ad4fb0975de9450932b38edc8ef5558448cedf43c2688e9a6fe4046780548216831790557f93ebf450b32ddd89e31cbb21d68106422dbe09ac166d695a10704f42eb58859980548216831790557fb3129035c58521c56aaeac2723500352e50486c8904020047f67e89a431282bb80548216831790557ff7fdeb75d6290a623f8c16e5ce2a42b0dab452d0e068f17b0c7589ba2e1f0ba280548216831790557fd6c5dec352ab6b5d70885d6b6f07244f1ef5dc34178adf39734f001ca03ab75180548216831790557f2f4fb8ceee2960fde60a44f65dc8f10e15f55ce2b7af65695b15681f98818c1680548216831790557f2419962924daa50246611dd80a69c2390092b92e68f07dc91d730ed0e99ad55480548216831790557f4f0917242078c183ce89ab868bcb02a93d51aea9bf75e4a5c55aff7c8aa420b580548216831790557f28994a644bc4288a5e4ccd73f8746a1853e1f3cb8229af8943669ad6350ed88280548216831790557f31f6b3e367be798bc4f08e1ad02c0473e9c18771fd69f87d9d3e61c6d5a6ef0580548216831790557f9ae9c19ffadae70e55532c344770fdef016f17f8b749b808637f4bc4b86c7aa080548216831790557f260106c824036798ff9225786d794bd2d6c1c400ff9da0bffe94947e4387b8ec80548216831790557ff61ea6eee7a3f5211ce478c92b0b98ee75dbba2baf9ae7fc1f77218d69f9f24080548216831790557f077062014e0c5c10f42ee673eafda2d4e43c346c2c958e21b3f894f3db85a9a380548216831790557ffbb7f953ab89d75c0a39478b8974e3841b68e0f083267522fcc1d3124da6824380548216831790557ff70bc930fc11a98a373f0f5d11d34506458b41ff21061709b0575e9dca62023580548216831790557f9d7a5a1aab1ca8f12c824fa4961f1f124ad198492d2df8cdc137727e101240df80548216831790557fd1d6989a62e3cb563d8ce70b68a927bbf214fa48dd388f59b41f90785223b97780548216831790557fa327d8953a48426740423d6989c9d2e06f4c39981c8b053bd1cea9a57831a14880548216831790557f90169516ad2a54d6d6fbf216df5996e86c3d99dbffb1159701213c9058aac93580548216831790557f220b697e126ec99a491d2eb24676655692a50c1a36bb1dcd5c21ebc69d37ec1480548216831790557f4c73131329265681b7cbf2858a4dbb204d60f4701c049f6a2bac1d96012bb8e580548216831790557fd247341aa57f0c3e8d60bc6a1eaca5ecf79f539315864c8596d8e9061bfa16f580548216831790557f962e4f2794c4db96ffc316b604c1790f1b175122035e8606dbf6e37e2bd45ed280548216831790557f362a0c9c1963db56a907a50ea327e0ec02577ccd28deb8658451b441ae0a018980548216831790557f09feca0880b7ff24163c7c7904a8bcd17f765f885e568cc01d1c1c91b0ae7c4180548216831790557f449d610f740996c58f01c9b274121711db54b4e73324f2d01902eb9e56bc8e3880548216831790557f4b59c3248ed40c6ca22d0784ed942b4c8a9dc44c833969d8ea3735e818eb2ce880548216831790557fbe3401fd6a3a6d47fcd16b75ad30e50e8049410fe9b82d7dd1c98f2ae16896ad80548216831790557fc12cce09f86374dc7566802f5354857011a5c77130f4d31b1169cc1085017d2380548216831790557f5a2ed9cc6019cc0a77eba0b94198fe11ab9e528c30d6ed54825346066686cc6880548216831790557f9612126d8679a7725e6f806714e2dc986fa9c909aee3a73c2b70c4a517ed9d6a80548216831790557f608a1c817164ea57aed382651ca5602b3c8c5d7699f57e2762f5ab980e3dc0db80548216831790557fdbb627d9def6d11f5b8e00878e4281b70a560845d6a8594b2608c3d1518fc7c480548216831790557f2adebfafa9a0cf7304c615e3b3ab59a46f55f18ec84daad3d5ffd30d7e83de1380548216831790557f41cb3ce60e955c9726d9287e03e6b56986013db345398bc8b5d3441f60567bae80548216831790557f0850ab4024c5f533e0c565d5bd019bb3b6af33dd9fa0000ad24bd84c12fc593180548216831790557f20be8a1ed9fac5ddeb95571d98eab1b3efcd37cbeea26fb72bef5208e1a0e3c380548216831790557f72d1308c3f402c8a1741313122decca44580ba09c9d1dd28728952ea8a50a5bd80548216831790557f529ed050799c6237f25392d2a10911eec7056dd6a600c20b8142321a5c12982c80548216831790557f6dfdd45afb6a9c9c992176754fcd018e5ec1af8f77ca61817deee1d6cbf70ef680548216831790557f580cb7b535c35d8d42cd0cf133928e4b30f3a04ccf517085ffef3e059b2ae44480548216831790557f9309fc9a50f9667d6ffe19fa1345ea71f1d9f1765818554c398b7e7d8c929d5e80548216831790557f812f85104f1e2fa310bc3d91029a590d304996726c5dfbc489afc67a02dde54180548216831790557f3c2e0d2886cb09902587335db3796e58d17483e9655eff9e0380f81038f23a5980548216831790557f15700446197d03fed25e539c2662a0eb0070f4019a8d92083c240b1080031f4780548216831790557f0581d3b3c10c7d30ab5249d1d0dd5ecaccbf8e4f9dbbb6a99da3d8c00219b1e380548216831790557f08030b6dedb783f202bc0df179b9bc32765795864da46a7f42efaf19fffc89d380548216831790557fdfaa12e2ab0c78c4cf319ae1f3a53ea6b943e93d80ecd93935fb5d7fb8f4025f80548216831790557fa15cd87cca622a5be93991700452b98e644e70ce4d1fb12417dbfe302f4a882180548216831790557fdf67e34db6c71ecd235d9e2b42691a0775d39f365fc68100c65a61c8416165cb80548216831790557f781c172dd080053ab7b3e8297ea9f74f5ab182819bda88deb608b6423179ee1480548216831790557f295f47c92ab6eab376c4f6696af0e163faf28c4a16d1dc861746abaed84406bf80548216831790557f556ce9fa54d1e32fda340565d35b3cfee039e7059f95ba2145240ff63a70b58380548216831790557f73843659d4bf2eac19d31b9a94765ddf78efedfd39bbd467db4cfded40288c3980548216831790557f701fff85a57dcb28f706e785547a3fc4324788eb976ed42f96160cb17620927a80548216831790557f959dcc1da3ca29ecf3f40a8f0d6c88d5e816152b0ebadd221c1396d1d74164dd80548216831790557f9a2b5b00dddd792726e4258c4c469c20a1917a44bebe333356703b51271c453d80548216831790557fcafc1dc692bfd6299fdc282c191c4a05a108e295d8413f45abe473b7eff9d8a380548216831790557fd3d07da3b0bf5d0853e1b1895006e7e60f0062a587ac61f76d14972de90fcb6480548216831790557f3521954b5da00eac95f6347fb395017a99f8d54518a873bc7e436eb82c3631ce80548216831790557fb3e2134bfb6b68eb3fa7943052e6fb2c72e7185e814326462a5765f3886505a980548216831790557fd65953ff6c231bf105cdf3ecaaf6a4cb02068591472f6c2029652c7b342b3dab80548216831790557f8f025fbda114fbe68ccddd61b23c0aecb5f5ce1026b0a7ce6a7a69a691fd427a80548216831790557ff0692ec9e397c01fc2ec8d6f4c8a9c34bf6f60e24c597abe51d52538d703999d80548216831790557f423bd37fe3c5546f0fbdfef4007da3bab791fbd2b1ae1efb8b46dc9d92b5f16c80548216831790557f8bbcaf974996071f213bc7b09cca76a6d47faae9547b627befbcb88921f66caf80548216831790557fb7d5240d036cc4d4bfcc2538d40c682f5f75e2471c4026112036b1d0bfd00bc480548216831790557f046ccb6380431a39556d4926d7aaa462f0603720b82de48ca1b70a0a9375b6ce80548216831790557f4f115da316862382a971dd9734f63cde32865ff625c2c6890bcefa5bc09b058780548216831790557f298920168456826905c69ba336b0c86ecfcb454e1d39c86d02df4a3a9b92de4480548216831790557ff269bba68268f06d5f184050452fe2d2c969f35b36da58a2b8937f6fb95f89b680548216831790557f2293d251c9be87a88923ac2297b3d75534d365d674ef3358579fa967ada2199180548216831790557f29f648fd531e90e8b61d1ab1744c0a6361aba07d1a8a40641b80def0a3804d7480548216831790557f8343ff3eac284cd07b53bad41d16f5917d817e21768fa88c60f68a01066af1bf80548216831790557f1b70221492c90dcc6100c0ceeddef2e21dc2f131a5d5f6544dc55cb058f4bc5e80548216831790557f5cca6f7d34d0923fcdbdf53aa245339b7512845d68762deb84e3ee5457ca7b0680548216831790557fec12bab52a1444cf1edb3ddf362a0983a322ad2374b43aa7a366a534cc16847180548216831790557f3cb8d2e853c6cfbcd021599cce37eb3a51d2d1fd678a27c3456c8c829b518aa680548216831790557fab60912cc330fd60a7687986740a1e61b6b04a1763bfabeb0c1aa139b7a19e9f80548216831790557f2fe97dac48aac6e1e1164cc2e5942128178aca2cebe1fa846fe6a672a9ea048f80548216831790557f6e9c66f9378c7c4d6acda72ec302b94927deeb301ed8e67f32139d04d773220a80548216831790557f473285a1f482136ef477f1e58b6b1cf518559a3c3a84805d2c3a6ef5a42a193e80548216831790557ffa3f29a161472ddfa66784e6d7df578477ee96576fec3fb46097c1389535b9de80548216831790557f4744888eb7caea6c67812aef37f0b729f51cae35deb14158d1eafcd3fbd7f8ef80548216831790557f6978faed6a9cf0c3c574c894ce5a11ad1cac82ae037128ced4d05334d3ea028680548216831790557f17484ef583978f29b8dc591a1053c04f167146b08a3f7b300a7f878d3c9d90fd80548216831790557f3811eb320265fbb319ac4163fa307250f668f462247604c24bae0067c0438e3680548216831790557fa702caefc7bc9683c4142a1be7ff8ad3442f9578ccf7cf22cccaaf712317783780548216831790557fe83160d2f3182ade77b1e2e1e220115949e3582389ec433564efb098480df0c980548216831790557feb8a437b35d08ae44f3b4bbc86cfe027f0398bb13c5afb5fc7f53076f0a1d3e080548216831790557f21622099de4c8174ac9d87936d8dac07eb0edf90f508a2c9a0cf2042dfea8dc380548216831790557f1e77984d221824b3124e4292b94d16c7978f1fcb4398afd4efb40f5fe802aa7280548216831790557f413655f394fc4c4318f4278da5087faf755386e04b700b6f07d9b468119f3a7e80548216831790557f2959b0c83b06abc275d7f5c027b42a77acfdcb4401d937d1cacfce67487be75b80548216831790557f384b1185a7c98d04d426568b4432791422f1557a19b74d070f6fb9279468711f80548216831790557f213781fd0e0f79e5e0e2f0554ba7da2ab8a41a0141eee8404c2bc23477e6362380548216831790557fe58df72745a22bac0e686cd8302831274660c94f17bcce92e51f3c317b6918da80548216831790557fffa71abe529b143040bec2dac9f9dd95793c5aa56ae1140a6702dc41fbfbb65180548216831790557f7308a0a052d41a263ed1504748895bbb06e27ec75b8df21279a05b8d54d3ce0780548216831790557f8846a0a85705fd925447f001027a87d97786fffe71f0b729d17f21f014da6d5280548216831790557fb14a0faf3a792da9af10eae2fb2e259676ae5edc7882ec7b954b88be2e5b788480548216831790557fef54b3d9cfef8e9f412fd6b50c2685a03563dd0496e88470b0706c46229c5ea880548216831790557f9fd983c0cd9550228a9e4bc4373e11b83e5f90d849555b1eb295fa47e0ac916780548216831790557f12e07289a933a9ee6ba6c823f1d83056d266eb98885c9822fc2f78b34dccc9cd80548216831790557fa60e708797f6d29b60e06ca0b74329d90f9dd29b30b4893cf8507a0bb1e51f0a80548216831790557f5046771702498db356a5f42536a2137d12fd2fdf0eacf7f1aee8f9fd22c1a84480548216831790557fb2f16b630a951a8894ced82d062e06e684c0cca45485469c1221e3638e6de65580548216831790557f02da49d346fbae2d302ed7ba91bce7eec1f9bb30f8259595d3936da4fc1d3e4f80548216831790557f93b707b6dd85d0d2e1157429bfdfd55e850b571565d5c80b348b65ec135be89080548216831790557fe454d95af5f23f5930298cdb60574ebb8f3f41d3bd3923a8b0739016d099397f80548216831790557fa46b064a66ca60ced1fd7bb13b3a4383df274d9668b0730b0e1a88975329334c80548216831790557fe6b2cd596be3c4b1e8f0269dc6476626c6a44250da32c2baa7b7bbb3d1fe841980548216831790557f1bc56539c10f8883fac235bfce423329752e8ab955bd3947eb4f62496b7dce2f80548216831790557f9c3ec64f44a06a80e9d2e679e1d5484bd4d91b130ed10bd11c05dd33f877adbc80548216831790557fba880f1b5a5c42e2f9214c082ad7d47a1d86fc117794949cc8a6b50c8f38485e80548216831790557f0b49845f2d014582ab0637aea8cc0f1a8df3a3ef9ee81aff485c1ccd7282744080548216831790557fc85fbd5af73825bad82b2eeb949a8d5b2288fbf3da75202fa8fd0a6f126fd3f980548216831790557fd54353f0528008dbd6915e8e81c1e04c3e3ae88f05e62275985bf479d4e6cf3280548216831790557f36b69b82e4b862175e24ed6892a67ba4d7548b7fc2d9f95eb76b08e3522c8a6580548216831790557f240f242a56b3aa72d487794f9f409f044be48d45592b7d908394130a28247d6380548216831790557fd513cf9a4fd16782ca4d31cdb32116540ddfb097da58f678b3cc9c37f817b5d580548216831790557f5a0fb17483d30aa6eda7f33d6e963c34ec645c441ca72b8099a0d4bbc1804fa580548216831790557f58387fd7c29d5f4370c70531b9f646d2b98a50de0399b376263a4ae3668db8bb80548216831790557f0c3b7684b35de6e0256e254d359999f85fd2d915569126265186639a5df2975580548216831790557f0f57d1aa5ea911e28ecf77bfec8474b7cc60377c8e5afe8d2f416ee95a0607c880548216831790557f4ce7ba3b58b8f649c9189684a86ab253a8933669554ac902f8b6db6cb9f67e5a80548216831790557f89c9cf5e806ddb4e07ad5893ae763d2aefb51faaf0c2ca615719cc284038392380548216831790557f9a4f88a3fb280500cf1bd2d99451bf2c12d70d41b42d315a1dfc855411fc65e680548216831790557ffb91e2883a35aa6ff1b6ce18585190eaa6bea3d083efdce9683cee401f637d4980548216831790557f2946b30acdbc2a39bf1c5596ec356a0f72180aa9efbb8efb2d91733c0bd8473380548216831790557f980cadd455de874b7d6c63e2045cd26b93f90f081add62f90c7af5345e2be4f380548216831790557fca6586a1c281e63236b39b99c9652b58f51cbaa2726312516f6626036741295380548216831790557f168b26242675430864694a5e5d358ec1e40e7819b8edfeed81126d16c1744e0b80548216831790557f60e1a6c5c16ba93d878b2e5458b8b859231638190dd461ab9d43854a53b8108e80548216831790557f2077ac8d865959003b442fbcd02cd0dfa2ebe26aa94818d8e2c1ce1546639d3580548216831790557f302c1841b3f6db03e572db440f57f27fb7ab3e4978583916b5727dc6f2acdbf080548216831790557fe58724aebe363d8548e2dde7ef1722041df653fd640837e37549ec7982242ba980548216831790557f47389802fc929afcf4f8d26abb6be663e3d97d8e91cb936d8e971cdc6dcd24e680548216831790557f9b85aed8ed25cc36ecbf2a504fe70b7a5bf03818fe38f1fe96a7bc16f35ed6c180548216831790557f8dc3ec2fb354da2aa17ec53221f67199f8dd5ece0ef58c394e34c5df71594fae80548216831790557fecc5fe598375d0422ba9683653b03ec6381329b513aecc0cf1dcf3d2c4e5638a80548216831790557f057405c20075f3e91ae63acdad44be924002258d5c0917e2fc5658fa13bb960c80548216831790557fb8bd2192d45e8e6360f2cbc74b82ff2b0f4cc3df644ce3d539a4db82b8c4166a80548216831790557fc0cc6c6a498f34db995d22cd17277648f8ef673ce459cf65f1005bfff014408380548216831790557f36f26aedeb9a40e826a95eb9a7709955792522ef268e95d47431bdf6144f391580548216831790557fb60aeb041c7492ea3c7927b8e730b19469fbf2bb0b0f1e46c2d9eb6d8135d6f680548216831790557f3eea9209709a75643acd599fe394e5c23868ac92d313d430ee74fc758615a94780548216831790557fb829eeb9305d608f8131bc3776d9b92c18cc77d1a3875ca85f1cd643d9a68d5b80548216831790557ff8df78519b28da3f86400474c47338320da61c3970ca64a0bb9b766126802def80548216831790557f30f31eb03b850c0debbe1617035a4cfe28c8063019dea6a4ea3d9697e5ec7c9980548216831790557f264c6d48b917c77b0f9b5320ad449359c5fb676356cd6463398d43eaf1bf8a8e80548216831790557f1f986af0ce07220c2554f7bd93c122496385872e568e419b0c0f11926fd815f080548216831790557f170448fed2149652a4ebdc8600a09fb3308b9372ac446eb59d0955fbf228de4580548216831790557fb6d682dc29931c073a25d66d7d0d3ce31380ac97a3d9fddb04ea524a366a1f2280548216831790557f89c4e3daf5a579b676fadce7d58dee5d9f478eca33428f5d54a1b7de5400b8e680548216831790557f7870a15432a5b10d2c85f270cbfe65f32896b891e8e074fc89e85b66da79796180548216831790557f0ee55ec50ec94c82f1b856acef266a71fe331f8bf385326e91928ebc168621f380548216831790557fe8c93d06593c7baa4f0fc92290d3be64610cfd64fd08fe9f3b96ff689a4d2cc880548216831790557f7e5e8f1b4c714b7d8cb03fa2d0aeac6eb2c247bd77db58437e92eafa40e1a2c280548216831790557faccc6f429cb191637f8a530be5a4f6ecc00d482bf7dd594b57b261aceb1527d880548216831790557fcba8a6bbfaa890fd5c3cb1602f741668647a4990124a1e4213b228f0f3a2753c80548216831790557ff5ee92da68f5203ac0d96ce1667175495a1550a05707328136d29776d605605880548216831790557fd2d0639f848302f9d1fd03945094be0d3fbfbfc7365a5822508048d4a213f40f80548216831790557faeb82bf422c869e11ab9436d91f34c8a8a639039d390b119b7b3bac07ec210f180548216831790557f482c13db0cb01deacbbb0c8466c1fa7bd45ca7571bd8ce6a5a02c427ab631c2480548216831790557fc8b664fc1fa0b0612bec8c585d09814d6ba88b38987d72d97d9430472ba851b880548216831790557f9cd929745e83f312c3a78db04cb6324222265813ccb951f7b3cc2959dc6e8e3480548216831790557f4d8de7ca53389a2ae3f58432261e750664e370f3d286336120e6ae6bdd0eabe080548216831790557f61cdd168573d9c981a517a5522960262d934ad4b1a2d622a0a750fc5fe46da8d80548216831790557f4b1e756e42c0efbf97dcc033d308b48f765d242ec9ab20494f97a7761fa2759e80548216831790557f8cb94f99de7b95226f929af029aa715ed2d9e0d838d6a932be91c708b897011980548216831790557f793216d2c313e49ec1bee650152566598e4d17e1f30d6e3b67ce447d99b8b2e780548216831790557f51f4b6419b26f1b9b202c95e1cc1d4eccd9c97b07a050a48cc0048fae657d79d80548216831790557f14947dcd49e969f25812098aa2038d07079e3c6995f16eb7c42299575fb38a8580548216831790557fd0b5259d2dab63e5335daee9e584325b0bb74ecb0bc8886e5fc9dc128a0570b580548216831790557f867d1df7fdcf6980d8205d147a8552f19bdb6422fa825c2a4612ba01f158a69080548216831790557fef6603ac9c88dcd624b0f1d2a19d112cb3f56a1d1642416efd0d458ba79ea1a880548216831790557f67c01d0bd1a2b22b2451936e44c89273d6ed7e2575da3b870ec25add3bc2ea8b80548216831790557faada5730d861e4cb4a080702ee4ad31dd1841ba6dcfa71772fbb40f0a1d7870280548216831790557f43d69b85b63bf9c414cf36d7407ec08838c3f625da6fe49a1b124fb43cfca28380548216831790557f58caf0d6b85f55dcf30da81c52daabc084d5cd0874233b9363d67bd22f5d5dde80548216831790557fe56d0c93c969d95be4be7735e893e7d0edc9664cd263a3785a7dceb674f5ef3980548216831790557f5c1da5a8100d003e0b200025d3da6377c6041496670465d1258f4da0fe26765980548216831790557fd7efb892f4754f73559a28a71aa02baa00ff4546185d3c9e43fa17ae902c42e980548216831790557f58e7be7fe810d4763dcf1cd3c359e65828217dcdfca53b725a91ec5ce99a396080548216831790557f36c543efd8b17ab0157fdeaf9330b333d98b4ed6ad73321db94e840d8b958b5d80548216831790557fd8f019fb26e3411fb4f44e98dcaab9a8af4b1af6b77d07d5d2f9c4a2e056b1f580548216831790557feda6a8347e2d76003551eef75f3a5b161f03c78f9f34a30070b4302db64f641880548216831790557f3d89b04aa3ac38f338c346778b116bee128d4fe4a0d34f9af5f68440b437af3e80548216831790557f5bf827315e0780dc78955964d7d8448780c46efdaf32525f1104c66de9d8f01980548216831790557f631d1edda6209854ba03c80f7f58b8cf88583407b9bc97674f8541c509ec20d880548216831790557f53d481109ff2d9569426e91c8b0bf6f05262bb51b5a83c738e5c67cdc4bd662e80548216831790557f21786a0bf25ddff81562d23c43b9e1c994e23df9c41852575c85b7bd90191d5880548216831790557fd9754f3a5d27c5274577394503aeddc037b63ee0733ddedb261bfde300c1a4ad80548216831790557fd452e62821b76968ecd22a90fb88b70d8361ab7f2499b7dbb43da8bc9eb0008e80548216831790557f25c291742df1af81f4ce38e3a8174317707e154b9fdd3194d9f7e3761793c05680548216831790557f6ff6e5f97f52d0f66c7905bd8d3c1125c3cbd9d5e6b38f91d9ff931df19074f480548216831790557f0ac3b611336f3bdb106826b826acf76a8c3f0efd354d84c254d2b80102b1ab7580548216831790557fb83feb90a2e2a5c39b690e1c8f4c76d225d857bf46e4c9b117f43545087e72b780548216831790557fbbeae4100510f8d2906f21b5a9103768cad5999a619b17c330aea7cd04e086b880548216831790557f18c54b8abe496dbd25e6ae9667aa69dffa33178e8714d1347dd7ad0da733580c80548216831790557f2b1e67c913bf906babc867ceac16ff54f8ea1fba2681f01317df76b17deb173580548216831790557fd1bfff579d550772e2cf46fcc788923463b5d6824a4be9d667b748e596aad7f980548216831790557ff685fda5a1a35bdbcfbcbaaade74ad9c2f6793eed25873b7cfb8ad5513ce743d80548216831790557f805ef3ec657d2034f770f4c1cc048b379936c90f78f78bf35d93ad026ba921eb80548216831790557fd6d62c623833a9ad980a89be496876470009a6fbc33fc65f6634c963087a3e4980548216831790557f45804cce33d0de44213d2c4f7a70eda0a2c428b5db0f118519cbe4c6297b9b4780548216831790557f39253a08783dc5d4bab9740ff8e564540468374bcd5f5e61abb27cfce62dbf6a80548216831790557f89e00d59469bc370ad651383651db39d4e2ae7274a39235f1b08c5911e9c899f80548216831790557f489885087226ed28b9a6a35dab01d9e392a34f6071f64305a55feccf9cfa561a80548216831790557f54d06d4272c72da1f8d67222a2ce2092d59f06bd0243d517bed23e97a314ae9180548216831790557f59ccf5d5b62e15b7140290426d96ffde1a1d0a3e3e2ef7bfc4874fa37c6a864680548216831790557f0da7d7d442cd97de563312232fae50079560554eb478f85e08c3b2342c84d5fc80548216831790557fc4814e38c3be3d863b9bffc115c59d4e3d9ccdaf3e635ba60e9a67eaa3bd3e2680548216831790557fd1d2e7e4a7970e0d60b7656287b759a7ef2a7ee82de5a316050a217b5ec08bf280548216831790557f9806cefc19e0f9c3b8674873bcae0efa9c2bb4e6a6cdf3368eb91d8dc8be23aa80548216831790557e7da535a49a6170f0c22372b0db24bab88cffe4a8824a6e5b81deb2b422e5d280548216831790557fb15c32a787ce77c8b215cf0ed87ca83cfc80876c86ada573a889fb796285941a80548216831790557f0bff59cd1280792074f208511550a01fb760fe7ea08afcc38ad44efb8e066f3380548216831790557f49ca8a59cc82ece940c3d89c7032e755a08e7e8b720ea1316cc22e11e14465de80548216831790557f48ff15ea73828a55a9d9c790fefd5ecca7d721da9fdd4ce42fc9b5c18cfbb5bb80548216831790557f1db4cc781873eb0ae40f549def41bbb5a9339d96968c81fad94fb813d8f169ec80548216831790557f9f053034d0e6cfd828c878d40a08df8881c737d5ba2b771b5d9b477edb247b9480548216831790557f636ac5a8a41fe562ed977699547e5d63fd9f00f4b7cc8f28fc1e78f0a4e912e980548216831790557ff900c61f0694f55e6f3cbac8f696873889b50110dd35260b8689b1afb725ffa680548216831790557f0796227ee8ed6d005477e554bbd4cb805788cfb2cd3bd5a8e4741f43a632c65780548216831790557fa61d88ed3b7097fceeeefa5efd404cd1074fb74c3930cfef4b8f9596d93ad4c580548216831790557fbab38aa7dbf12905ce181fdf90ae6a727f5d24226e8ea7ab9e16598cc5e7536f80548216831790557f0d6ae118a33fb98bfc8abb70a42cc0f8ea1c3e7f49bbd607dc571419cfa8b0fe80548216831790557fe33be9f0a6b30bcadc32fa00cf53782cf248832aa694b89c6b1b1ccfb9c5755980548216831790557f8391e7ebed06f48be149e2bc56838f32619ccec31bca233a4a7333cd6282545e805482168317905573bebbbf96f42a744d11a0ed3f6b6372a900dbb7936000527f57704cb034c191396cdd6c8b7df6c69ac02281a010219da70da4b576bdbc22b58054909116909117905562009ab3565b3390565b828054620099de9062009a76565b90600052602060002090601f01602090048101928262009a02576000855562009a4d565b82601f1062009a1d57805160ff191683800117855562009a4d565b8280016001018555821562009a4d579182015b8281111562009a4d57825182559160200191906001019062009a30565b5062009a5b92915062009a5f565b5090565b5b8082111562009a5b576000815560010162009a60565b600181811c9082168062009a8b57607f821691505b6020821081141562009aad57634e487b7160e01b600052602260045260246000fd5b50919050565b612ad38062009ac36000396000f3fe60806040526004361061022f5760003560e01c8063718bc4af1161012e578063acec338a116100ab578063e8a3d4851161006f578063e8a3d4851461064d578063e985e9c514610662578063efef39a1146106ab578063f23347f5146106be578063f2fde38b146106d157600080fd5b8063acec338a146105d8578063b88d4fde146105f8578063c87b56dd14610618578063d75e611014610638578063e7ddcb451461042857600080fd5b80638da5cb5b116100f25780638da5cb5b14610545578063938e3d7b1461056357806395d89b4114610583578063a22cb46514610598578063a51312c8146105b857600080fd5b8063718bc4af146104b35780637263cfe2146104d35780637a6685f1146104f35780637f44ab2f146105135780638d859f3e1461052957600080fd5b80632f745c59116101bc578063537690a811610180578063537690a81461042857806355f804b31461043e5780636352211e1461045e57806370a082311461047e578063715018a61461049e57600080fd5b80632f745c591461037a5780633a0658921461039a5780633ccfd60b146103d357806342842e0e146103e85780634f6ccce71461040857600080fd5b8063095ea7b311610203578063095ea7b3146102f157806318160ddd14610313578063233ebc8b1461032857806323b872dd1461033b57806329fc6bae1461035b57600080fd5b806208ffdd1461023457806301ffc9a71461026757806306fdde0314610297578063081812fc146102b9575b600080fd5b34801561024057600080fd5b5061025461024f3660046123f3565b6106f1565b6040519081526020015b60405180910390f35b34801561027357600080fd5b506102876102823660046125e4565b61076a565b604051901515815260200161025e565b3480156102a357600080fd5b506102ac610795565b60405161025e91906127ac565b3480156102c557600080fd5b506102d96102d4366004612667565b610827565b6040516001600160a01b03909116815260200161025e565b3480156102fd57600080fd5b5061031161030c36600461252a565b6108bc565b005b34801561031f57600080fd5b50600854610254565b61031161033636600461252a565b6109d2565b34801561034757600080fd5b50610311610356366004612448565b610a76565b34801561036757600080fd5b50600e5461028790610100900460ff1681565b34801561038657600080fd5b5061025461039536600461252a565b610aa7565b3480156103a657600080fd5b506102876103b53660046123f3565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156103df57600080fd5b50610311610b3d565b3480156103f457600080fd5b50610311610403366004612448565b610b9a565b34801561041457600080fd5b50610254610423366004612667565b610bb5565b34801561043457600080fd5b506102546103e881565b34801561044a57600080fd5b5061031161045936600461261e565b610c48565b34801561046a57600080fd5b506102d9610479366004612667565b610c85565b34801561048a57600080fd5b506102546104993660046123f3565b610cfc565b3480156104aa57600080fd5b50610311610d83565b3480156104bf57600080fd5b506103116104ce3660046125c9565b610df7565b3480156104df57600080fd5b506103116104ee366004612554565b610e3b565b3480156104ff57600080fd5b5061031161050e366004612667565b610fff565b34801561051f57600080fd5b50610254600b5481565b34801561053557600080fd5b5061025467016345785d8a000081565b34801561055157600080fd5b50600a546001600160a01b03166102d9565b34801561056f57600080fd5b5061031161057e36600461261e565b61102e565b34801561058f57600080fd5b506102ac61106b565b3480156105a457600080fd5b506103116105b3366004612500565b61107a565b3480156105c457600080fd5b506103116105d3366004612554565b61113f565b3480156105e457600080fd5b506103116105f33660046125c9565b61125b565b34801561060457600080fd5b50610311610613366004612484565b611298565b34801561062457600080fd5b506102ac610633366004612667565b6112d0565b34801561064457600080fd5b50610254600181565b34801561065957600080fd5b506102ac611360565b34801561066e57600080fd5b5061028761067d366004612415565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6103116106b9366004612667565b61136f565b6103116106cc366004612667565b61150e565b3480156106dd57600080fd5b506103116106ec3660046123f3565b61182f565b60006001600160a01b03821661074e5760405162461bcd60e51b815260206004820152601e60248201527f5a65726f2061646472657373206e6f74206f6e20416c6c6f77204c697374000060448201526064015b60405180910390fd5b506001600160a01b031660009081526010602052604090205490565b60006001600160e01b0319821663780e9d6360e01b148061078f575061078f8261191a565b92915050565b6060600080546107a4906129ac565b80601f01602080910402602001604051908101604052809291908181526020018280546107d0906129ac565b801561081d5780601f106107f25761010080835404028352916020019161081d565b820191906000526020600020905b81548152906001019060200180831161080057829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108a05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610745565b506000908152600460205260409020546001600160a01b031690565b60006108c782610c85565b9050806001600160a01b0316836001600160a01b031614156109355760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610745565b336001600160a01b03821614806109515750610951813361067d565b6109c35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610745565b6109cd838361196a565b505050565b600a546001600160a01b031633146109fc5760405162461bcd60e51b815260040161074590612811565b6103e8610a0860115490565b10610a255760405162461bcd60e51b815260040161074590612889565b60005b818110156109cd576000610a3b60115490565b90506103e8610a4960115490565b1015610a6357610a5960116119d8565b610a6384826119f5565b5080610a6e816129e7565b915050610a28565b610a803382611a0f565b610a9c5760405162461bcd60e51b8152600401610745906128cd565b6109cd838383611b06565b6000610ab283610cfc565b8210610b145760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610745565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610b675760405162461bcd60e51b815260040161074590612811565b6040514790339082156108fc029083906000818181858888f19350505050158015610b96573d6000803e3d6000fd5b5050565b6109cd83838360405180602001604052806000815250611298565b6000610bc060085490565b8210610c235760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610745565b60088281548110610c3657610c36612a58565b90600052602060002001549050919050565b600a546001600160a01b03163314610c725760405162461bcd60e51b815260040161074590612811565b8051610b9690600d9060208401906122b8565b6000818152600260205260408120546001600160a01b03168061078f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610745565b60006001600160a01b038216610d675760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610745565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610dad5760405162461bcd60e51b815260040161074590612811565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a546001600160a01b03163314610e215760405162461bcd60e51b815260040161074590612811565b600e80549115156101000261ff0019909216919091179055565b600a546001600160a01b03163314610e655760405162461bcd60e51b815260040161074590612811565b60005b818110156109cd576000838383818110610e8457610e84612a58565b9050602002016020810190610e9991906123f3565b6001600160a01b03161415610ef05760405162461bcd60e51b815260206004820152601a60248201527f43616e27742061646420746865206e756c6c20616464726573730000000000006044820152606401610745565b6001600f6000858585818110610f0857610f08612a58565b9050602002016020810190610f1d91906123f3565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155601081858585818110610f5d57610f5d612a58565b9050602002016020810190610f7291906123f3565b6001600160a01b03166001600160a01b031681526020019081526020016000205411610f9f576000610fec565b60106000848484818110610fb557610fb5612a58565b9050602002016020810190610fca91906123f3565b6001600160a01b03166001600160a01b03168152602001908152602001600020545b5080610ff7816129e7565b915050610e68565b600a546001600160a01b031633146110295760405162461bcd60e51b815260040161074590612811565b600b55565b600a546001600160a01b031633146110585760405162461bcd60e51b815260040161074590612811565b8051610b9690600c9060208401906122b8565b6060600180546107a4906129ac565b6001600160a01b0382163314156110d35760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610745565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b031633146111695760405162461bcd60e51b815260040161074590612811565b60005b818110156109cd57600083838381811061118857611188612a58565b905060200201602081019061119d91906123f3565b6001600160a01b031614156111f45760405162461bcd60e51b815260206004820152601a60248201527f43616e27742061646420746865206e756c6c20616464726573730000000000006044820152606401610745565b6000600f600085858581811061120c5761120c612a58565b905060200201602081019061122191906123f3565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611253816129e7565b91505061116c565b600a546001600160a01b031633146112855760405162461bcd60e51b815260040161074590612811565b600e805460ff1916911515919091179055565b6112a23383611a0f565b6112be5760405162461bcd60e51b8152600401610745906128cd565b6112ca84848484611cb1565b50505050565b6000818152600260205260409020546060906001600160a01b031661132e5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606401610745565b600d61133983611ce4565b60405160200161134a9291906126c8565b6040516020818303038152906040529050919050565b6060600c80546107a4906129ac565b600e5460ff166113ba5760405162461bcd60e51b8152602060048201526016602482015275436f6e7472616374206973206e6f742061637469766560501b6044820152606401610745565b60016113c533610cfc565b106113e25760405162461bcd60e51b815260040161074590612846565b60018111156114335760405162461bcd60e51b815260206004820152601b60248201527f43616e206f6e6c79206d696e7420757020746f203120746f6b656e00000000006044820152606401610745565b6103e861143f60115490565b1061145c5760405162461bcd60e51b815260040161074590612889565b3461146f8267016345785d8a000061294a565b11156114bd5760405162461bcd60e51b815260206004820152601c60248201527f45544820616d6f756e74206973206e6f742073756666696369656e74000000006044820152606401610745565b60005b81811015610b965760006114d360115490565b90506103e86114e160115490565b10156114fb576114f160116119d8565b6114fb33826119f5565b5080611506816129e7565b9150506114c0565b600181111561155f5760405162461bcd60e51b815260206004820152601b60248201527f43616e206f6e6c79206d696e7420757020746f203120746f6b656e00000000006044820152606401610745565b600161156a33610cfc565b106115875760405162461bcd60e51b815260040161074590612846565b600e54610100900460ff166115de5760405162461bcd60e51b815260206004820152601860248201527f416c6c6f77204c697374206973206e6f742061637469766500000000000000006044820152606401610745565b336000908152600f602052604090205460ff1661163d5760405162461bcd60e51b815260206004820152601d60248201527f596f7520617265206e6f74206f6e2074686520416c6c6f77204c6973740000006044820152606401610745565b6103e861164960115490565b106116965760405162461bcd60e51b815260206004820152601960248201527f507572636861736520776f756c6420657863656564206d6178000000000000006044820152606401610745565b600b548111156116e85760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742070757263686173652074686973206d616e7920746f6b656e736044820152606401610745565b600b543360009081526010602052604090205461170690839061291e565b11156117545760405162461bcd60e51b815260206004820152601c60248201527f50757263686173652065786365656473206d617820616c6c6f776564000000006044820152606401610745565b346117678267016345785d8a000061294a565b11156117b55760405162461bcd60e51b815260206004820152601c60248201527f45544820616d6f756e74206973206e6f742073756666696369656e74000000006044820152606401610745565b6103e86117c160115490565b106117de5760405162461bcd60e51b815260040161074590612889565b60005b81811015610b965760006117f460115490565b90506103e861180260115490565b101561181c5761181260116119d8565b61181c33826119f5565b5080611827816129e7565b9150506117e1565b600a546001600160a01b031633146118595760405162461bcd60e51b815260040161074590612811565b6001600160a01b0381166118be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610745565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b031982166380ac58cd60e01b148061194b57506001600160e01b03198216635b5e139f60e01b145b8061078f57506301ffc9a760e01b6001600160e01b031983161461078f565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061199f82610c85565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60018160000160008282546119ed919061291e565b909155505050565b610b96828260405180602001604052806000815250611de2565b6000818152600260205260408120546001600160a01b0316611a885760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610745565b6000611a9383610c85565b9050806001600160a01b0316846001600160a01b03161480611ace5750836001600160a01b0316611ac384610827565b6001600160a01b0316145b80611afe57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611b1982610c85565b6001600160a01b031614611b815760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610745565b6001600160a01b038216611be35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610745565b611bee838383611e15565b611bf960008261196a565b6001600160a01b0383166000908152600360205260408120805460019290611c22908490612969565b90915550506001600160a01b0382166000908152600360205260408120805460019290611c5090849061291e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611cbc848484611b06565b611cc884848484611ecd565b6112ca5760405162461bcd60e51b8152600401610745906127bf565b606081611d085750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611d325780611d1c816129e7565b9150611d2b9050600a83612936565b9150611d0c565b60008167ffffffffffffffff811115611d4d57611d4d612a6e565b6040519080825280601f01601f191660200182016040528015611d77576020820181803683370190505b5090505b8415611afe57611d8c600183612969565b9150611d99600a86612a02565b611da490603061291e565b60f81b818381518110611db957611db9612a58565b60200101906001600160f81b031916908160001a905350611ddb600a86612936565b9450611d7b565b611dec8383611fda565b611df96000848484611ecd565b6109cd5760405162461bcd60e51b8152600401610745906127bf565b6001600160a01b038316611e7057611e6b81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611e93565b816001600160a01b0316836001600160a01b031614611e9357611e938382612128565b6001600160a01b038216611eaa576109cd816121c5565b826001600160a01b0316826001600160a01b0316146109cd576109cd8282612274565b60006001600160a01b0384163b15611fcf57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f1190339089908890889060040161276f565b602060405180830381600087803b158015611f2b57600080fd5b505af1925050508015611f5b575060408051601f3d908101601f19168201909252611f5891810190612601565b60015b611fb5573d808015611f89576040519150601f19603f3d011682016040523d82523d6000602084013e611f8e565b606091505b508051611fad5760405162461bcd60e51b8152600401610745906127bf565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611afe565b506001949350505050565b6001600160a01b0382166120305760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610745565b6000818152600260205260409020546001600160a01b0316156120955760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610745565b6120a160008383611e15565b6001600160a01b03821660009081526003602052604081208054600192906120ca90849061291e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161213584610cfc565b61213f9190612969565b600083815260076020526040902054909150808214612192576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906121d790600190612969565b600083815260096020526040812054600880549394509092849081106121ff576121ff612a58565b90600052602060002001549050806008838154811061222057612220612a58565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061225857612258612a42565b6001900381819060005260206000200160009055905550505050565b600061227f83610cfc565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b8280546122c4906129ac565b90600052602060002090601f0160209004810192826122e6576000855561232c565b82601f106122ff57805160ff191683800117855561232c565b8280016001018555821561232c579182015b8281111561232c578251825591602001919060010190612311565b5061233892915061233c565b5090565b5b80821115612338576000815560010161233d565b600067ffffffffffffffff8084111561236c5761236c612a6e565b604051601f8501601f19908116603f0116810190828211818310171561239457612394612a6e565b816040528093508581528686860111156123ad57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146123de57600080fd5b919050565b803580151581146123de57600080fd5b60006020828403121561240557600080fd5b61240e826123c7565b9392505050565b6000806040838503121561242857600080fd5b612431836123c7565b915061243f602084016123c7565b90509250929050565b60008060006060848603121561245d57600080fd5b612466846123c7565b9250612474602085016123c7565b9150604084013590509250925092565b6000806000806080858703121561249a57600080fd5b6124a3856123c7565b93506124b1602086016123c7565b925060408501359150606085013567ffffffffffffffff8111156124d457600080fd5b8501601f810187136124e557600080fd5b6124f487823560208401612351565b91505092959194509250565b6000806040838503121561251357600080fd5b61251c836123c7565b915061243f602084016123e3565b6000806040838503121561253d57600080fd5b612546836123c7565b946020939093013593505050565b6000806020838503121561256757600080fd5b823567ffffffffffffffff8082111561257f57600080fd5b818501915085601f83011261259357600080fd5b8135818111156125a257600080fd5b8660208260051b85010111156125b757600080fd5b60209290920196919550909350505050565b6000602082840312156125db57600080fd5b61240e826123e3565b6000602082840312156125f657600080fd5b813561240e81612a84565b60006020828403121561261357600080fd5b815161240e81612a84565b60006020828403121561263057600080fd5b813567ffffffffffffffff81111561264757600080fd5b8201601f8101841361265857600080fd5b611afe84823560208401612351565b60006020828403121561267957600080fd5b5035919050565b60008151808452612698816020860160208601612980565b601f01601f19169290920160200192915050565b600081516126be818560208601612980565b9290920192915050565b600080845481600182811c9150808316806126e457607f831692505b602080841082141561270457634e487b7160e01b86526022600452602486fd5b818015612718576001811461272957612756565b60ff19861689528489019650612756565b60008b81526020902060005b8681101561274e5781548b820152908501908301612735565b505084890196505b50505050505061276681856126ac565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127a290830184612680565b9695505050505050565b60208152600061240e6020830184612680565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526023908201527f456163682061646472657373206d6179206f6e6c7920686176652031204c65746040820152623a32b960e91b606082015260800190565b60208082526024908201527f507572636861736520776f756c6420657863656564204c4554544552535f5055604082015263424c494360e01b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561293157612931612a16565b500190565b60008261294557612945612a2c565b500490565b600081600019048311821515161561296457612964612a16565b500290565b60008282101561297b5761297b612a16565b500390565b60005b8381101561299b578181015183820152602001612983565b838111156112ca5750506000910152565b600181811c908216806129c057607f821691505b602082108114156129e157634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129fb576129fb612a16565b5060010190565b600082612a1157612a11612a2c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114612a9a57600080fd5b5056fea26469706673582212206573982b47dc705bf754e22ff9b4eaf190094040242347d4990fed007038ebfe64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061022f5760003560e01c8063718bc4af1161012e578063acec338a116100ab578063e8a3d4851161006f578063e8a3d4851461064d578063e985e9c514610662578063efef39a1146106ab578063f23347f5146106be578063f2fde38b146106d157600080fd5b8063acec338a146105d8578063b88d4fde146105f8578063c87b56dd14610618578063d75e611014610638578063e7ddcb451461042857600080fd5b80638da5cb5b116100f25780638da5cb5b14610545578063938e3d7b1461056357806395d89b4114610583578063a22cb46514610598578063a51312c8146105b857600080fd5b8063718bc4af146104b35780637263cfe2146104d35780637a6685f1146104f35780637f44ab2f146105135780638d859f3e1461052957600080fd5b80632f745c59116101bc578063537690a811610180578063537690a81461042857806355f804b31461043e5780636352211e1461045e57806370a082311461047e578063715018a61461049e57600080fd5b80632f745c591461037a5780633a0658921461039a5780633ccfd60b146103d357806342842e0e146103e85780634f6ccce71461040857600080fd5b8063095ea7b311610203578063095ea7b3146102f157806318160ddd14610313578063233ebc8b1461032857806323b872dd1461033b57806329fc6bae1461035b57600080fd5b806208ffdd1461023457806301ffc9a71461026757806306fdde0314610297578063081812fc146102b9575b600080fd5b34801561024057600080fd5b5061025461024f3660046123f3565b6106f1565b6040519081526020015b60405180910390f35b34801561027357600080fd5b506102876102823660046125e4565b61076a565b604051901515815260200161025e565b3480156102a357600080fd5b506102ac610795565b60405161025e91906127ac565b3480156102c557600080fd5b506102d96102d4366004612667565b610827565b6040516001600160a01b03909116815260200161025e565b3480156102fd57600080fd5b5061031161030c36600461252a565b6108bc565b005b34801561031f57600080fd5b50600854610254565b61031161033636600461252a565b6109d2565b34801561034757600080fd5b50610311610356366004612448565b610a76565b34801561036757600080fd5b50600e5461028790610100900460ff1681565b34801561038657600080fd5b5061025461039536600461252a565b610aa7565b3480156103a657600080fd5b506102876103b53660046123f3565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156103df57600080fd5b50610311610b3d565b3480156103f457600080fd5b50610311610403366004612448565b610b9a565b34801561041457600080fd5b50610254610423366004612667565b610bb5565b34801561043457600080fd5b506102546103e881565b34801561044a57600080fd5b5061031161045936600461261e565b610c48565b34801561046a57600080fd5b506102d9610479366004612667565b610c85565b34801561048a57600080fd5b506102546104993660046123f3565b610cfc565b3480156104aa57600080fd5b50610311610d83565b3480156104bf57600080fd5b506103116104ce3660046125c9565b610df7565b3480156104df57600080fd5b506103116104ee366004612554565b610e3b565b3480156104ff57600080fd5b5061031161050e366004612667565b610fff565b34801561051f57600080fd5b50610254600b5481565b34801561053557600080fd5b5061025467016345785d8a000081565b34801561055157600080fd5b50600a546001600160a01b03166102d9565b34801561056f57600080fd5b5061031161057e36600461261e565b61102e565b34801561058f57600080fd5b506102ac61106b565b3480156105a457600080fd5b506103116105b3366004612500565b61107a565b3480156105c457600080fd5b506103116105d3366004612554565b61113f565b3480156105e457600080fd5b506103116105f33660046125c9565b61125b565b34801561060457600080fd5b50610311610613366004612484565b611298565b34801561062457600080fd5b506102ac610633366004612667565b6112d0565b34801561064457600080fd5b50610254600181565b34801561065957600080fd5b506102ac611360565b34801561066e57600080fd5b5061028761067d366004612415565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6103116106b9366004612667565b61136f565b6103116106cc366004612667565b61150e565b3480156106dd57600080fd5b506103116106ec3660046123f3565b61182f565b60006001600160a01b03821661074e5760405162461bcd60e51b815260206004820152601e60248201527f5a65726f2061646472657373206e6f74206f6e20416c6c6f77204c697374000060448201526064015b60405180910390fd5b506001600160a01b031660009081526010602052604090205490565b60006001600160e01b0319821663780e9d6360e01b148061078f575061078f8261191a565b92915050565b6060600080546107a4906129ac565b80601f01602080910402602001604051908101604052809291908181526020018280546107d0906129ac565b801561081d5780601f106107f25761010080835404028352916020019161081d565b820191906000526020600020905b81548152906001019060200180831161080057829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108a05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610745565b506000908152600460205260409020546001600160a01b031690565b60006108c782610c85565b9050806001600160a01b0316836001600160a01b031614156109355760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610745565b336001600160a01b03821614806109515750610951813361067d565b6109c35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610745565b6109cd838361196a565b505050565b600a546001600160a01b031633146109fc5760405162461bcd60e51b815260040161074590612811565b6103e8610a0860115490565b10610a255760405162461bcd60e51b815260040161074590612889565b60005b818110156109cd576000610a3b60115490565b90506103e8610a4960115490565b1015610a6357610a5960116119d8565b610a6384826119f5565b5080610a6e816129e7565b915050610a28565b610a803382611a0f565b610a9c5760405162461bcd60e51b8152600401610745906128cd565b6109cd838383611b06565b6000610ab283610cfc565b8210610b145760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610745565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610b675760405162461bcd60e51b815260040161074590612811565b6040514790339082156108fc029083906000818181858888f19350505050158015610b96573d6000803e3d6000fd5b5050565b6109cd83838360405180602001604052806000815250611298565b6000610bc060085490565b8210610c235760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610745565b60088281548110610c3657610c36612a58565b90600052602060002001549050919050565b600a546001600160a01b03163314610c725760405162461bcd60e51b815260040161074590612811565b8051610b9690600d9060208401906122b8565b6000818152600260205260408120546001600160a01b03168061078f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610745565b60006001600160a01b038216610d675760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610745565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610dad5760405162461bcd60e51b815260040161074590612811565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a546001600160a01b03163314610e215760405162461bcd60e51b815260040161074590612811565b600e80549115156101000261ff0019909216919091179055565b600a546001600160a01b03163314610e655760405162461bcd60e51b815260040161074590612811565b60005b818110156109cd576000838383818110610e8457610e84612a58565b9050602002016020810190610e9991906123f3565b6001600160a01b03161415610ef05760405162461bcd60e51b815260206004820152601a60248201527f43616e27742061646420746865206e756c6c20616464726573730000000000006044820152606401610745565b6001600f6000858585818110610f0857610f08612a58565b9050602002016020810190610f1d91906123f3565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155601081858585818110610f5d57610f5d612a58565b9050602002016020810190610f7291906123f3565b6001600160a01b03166001600160a01b031681526020019081526020016000205411610f9f576000610fec565b60106000848484818110610fb557610fb5612a58565b9050602002016020810190610fca91906123f3565b6001600160a01b03166001600160a01b03168152602001908152602001600020545b5080610ff7816129e7565b915050610e68565b600a546001600160a01b031633146110295760405162461bcd60e51b815260040161074590612811565b600b55565b600a546001600160a01b031633146110585760405162461bcd60e51b815260040161074590612811565b8051610b9690600c9060208401906122b8565b6060600180546107a4906129ac565b6001600160a01b0382163314156110d35760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610745565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b031633146111695760405162461bcd60e51b815260040161074590612811565b60005b818110156109cd57600083838381811061118857611188612a58565b905060200201602081019061119d91906123f3565b6001600160a01b031614156111f45760405162461bcd60e51b815260206004820152601a60248201527f43616e27742061646420746865206e756c6c20616464726573730000000000006044820152606401610745565b6000600f600085858581811061120c5761120c612a58565b905060200201602081019061122191906123f3565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611253816129e7565b91505061116c565b600a546001600160a01b031633146112855760405162461bcd60e51b815260040161074590612811565b600e805460ff1916911515919091179055565b6112a23383611a0f565b6112be5760405162461bcd60e51b8152600401610745906128cd565b6112ca84848484611cb1565b50505050565b6000818152600260205260409020546060906001600160a01b031661132e5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606401610745565b600d61133983611ce4565b60405160200161134a9291906126c8565b6040516020818303038152906040529050919050565b6060600c80546107a4906129ac565b600e5460ff166113ba5760405162461bcd60e51b8152602060048201526016602482015275436f6e7472616374206973206e6f742061637469766560501b6044820152606401610745565b60016113c533610cfc565b106113e25760405162461bcd60e51b815260040161074590612846565b60018111156114335760405162461bcd60e51b815260206004820152601b60248201527f43616e206f6e6c79206d696e7420757020746f203120746f6b656e00000000006044820152606401610745565b6103e861143f60115490565b1061145c5760405162461bcd60e51b815260040161074590612889565b3461146f8267016345785d8a000061294a565b11156114bd5760405162461bcd60e51b815260206004820152601c60248201527f45544820616d6f756e74206973206e6f742073756666696369656e74000000006044820152606401610745565b60005b81811015610b965760006114d360115490565b90506103e86114e160115490565b10156114fb576114f160116119d8565b6114fb33826119f5565b5080611506816129e7565b9150506114c0565b600181111561155f5760405162461bcd60e51b815260206004820152601b60248201527f43616e206f6e6c79206d696e7420757020746f203120746f6b656e00000000006044820152606401610745565b600161156a33610cfc565b106115875760405162461bcd60e51b815260040161074590612846565b600e54610100900460ff166115de5760405162461bcd60e51b815260206004820152601860248201527f416c6c6f77204c697374206973206e6f742061637469766500000000000000006044820152606401610745565b336000908152600f602052604090205460ff1661163d5760405162461bcd60e51b815260206004820152601d60248201527f596f7520617265206e6f74206f6e2074686520416c6c6f77204c6973740000006044820152606401610745565b6103e861164960115490565b106116965760405162461bcd60e51b815260206004820152601960248201527f507572636861736520776f756c6420657863656564206d6178000000000000006044820152606401610745565b600b548111156116e85760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742070757263686173652074686973206d616e7920746f6b656e736044820152606401610745565b600b543360009081526010602052604090205461170690839061291e565b11156117545760405162461bcd60e51b815260206004820152601c60248201527f50757263686173652065786365656473206d617820616c6c6f776564000000006044820152606401610745565b346117678267016345785d8a000061294a565b11156117b55760405162461bcd60e51b815260206004820152601c60248201527f45544820616d6f756e74206973206e6f742073756666696369656e74000000006044820152606401610745565b6103e86117c160115490565b106117de5760405162461bcd60e51b815260040161074590612889565b60005b81811015610b965760006117f460115490565b90506103e861180260115490565b101561181c5761181260116119d8565b61181c33826119f5565b5080611827816129e7565b9150506117e1565b600a546001600160a01b031633146118595760405162461bcd60e51b815260040161074590612811565b6001600160a01b0381166118be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610745565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b031982166380ac58cd60e01b148061194b57506001600160e01b03198216635b5e139f60e01b145b8061078f57506301ffc9a760e01b6001600160e01b031983161461078f565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061199f82610c85565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60018160000160008282546119ed919061291e565b909155505050565b610b96828260405180602001604052806000815250611de2565b6000818152600260205260408120546001600160a01b0316611a885760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610745565b6000611a9383610c85565b9050806001600160a01b0316846001600160a01b03161480611ace5750836001600160a01b0316611ac384610827565b6001600160a01b0316145b80611afe57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611b1982610c85565b6001600160a01b031614611b815760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610745565b6001600160a01b038216611be35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610745565b611bee838383611e15565b611bf960008261196a565b6001600160a01b0383166000908152600360205260408120805460019290611c22908490612969565b90915550506001600160a01b0382166000908152600360205260408120805460019290611c5090849061291e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611cbc848484611b06565b611cc884848484611ecd565b6112ca5760405162461bcd60e51b8152600401610745906127bf565b606081611d085750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611d325780611d1c816129e7565b9150611d2b9050600a83612936565b9150611d0c565b60008167ffffffffffffffff811115611d4d57611d4d612a6e565b6040519080825280601f01601f191660200182016040528015611d77576020820181803683370190505b5090505b8415611afe57611d8c600183612969565b9150611d99600a86612a02565b611da490603061291e565b60f81b818381518110611db957611db9612a58565b60200101906001600160f81b031916908160001a905350611ddb600a86612936565b9450611d7b565b611dec8383611fda565b611df96000848484611ecd565b6109cd5760405162461bcd60e51b8152600401610745906127bf565b6001600160a01b038316611e7057611e6b81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611e93565b816001600160a01b0316836001600160a01b031614611e9357611e938382612128565b6001600160a01b038216611eaa576109cd816121c5565b826001600160a01b0316826001600160a01b0316146109cd576109cd8282612274565b60006001600160a01b0384163b15611fcf57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f1190339089908890889060040161276f565b602060405180830381600087803b158015611f2b57600080fd5b505af1925050508015611f5b575060408051601f3d908101601f19168201909252611f5891810190612601565b60015b611fb5573d808015611f89576040519150601f19603f3d011682016040523d82523d6000602084013e611f8e565b606091505b508051611fad5760405162461bcd60e51b8152600401610745906127bf565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611afe565b506001949350505050565b6001600160a01b0382166120305760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610745565b6000818152600260205260409020546001600160a01b0316156120955760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610745565b6120a160008383611e15565b6001600160a01b03821660009081526003602052604081208054600192906120ca90849061291e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161213584610cfc565b61213f9190612969565b600083815260076020526040902054909150808214612192576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906121d790600190612969565b600083815260096020526040812054600880549394509092849081106121ff576121ff612a58565b90600052602060002001549050806008838154811061222057612220612a58565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061225857612258612a42565b6001900381819060005260206000200160009055905550505050565b600061227f83610cfc565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b8280546122c4906129ac565b90600052602060002090601f0160209004810192826122e6576000855561232c565b82601f106122ff57805160ff191683800117855561232c565b8280016001018555821561232c579182015b8281111561232c578251825591602001919060010190612311565b5061233892915061233c565b5090565b5b80821115612338576000815560010161233d565b600067ffffffffffffffff8084111561236c5761236c612a6e565b604051601f8501601f19908116603f0116810190828211818310171561239457612394612a6e565b816040528093508581528686860111156123ad57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146123de57600080fd5b919050565b803580151581146123de57600080fd5b60006020828403121561240557600080fd5b61240e826123c7565b9392505050565b6000806040838503121561242857600080fd5b612431836123c7565b915061243f602084016123c7565b90509250929050565b60008060006060848603121561245d57600080fd5b612466846123c7565b9250612474602085016123c7565b9150604084013590509250925092565b6000806000806080858703121561249a57600080fd5b6124a3856123c7565b93506124b1602086016123c7565b925060408501359150606085013567ffffffffffffffff8111156124d457600080fd5b8501601f810187136124e557600080fd5b6124f487823560208401612351565b91505092959194509250565b6000806040838503121561251357600080fd5b61251c836123c7565b915061243f602084016123e3565b6000806040838503121561253d57600080fd5b612546836123c7565b946020939093013593505050565b6000806020838503121561256757600080fd5b823567ffffffffffffffff8082111561257f57600080fd5b818501915085601f83011261259357600080fd5b8135818111156125a257600080fd5b8660208260051b85010111156125b757600080fd5b60209290920196919550909350505050565b6000602082840312156125db57600080fd5b61240e826123e3565b6000602082840312156125f657600080fd5b813561240e81612a84565b60006020828403121561261357600080fd5b815161240e81612a84565b60006020828403121561263057600080fd5b813567ffffffffffffffff81111561264757600080fd5b8201601f8101841361265857600080fd5b611afe84823560208401612351565b60006020828403121561267957600080fd5b5035919050565b60008151808452612698816020860160208601612980565b601f01601f19169290920160200192915050565b600081516126be818560208601612980565b9290920192915050565b600080845481600182811c9150808316806126e457607f831692505b602080841082141561270457634e487b7160e01b86526022600452602486fd5b818015612718576001811461272957612756565b60ff19861689528489019650612756565b60008b81526020902060005b8681101561274e5781548b820152908501908301612735565b505084890196505b50505050505061276681856126ac565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906127a290830184612680565b9695505050505050565b60208152600061240e6020830184612680565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526023908201527f456163682061646472657373206d6179206f6e6c7920686176652031204c65746040820152623a32b960e91b606082015260800190565b60208082526024908201527f507572636861736520776f756c6420657863656564204c4554544552535f5055604082015263424c494360e01b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561293157612931612a16565b500190565b60008261294557612945612a2c565b500490565b600081600019048311821515161561296457612964612a16565b500290565b60008282101561297b5761297b612a16565b500390565b60005b8381101561299b578181015183820152602001612983565b838111156112ca5750506000910152565b600181811c908216806129c057607f821691505b602082108114156129e157634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129fb576129fb612a16565b5060010190565b600082612a1157612a11612a2c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114612a9a57600080fd5b5056fea26469706673582212206573982b47dc705bf754e22ff9b4eaf190094040242347d4990fed007038ebfe64736f6c63430008070033

Deployed Bytecode Sourcemap

48651:72857:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;117953:205;;;;;;;;;;-1:-1:-1;117953:205:0;;;;;:::i;:::-;;:::i;:::-;;;19324:25:1;;;19312:2;19297:18;117953:205:0;;;;;;;;38570:300;;;;;;;;;;-1:-1:-1;38570:300:0;;;;;:::i;:::-;;:::i;:::-;;;7417:14:1;;7410:22;7392:41;;7380:2;7365:18;38570:300:0;7252:187:1;24676:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26258:308::-;;;;;;;;;;-1:-1:-1;26258:308:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6715:32:1;;;6697:51;;6685:2;6670:18;26258:308:0;6551:203:1;25781:411:0;;;;;;;;;;-1:-1:-1;25781:411:0;;;;;:::i;:::-;;:::i;:::-;;39373:113;;;;;;;;;;-1:-1:-1;39461:10:0;:17;39373:113;;116491:604;;;;;;:::i;:::-;;:::i;27317:376::-;;;;;;;;;;-1:-1:-1;27317:376:0;;;;;:::i;:::-;;:::i;49171:37::-;;;;;;;;;;-1:-1:-1;49171:37:0;;;;;;;;;;;38954:343;;;;;;;;;;-1:-1:-1;38954:343:0;;;;;:::i;:::-;;:::i;118172:108::-;;;;;;;;;;-1:-1:-1;118172:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;118254:16:0;118230:4;118254:16;;;:10;:16;;;;;;;;;118172:108;121358:147;;;;;;;;;;;;;:::i;27764:185::-;;;;;;;;;;-1:-1:-1;27764:185:0;;;;;:::i;:::-;;:::i;39563:320::-;;;;;;;;;;-1:-1:-1;39563:320:0;;;;;:::i;:::-;;:::i;48832:52::-;;;;;;;;;;;;48821:4;48832:52;;116371:96;;;;;;;;;;-1:-1:-1;116371:96:0;;;;;:::i;:::-;;:::i;24283:326::-;;;;;;;;;;-1:-1:-1;24283:326:0;;;;;:::i;:::-;;:::i;23926:295::-;;;;;;;;;;-1:-1:-1;23926:295:0;;;;;:::i;:::-;;:::i;48031:148::-;;;;;;;;;;;;;:::i;117109:133::-;;;;;;;;;;-1:-1:-1;117109:133:0;;;;;:::i;:::-;;:::i;117384:546::-;;;;;;;;;;-1:-1:-1;117384:546:0;;;;;:::i;:::-;;:::i;117256:112::-;;;;;;;;;;-1:-1:-1;117256:112:0;;;;;:::i;:::-;;:::i;48940:35::-;;;;;;;;;;;;;;;;48982:55;;;;;;;;;;;;49014:23;48982:55;;47380:87;;;;;;;;;;-1:-1:-1;47453:6:0;;-1:-1:-1;;;;;47453:6:0;47380:87;;116264:99;;;;;;;;;;-1:-1:-1;116264:99:0;;;;;:::i;:::-;;:::i;24845:104::-;;;;;;;;;;;;;:::i;26638:327::-;;;;;;;;;;-1:-1:-1;26638:327:0;;;;;:::i;:::-;;:::i;118294:365::-;;;;;;;;;;-1:-1:-1;118294:365:0;;;;;:::i;:::-;;:::i;116155:101::-;;;;;;;;;;-1:-1:-1;116155:101:0;;;;;:::i;:::-;;:::i;28020:365::-;;;;;;;;;;-1:-1:-1;28020:365:0;;;;;:::i;:::-;;:::i;121074:276::-;;;;;;;;;;-1:-1:-1;121074:276:0;;;;;:::i;:::-;;:::i;48891:42::-;;;;;;;;;;;;48932:1;48891:42;;120969:97;;;;;;;;;;;;;:::i;27036:214::-;;;;;;;;;;-1:-1:-1;27036:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;27207:25:0;;;27178:4;27207:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;27036:214;119996:965;;;;;;:::i;:::-;;:::i;118671:1317::-;;;;;;:::i;:::-;;:::i;48334:281::-;;;;;;;;;;-1:-1:-1;48334:281:0;;;;;:::i;:::-;;:::i;117953:205::-;118019:7;-1:-1:-1;;;;;118046:19:0;;118038:62;;;;-1:-1:-1;;;118038:62:0;;15142:2:1;118038:62:0;;;15124:21:1;15181:2;15161:18;;;15154:30;15220:32;15200:18;;;15193:60;15270:18;;118038:62:0;;;;;;;;;-1:-1:-1;;;;;;118124:24:0;;;;;:17;:24;;;;;;;117953:205::o;38570:300::-;38717:4;-1:-1:-1;;;;;;38759:50:0;;-1:-1:-1;;;38759:50:0;;:103;;;38826:36;38850:11;38826:23;:36::i;:::-;38739:123;38570:300;-1:-1:-1;;38570:300:0:o;24676:100::-;24730:13;24763:5;24756:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24676:100;:::o;26258:308::-;26379:7;30021:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30021:16:0;26404:110;;;;-1:-1:-1;;;26404:110:0;;14368:2:1;26404:110:0;;;14350:21:1;14407:2;14387:18;;;14380:30;14446:34;14426:18;;;14419:62;-1:-1:-1;;;14497:18:1;;;14490:42;14549:19;;26404:110:0;14166:408:1;26404:110:0;-1:-1:-1;26534:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;26534:24:0;;26258:308::o;25781:411::-;25862:13;25878:23;25893:7;25878:14;:23::i;:::-;25862:39;;25926:5;-1:-1:-1;;;;;25920:11:0;:2;-1:-1:-1;;;;;25920:11:0;;;25912:57;;;;-1:-1:-1;;;25912:57:0;;16266:2:1;25912:57:0;;;16248:21:1;16305:2;16285:18;;;16278:30;16344:34;16324:18;;;16317:62;-1:-1:-1;;;16395:18:1;;;16388:31;16436:19;;25912:57:0;16064:397:1;25912:57:0;18766:10;-1:-1:-1;;;;;26004:21:0;;;;:62;;-1:-1:-1;26029:37:0;26046:5;18766:10;27036:214;:::i;26029:37::-;25982:168;;;;-1:-1:-1;;;25982:168:0;;12410:2:1;25982:168:0;;;12392:21:1;12449:2;12429:18;;;12422:30;12488:34;12468:18;;;12461:62;12559:26;12539:18;;;12532:54;12603:19;;25982:168:0;12208:420:1;25982:168:0;26163:21;26172:2;26176:7;26163:8;:21::i;:::-;25851:341;25781:411;;:::o;116491:604::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;116676:4:::1;116649:24;:14;45871::::0;;45779:114;116649:24:::1;:31;116623:129;;;;-1:-1:-1::0;;;116623:129:0::1;;;;;;;:::i;:::-;116786:9;116781:307;116805:14;116801:1;:18;116781:307;;;116845:15;116863:24;:14;45871::::0;;45779:114;116863:24:::1;116845:42;;48821:4;116916:24;:14;45871::::0;;45779:114;116916:24:::1;:41;116912:161;;;116982:26;:14;:24;:26::i;:::-;117031:22;117041:2;117045:7;117031:9;:22::i;:::-;-1:-1:-1::0;116821:3:0;::::1;::::0;::::1;:::i;:::-;;;;116781:307;;27317:376:::0;27526:41;18766:10;27559:7;27526:18;:41::i;:::-;27504:140;;;;-1:-1:-1;;;27504:140:0;;;;;;;:::i;:::-;27657:28;27667:4;27673:2;27677:7;27657:9;:28::i;38954:343::-;39096:7;39151:23;39168:5;39151:16;:23::i;:::-;39143:5;:31;39121:124;;;;-1:-1:-1;;;39121:124:0;;8581:2:1;39121:124:0;;;8563:21:1;8620:2;8600:18;;;8593:30;8659:34;8639:18;;;8632:62;-1:-1:-1;;;8710:18:1;;;8703:41;8761:19;;39121:124:0;8379:407:1;39121:124:0;-1:-1:-1;;;;;;39263:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;38954:343::o;121358:147::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;121460:37:::1;::::0;121426:21:::1;::::0;121468:10:::1;::::0;121460:37;::::1;;;::::0;121426:21;;121408:15:::1;121460:37:::0;121408:15;121460:37;121426:21;121468:10;121460:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;121397:108;121358:147::o:0;27764:185::-;27902:39;27919:4;27925:2;27929:7;27902:39;;;;;;;;;;;;:16;:39::i;39563:320::-;39683:7;39738:30;39461:10;:17;;39373:113;39738:30;39730:5;:38;39708:132;;;;-1:-1:-1;;;39708:132:0;;17895:2:1;39708:132:0;;;17877:21:1;17934:2;17914:18;;;17907:30;17973:34;17953:18;;;17946:62;-1:-1:-1;;;18024:18:1;;;18017:42;18076:19;;39708:132:0;17693:408:1;39708:132:0;39858:10;39869:5;39858:17;;;;;;;;:::i;:::-;;;;;;;;;39851:24;;39563:320;;;:::o;116371:96::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;116440:19;;::::1;::::0;:13:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;24283:326::-:0;24400:7;24441:16;;;:7;:16;;;;;;-1:-1:-1;;;;;24441:16:0;24490:19;24468:110;;;;-1:-1:-1;;;24468:110:0;;13246:2:1;24468:110:0;;;13228:21:1;13285:2;13265:18;;;13258:30;13324:34;13304:18;;;13297:62;-1:-1:-1;;;13375:18:1;;;13368:39;13424:19;;24468:110:0;13044:405:1;23926:295:0;24043:7;-1:-1:-1;;;;;24090:19:0;;24068:111;;;;-1:-1:-1;;;24068:111:0;;12835:2:1;24068:111:0;;;12817:21:1;12874:2;12854:18;;;12847:30;12913:34;12893:18;;;12886:62;-1:-1:-1;;;12964:18:1;;;12957:40;13014:19;;24068:111:0;12633:406:1;24068:111:0;-1:-1:-1;;;;;;24197:16:0;;;;;:9;:16;;;;;;;23926:295::o;48031:148::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;48122:6:::1;::::0;48101:40:::1;::::0;48138:1:::1;::::0;-1:-1:-1;;;;;48122:6:0::1;::::0;48101:40:::1;::::0;48138:1;;48101:40:::1;48152:6;:19:::0;;-1:-1:-1;;;;;;48152:19:0::1;::::0;;48031:148::o;117109:133::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;117194:17:::1;:38:::0;;;::::1;;;;-1:-1:-1::0;;117194:38:0;;::::1;::::0;;;::::1;::::0;;117109:133::o;117384:546::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;117473:9:::1;117468:453;117488:20:::0;;::::1;117468:453;;;117560:1;117536:9:::0;;117546:1;117536:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;117536:26:0::1;;;117528:65;;;::::0;-1:-1:-1;;;117528:65:0;;15501:2:1;117528:65:0::1;::::0;::::1;15483:21:1::0;15540:2;15520:18;;;15513:30;15579:28;15559:18;;;15552:56;15625:18;;117528:65:0::1;15299:350:1::0;117528:65:0::1;117659:4;117632:10;:24;117643:9;;117653:1;117643:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;117632:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;117632:24:0;;;:31;;-1:-1:-1;;117632:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;117836:17:::1;-1:-1:-1::0;117854:9:0;;117864:1;117854:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;117836:31:0::1;-1:-1:-1::0;;;;;117836:31:0::1;;;;;;;;;;;;;:35;:73;;117908:1;117836:73;;;117874:17;:31;117892:9;;117902:1;117892:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;117874:31:0::1;-1:-1:-1::0;;;;;117874:31:0::1;;;;;;;;;;;;;117836:73;-1:-1:-1::0;117510:3:0;::::1;::::0;::::1;:::i;:::-;;;;117468:453;;117256:112:::0;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;117332:16:::1;:26:::0;117256:112::o;116264:99::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;116337:18;;::::1;::::0;:12:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;24845:104::-:0;24901:13;24934:7;24927:14;;;;;:::i;26638:327::-;-1:-1:-1;;;;;26773:24:0;;18766:10;26773:24;;26765:62;;;;-1:-1:-1;;;26765:62:0;;10581:2:1;26765:62:0;;;10563:21:1;10620:2;10600:18;;;10593:30;10659:27;10639:18;;;10632:55;10704:18;;26765:62:0;10379:349:1;26765:62:0;18766:10;26840:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;26840:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;26840:53:0;;;;;;;;;;26909:48;;7392:41:1;;;26840:42:0;;18766:10;26909:48;;7365:18:1;26909:48:0;;;;;;;26638:327;;:::o;118294:365::-;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;118388:9:::1;118383:267;118403:20:::0;;::::1;118383:267;;;118475:1;118451:9:::0;;118461:1;118451:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;118451:26:0::1;;;118443:65;;;::::0;-1:-1:-1;;;118443:65:0;;15501:2:1;118443:65:0::1;::::0;::::1;15483:21:1::0;15540:2;15520:18;;;15513:30;15579:28;15559:18;;;15552:56;15625:18;;118443:65:0::1;15299:350:1::0;118443:65:0::1;118633:5;118606:10;:24;118617:9;;118627:1;118617:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;118606:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;118606:24:0;:32;;-1:-1:-1;;118606:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;118425:3;::::1;::::0;::::1;:::i;:::-;;;;118383:267;;116155:101:::0;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;116219:9:::1;:20:::0;;-1:-1:-1;;116219:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;116155:101::o;28020:365::-;28209:41;18766:10;28242:7;28209:18;:41::i;:::-;28187:140;;;;-1:-1:-1;;;28187:140:0;;;;;;;:::i;:::-;28338:39;28352:4;28358:2;28362:7;28371:5;28338:13;:39::i;:::-;28020:365;;;;:::o;121074:276::-;29997:4;30021:16;;;:7;:16;;;;;;121183:13;;-1:-1:-1;;;;;30021:16:0;121214:49;;;;-1:-1:-1;;;121214:49:0;;10935:2:1;121214:49:0;;;10917:21:1;10974:2;10954:18;;;10947:30;-1:-1:-1;;;10993:18:1;;;10986:50;11053:18;;121214:49:0;10733:344:1;121214:49:0;121307:13;121322:18;:7;:16;:18::i;:::-;121290:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;121276:66;;121074:276;;;:::o;120969:97::-;121013:13;121046:12;121039:19;;;;;:::i;119996:965::-;120084:9;;;;120076:44;;;;-1:-1:-1;;;120076:44:0;;14017:2:1;120076:44:0;;;13999:21:1;14056:2;14036:18;;;14029:30;-1:-1:-1;;;14075:18:1;;;14068:52;14137:18;;120076:44:0;13815:346:1;120076:44:0;120187:1;120163:21;120173:10;120163:9;:21::i;:::-;:25;120141:111;;;;-1:-1:-1;;;120141:111:0;;;;;;;:::i;:::-;48932:1;120295:14;:32;;120273:109;;;;-1:-1:-1;;;120273:109:0;;12054:2:1;120273:109:0;;;12036:21:1;12093:2;12073:18;;;12066:30;12132:29;12112:18;;;12105:57;12179:18;;120273:109:0;11852:351:1;120273:109:0;48821:4;120415:24;:14;45871;;45779:114;120415:24;:41;120393:127;;;;-1:-1:-1;;;120393:127:0;;;;;;;:::i;:::-;120579:9;120553:22;120561:14;49014:23;120553:22;:::i;:::-;:35;;120531:113;;;;-1:-1:-1;;;120531:113:0;;11284:2:1;120531:113:0;;;11266:21:1;11323:2;11303:18;;;11296:30;11362;11342:18;;;11335:58;11410:18;;120531:113:0;11082:352:1;120531:113:0;120672:9;120667:287;120691:14;120687:1;:18;120667:287;;;120727:15;120745:24;:14;45871;;45779:114;120745:24;120727:42;;48821:4;120790:24;:14;45871;;45779:114;120790:24;:41;120786:157;;;120852:26;:14;:24;:26::i;:::-;120897:30;120907:10;120919:7;120897:9;:30::i;:::-;-1:-1:-1;120707:3:0;;;;:::i;:::-;;;;120667:287;;118671:1317;48932:1;118772:14;:32;;118750:109;;;;-1:-1:-1;;;118750:109:0;;12054:2:1;118750:109:0;;;12036:21:1;12093:2;12073:18;;;12066:30;12132:29;12112:18;;;12105:57;12179:18;;118750:109:0;11852:351:1;118750:109:0;118916:1;118892:21;118902:10;118892:9;:21::i;:::-;:25;118870:111;;;;-1:-1:-1;;;118870:111:0;;;;;;;:::i;:::-;119000:17;;;;;;;118992:54;;;;-1:-1:-1;;;118992:54:0;;7870:2:1;118992:54:0;;;7852:21:1;7909:2;7889:18;;;7882:30;7948:26;7928:18;;;7921:54;7992:18;;118992:54:0;7668:348:1;118992:54:0;119076:10;119065:22;;;;:10;:22;;;;;;;;119057:64;;;;-1:-1:-1;;;119057:64:0;;8223:2:1;119057:64:0;;;8205:21:1;8262:2;8242:18;;;8235:30;8301:31;8281:18;;;8274:59;8350:18;;119057:64:0;8021:353:1;119057:64:0;48821:4;119154:24;:14;45871;;45779:114;119154:24;:41;119132:116;;;;-1:-1:-1;;;119132:116:0;;18308:2:1;119132:116:0;;;18290:21:1;18347:2;18327:18;;;18320:30;18386:27;18366:18;;;18359:55;18431:18;;119132:116:0;18106:349:1;119132:116:0;119285:16;;119267:14;:34;;119259:79;;;;-1:-1:-1;;;119259:79:0;;19019:2:1;119259:79:0;;;19001:21:1;;;19038:18;;;19031:30;19097:34;19077:18;;;19070:62;19149:18;;119259:79:0;18817:356:1;119259:79:0;119407:16;;119375:10;119357:29;;;;:17;:29;;;;;;:46;;119389:14;;119357:46;:::i;:::-;:66;;119349:107;;;;-1:-1:-1;;;119349:107:0;;18662:2:1;119349:107:0;;;18644:21:1;18701:2;18681:18;;;18674:30;18740;18720:18;;;18713:58;18788:18;;119349:107:0;18460:352:1;119349:107:0;119501:9;119475:22;119483:14;49014:23;119475:22;:::i;:::-;:35;;119467:76;;;;-1:-1:-1;;;119467:76:0;;11284:2:1;119467:76:0;;;11266:21:1;11323:2;11303:18;;;11296:30;11362;11342:18;;;11335:58;11410:18;;119467:76:0;11082:352:1;119467:76:0;48821:4;119576:24;:14;45871;;45779:114;119576:24;:41;119554:127;;;;-1:-1:-1;;;119554:127:0;;;;;;;:::i;:::-;119697:9;119692:287;119716:14;119712:1;:18;119692:287;;;119752:15;119770:24;:14;45871;;45779:114;119770:24;119752:42;;48821:4;119815:24;:14;45871;;45779:114;119815:24;:41;119811:157;;;119877:26;:14;:24;:26::i;:::-;119922:30;119932:10;119944:7;119922:9;:30::i;:::-;-1:-1:-1;119732:3:0;;;;:::i;:::-;;;;119692:287;;48334:281;47453:6;;-1:-1:-1;;;;;47453:6:0;18766:10;47600:23;47592:68;;;;-1:-1:-1;;;47592:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;48437:22:0;::::1;48415:110;;;::::0;-1:-1:-1;;;48415:110:0;;9412:2:1;48415:110:0::1;::::0;::::1;9394:21:1::0;9451:2;9431:18;;;9424:30;9490:34;9470:18;;;9463:62;-1:-1:-1;;;9541:18:1;;;9534:36;9587:19;;48415:110:0::1;9210:402:1::0;48415:110:0::1;48562:6;::::0;48541:38:::1;::::0;-1:-1:-1;;;;;48541:38:0;;::::1;::::0;48562:6:::1;::::0;48541:38:::1;::::0;48562:6:::1;::::0;48541:38:::1;48590:6;:17:::0;;-1:-1:-1;;;;;;48590:17:0::1;-1:-1:-1::0;;;;;48590:17:0;;;::::1;::::0;;;::::1;::::0;;48334:281::o;23507:355::-;23654:4;-1:-1:-1;;;;;;23696:40:0;;-1:-1:-1;;;23696:40:0;;:105;;-1:-1:-1;;;;;;;23753:48:0;;-1:-1:-1;;;23753:48:0;23696:105;:158;;;-1:-1:-1;;;;;;;;;;22117:40:0;;;23818:36;21958:207;34069:174;34144:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;34144:29:0;-1:-1:-1;;;;;34144:29:0;;;;;;;;:24;;34198:23;34144:24;34198:14;:23::i;:::-;-1:-1:-1;;;;;34189:46:0;;;;;;;;;;;34069:174;;:::o;45901:117::-;45998:1;45980:7;:14;;;:19;;;;;;;:::i;:::-;;;;-1:-1:-1;;;45901:117:0:o;31020:110::-;31096:26;31106:2;31110:7;31096:26;;;;;;;;;;;;:9;:26::i;30226:452::-;30355:4;30021:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30021:16:0;30377:110;;;;-1:-1:-1;;;30377:110:0;;11641:2:1;30377:110:0;;;11623:21:1;11680:2;11660:18;;;11653:30;11719:34;11699:18;;;11692:62;-1:-1:-1;;;11770:18:1;;;11763:42;11822:19;;30377:110:0;11439:408:1;30377:110:0;30498:13;30514:23;30529:7;30514:14;:23::i;:::-;30498:39;;30567:5;-1:-1:-1;;;;;30556:16:0;:7;-1:-1:-1;;;;;30556:16:0;;:64;;;;30613:7;-1:-1:-1;;;;;30589:31:0;:20;30601:7;30589:11;:20::i;:::-;-1:-1:-1;;;;;30589:31:0;;30556:64;:113;;;-1:-1:-1;;;;;;27207:25:0;;;27178:4;27207:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;30637:32;30548:122;30226:452;-1:-1:-1;;;;30226:452:0:o;33336:615::-;33509:4;-1:-1:-1;;;;;33482:31:0;:23;33497:7;33482:14;:23::i;:::-;-1:-1:-1;;;;;33482:31:0;;33460:122;;;;-1:-1:-1;;;33460:122:0;;15856:2:1;33460:122:0;;;15838:21:1;15895:2;15875:18;;;15868:30;15934:34;15914:18;;;15907:62;-1:-1:-1;;;15985:18:1;;;15978:39;16034:19;;33460:122:0;15654:405:1;33460:122:0;-1:-1:-1;;;;;33601:16:0;;33593:65;;;;-1:-1:-1;;;33593:65:0;;10176:2:1;33593:65:0;;;10158:21:1;10215:2;10195:18;;;10188:30;10254:34;10234:18;;;10227:62;-1:-1:-1;;;10305:18:1;;;10298:34;10349:19;;33593:65:0;9974:400:1;33593:65:0;33671:39;33692:4;33698:2;33702:7;33671:20;:39::i;:::-;33775:29;33792:1;33796:7;33775:8;:29::i;:::-;-1:-1:-1;;;;;33817:15:0;;;;;;:9;:15;;;;;:20;;33836:1;;33817:15;:20;;33836:1;;33817:20;:::i;:::-;;;;-1:-1:-1;;;;;;;33848:13:0;;;;;;:9;:13;;;;;:18;;33865:1;;33848:13;:18;;33865:1;;33848:18;:::i;:::-;;;;-1:-1:-1;;33877:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;33877:21:0;-1:-1:-1;;;;;33877:21:0;;;;;;;;;33916:27;;33877:16;;33916:27;;;;;;;33336:615;;;:::o;29267:352::-;29424:28;29434:4;29440:2;29444:7;29424:9;:28::i;:::-;29485:48;29508:4;29514:2;29518:7;29527:5;29485:22;:48::i;:::-;29463:148;;;;-1:-1:-1;;;29463:148:0;;;;;;;:::i;19358:723::-;19414:13;19635:10;19631:53;;-1:-1:-1;;19662:10:0;;;;;;;;;;;;-1:-1:-1;;;19662:10:0;;;;;19358:723::o;19631:53::-;19709:5;19694:12;19750:78;19757:9;;19750:78;;19783:8;;;;:::i;:::-;;-1:-1:-1;19806:10:0;;-1:-1:-1;19814:2:0;19806:10;;:::i;:::-;;;19750:78;;;19838:19;19870:6;19860:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19860:17:0;;19838:39;;19888:154;19895:10;;19888:154;;19922:11;19932:1;19922:11;;:::i;:::-;;-1:-1:-1;19991:10:0;19999:2;19991:5;:10;:::i;:::-;19978:24;;:2;:24;:::i;:::-;19965:39;;19948:6;19955;19948:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;19948:56:0;;;;;;;;-1:-1:-1;20019:11:0;20028:2;20019:11;;:::i;:::-;;;19888:154;;31357:321;31487:18;31493:2;31497:7;31487:5;:18::i;:::-;31538:54;31569:1;31573:2;31577:7;31586:5;31538:22;:54::i;:::-;31516:154;;;;-1:-1:-1;;;31516:154:0;;;;;;;:::i;40496:589::-;-1:-1:-1;;;;;40702:18:0;;40698:187;;40737:40;40769:7;41912:10;:17;;41885:24;;;;:15;:24;;;;;:44;;;41940:24;;;;;;;;;;;;41808:164;40737:40;40698:187;;;40807:2;-1:-1:-1;;;;;40799:10:0;:4;-1:-1:-1;;;;;40799:10:0;;40795:90;;40826:47;40859:4;40865:7;40826:32;:47::i;:::-;-1:-1:-1;;;;;40899:16:0;;40895:183;;40932:45;40969:7;40932:36;:45::i;40895:183::-;41005:4;-1:-1:-1;;;;;40999:10:0;:2;-1:-1:-1;;;;;40999:10:0;;40995:83;;41026:40;41054:2;41058:7;41026:27;:40::i;34808:1053::-;34963:4;-1:-1:-1;;;;;34984:13:0;;10465:20;10513:8;34980:874;;35037:175;;-1:-1:-1;;;35037:175:0;;-1:-1:-1;;;;;35037:36:0;;;;;:175;;18766:10;;35131:4;;35158:7;;35188:5;;35037:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35037:175:0;;;;;;;;-1:-1:-1;;35037:175:0;;;;;;;;;;;;:::i;:::-;;;35016:783;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35399:13:0;;35395:389;;35442:108;;-1:-1:-1;;;35442:108:0;;;;;;;:::i;35395:389::-;35734:6;35728:13;35719:6;35715:2;35711:15;35704:38;35016:783;-1:-1:-1;;;;;;35276:55:0;-1:-1:-1;;;35276:55:0;;-1:-1:-1;35269:62:0;;34980:874;-1:-1:-1;35838:4:0;34808:1053;;;;;;:::o;32014:382::-;-1:-1:-1;;;;;32094:16:0;;32086:61;;;;-1:-1:-1;;;32086:61:0;;13656:2:1;32086:61:0;;;13638:21:1;;;13675:18;;;13668:30;13734:34;13714:18;;;13707:62;13786:18;;32086:61:0;13454:356:1;32086:61:0;29997:4;30021:16;;;:7;:16;;;;;;-1:-1:-1;;;;;30021:16:0;:30;32158:58;;;;-1:-1:-1;;;32158:58:0;;9819:2:1;32158:58:0;;;9801:21:1;9858:2;9838:18;;;9831:30;9897;9877:18;;;9870:58;9945:18;;32158:58:0;9617:352:1;32158:58:0;32229:45;32258:1;32262:2;32266:7;32229:20;:45::i;:::-;-1:-1:-1;;;;;32287:13:0;;;;;;:9;:13;;;;;:18;;32304:1;;32287:13;:18;;32304:1;;32287:18;:::i;:::-;;;;-1:-1:-1;;32316:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;32316:21:0;-1:-1:-1;;;;;32316:21:0;;;;;;;;32355:33;;32316:16;;;32355:33;;32316:16;;32355:33;32014:382;;:::o;42599:1002::-;42879:22;42929:1;42904:22;42921:4;42904:16;:22::i;:::-;:26;;;;:::i;:::-;42941:18;42962:26;;;:17;:26;;;;;;42879:51;;-1:-1:-1;43095:28:0;;;43091:328;;-1:-1:-1;;;;;43162:18:0;;43140:19;43162:18;;;:12;:18;;;;;;;;:34;;;;;;;;;43213:30;;;;;;:44;;;43330:30;;:17;:30;;;;;:43;;;43091:328;-1:-1:-1;43515:26:0;;;;:17;:26;;;;;;;;43508:33;;;-1:-1:-1;;;;;43559:18:0;;;;;:12;:18;;;;;:34;;;;;;;43552:41;42599:1002::o;43896:1079::-;44174:10;:17;44149:22;;44174:21;;44194:1;;44174:21;:::i;:::-;44206:18;44227:24;;;:15;:24;;;;;;44600:10;:26;;44149:46;;-1:-1:-1;44227:24:0;;44149:46;;44600:26;;;;;;:::i;:::-;;;;;;;;;44578:48;;44664:11;44639:10;44650;44639:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;44744:28;;;:15;:28;;;;;;;:41;;;44916:24;;;;;44909:31;44951:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;43967:1008;;;43896:1079;:::o;41386:221::-;41471:14;41488:20;41505:2;41488:16;:20::i;:::-;-1:-1:-1;;;;;41519:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;41564:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;41386:221:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:186;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:52;;;1121:1;1118;1111:12;1073:52;1144:29;1163:9;1144:29;:::i;:::-;1134:39;993:186;-1:-1:-1;;;993:186:1:o;1184:260::-;1252:6;1260;1313:2;1301:9;1292:7;1288:23;1284:32;1281:52;;;1329:1;1326;1319:12;1281:52;1352:29;1371:9;1352:29;:::i;:::-;1342:39;;1400:38;1434:2;1423:9;1419:18;1400:38;:::i;:::-;1390:48;;1184:260;;;;;:::o;1449:328::-;1526:6;1534;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1634:29;1653:9;1634:29;:::i;:::-;1624:39;;1682:38;1716:2;1705:9;1701:18;1682:38;:::i;:::-;1672:48;;1767:2;1756:9;1752:18;1739:32;1729:42;;1449:328;;;;;:::o;1782:666::-;1877:6;1885;1893;1901;1954:3;1942:9;1933:7;1929:23;1925:33;1922:53;;;1971:1;1968;1961:12;1922:53;1994:29;2013:9;1994:29;:::i;:::-;1984:39;;2042:38;2076:2;2065:9;2061:18;2042:38;:::i;:::-;2032:48;;2127:2;2116:9;2112:18;2099:32;2089:42;;2182:2;2171:9;2167:18;2154:32;2209:18;2201:6;2198:30;2195:50;;;2241:1;2238;2231:12;2195:50;2264:22;;2317:4;2309:13;;2305:27;-1:-1:-1;2295:55:1;;2346:1;2343;2336:12;2295:55;2369:73;2434:7;2429:2;2416:16;2411:2;2407;2403:11;2369:73;:::i;:::-;2359:83;;;1782:666;;;;;;;:::o;2453:254::-;2518:6;2526;2579:2;2567:9;2558:7;2554:23;2550:32;2547:52;;;2595:1;2592;2585:12;2547:52;2618:29;2637:9;2618:29;:::i;:::-;2608:39;;2666:35;2697:2;2686:9;2682:18;2666:35;:::i;2712:254::-;2780:6;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2880:29;2899:9;2880:29;:::i;:::-;2870:39;2956:2;2941:18;;;;2928:32;;-1:-1:-1;;;2712:254:1:o;2971:615::-;3057:6;3065;3118:2;3106:9;3097:7;3093:23;3089:32;3086:52;;;3134:1;3131;3124:12;3086:52;3174:9;3161:23;3203:18;3244:2;3236:6;3233:14;3230:34;;;3260:1;3257;3250:12;3230:34;3298:6;3287:9;3283:22;3273:32;;3343:7;3336:4;3332:2;3328:13;3324:27;3314:55;;3365:1;3362;3355:12;3314:55;3405:2;3392:16;3431:2;3423:6;3420:14;3417:34;;;3447:1;3444;3437:12;3417:34;3500:7;3495:2;3485:6;3482:1;3478:14;3474:2;3470:23;3466:32;3463:45;3460:65;;;3521:1;3518;3511:12;3460:65;3552:2;3544:11;;;;;3574:6;;-1:-1:-1;2971:615:1;;-1:-1:-1;;;;2971:615:1:o;3591:180::-;3647:6;3700:2;3688:9;3679:7;3675:23;3671:32;3668:52;;;3716:1;3713;3706:12;3668:52;3739:26;3755:9;3739:26;:::i;3776:245::-;3834:6;3887:2;3875:9;3866:7;3862:23;3858:32;3855:52;;;3903:1;3900;3893:12;3855:52;3942:9;3929:23;3961:30;3985:5;3961:30;:::i;4026:249::-;4095:6;4148:2;4136:9;4127:7;4123:23;4119:32;4116:52;;;4164:1;4161;4154:12;4116:52;4196:9;4190:16;4215:30;4239:5;4215:30;:::i;4280:450::-;4349:6;4402:2;4390:9;4381:7;4377:23;4373:32;4370:52;;;4418:1;4415;4408:12;4370:52;4458:9;4445:23;4491:18;4483:6;4480:30;4477:50;;;4523:1;4520;4513:12;4477:50;4546:22;;4599:4;4591:13;;4587:27;-1:-1:-1;4577:55:1;;4628:1;4625;4618:12;4577:55;4651:73;4716:7;4711:2;4698:16;4693:2;4689;4685:11;4651:73;:::i;4735:180::-;4794:6;4847:2;4835:9;4826:7;4822:23;4818:32;4815:52;;;4863:1;4860;4853:12;4815:52;-1:-1:-1;4886:23:1;;4735:180;-1:-1:-1;4735:180:1:o;4920:257::-;4961:3;4999:5;4993:12;5026:6;5021:3;5014:19;5042:63;5098:6;5091:4;5086:3;5082:14;5075:4;5068:5;5064:16;5042:63;:::i;:::-;5159:2;5138:15;-1:-1:-1;;5134:29:1;5125:39;;;;5166:4;5121:50;;4920:257;-1:-1:-1;;4920:257:1:o;5182:185::-;5224:3;5262:5;5256:12;5277:52;5322:6;5317:3;5310:4;5303:5;5299:16;5277:52;:::i;:::-;5345:16;;;;;5182:185;-1:-1:-1;;5182:185:1:o;5372:1174::-;5548:3;5577:1;5610:6;5604:13;5640:3;5662:1;5690:9;5686:2;5682:18;5672:28;;5750:2;5739:9;5735:18;5772;5762:61;;5816:4;5808:6;5804:17;5794:27;;5762:61;5842:2;5890;5882:6;5879:14;5859:18;5856:38;5853:165;;;-1:-1:-1;;;5917:33:1;;5973:4;5970:1;5963:15;6003:4;5924:3;5991:17;5853:165;6034:18;6061:104;;;;6179:1;6174:320;;;;6027:467;;6061:104;-1:-1:-1;;6094:24:1;;6082:37;;6139:16;;;;-1:-1:-1;6061:104:1;;6174:320;19433:1;19426:14;;;19470:4;19457:18;;6269:1;6283:165;6297:6;6294:1;6291:13;6283:165;;;6375:14;;6362:11;;;6355:35;6418:16;;;;6312:10;;6283:165;;;6287:3;;6477:6;6472:3;6468:16;6461:23;;6027:467;;;;;;;6510:30;6536:3;6528:6;6510:30;:::i;:::-;6503:37;5372:1174;-1:-1:-1;;;;;5372:1174:1:o;6759:488::-;-1:-1:-1;;;;;7028:15:1;;;7010:34;;7080:15;;7075:2;7060:18;;7053:43;7127:2;7112:18;;7105:34;;;7175:3;7170:2;7155:18;;7148:31;;;6953:4;;7196:45;;7221:19;;7213:6;7196:45;:::i;:::-;7188:53;6759:488;-1:-1:-1;;;;;;6759:488:1:o;7444:219::-;7593:2;7582:9;7575:21;7556:4;7613:44;7653:2;7642:9;7638:18;7630:6;7613:44;:::i;8791:414::-;8993:2;8975:21;;;9032:2;9012:18;;;9005:30;9071:34;9066:2;9051:18;;9044:62;-1:-1:-1;;;9137:2:1;9122:18;;9115:48;9195:3;9180:19;;8791:414::o;14579:356::-;14781:2;14763:21;;;14800:18;;;14793:30;14859:34;14854:2;14839:18;;14832:62;14926:2;14911:18;;14579:356::o;16466:399::-;16668:2;16650:21;;;16707:2;16687:18;;;16680:30;16746:34;16741:2;16726:18;;16719:62;-1:-1:-1;;;16812:2:1;16797:18;;16790:33;16855:3;16840:19;;16466:399::o;16870:400::-;17072:2;17054:21;;;17111:2;17091:18;;;17084:30;17150:34;17145:2;17130:18;;17123:62;-1:-1:-1;;;17216:2:1;17201:18;;17194:34;17260:3;17245:19;;16870:400::o;17275:413::-;17477:2;17459:21;;;17516:2;17496:18;;;17489:30;17555:34;17550:2;17535:18;;17528:62;-1:-1:-1;;;17621:2:1;17606:18;;17599:47;17678:3;17663:19;;17275:413::o;19486:128::-;19526:3;19557:1;19553:6;19550:1;19547:13;19544:39;;;19563:18;;:::i;:::-;-1:-1:-1;19599:9:1;;19486:128::o;19619:120::-;19659:1;19685;19675:35;;19690:18;;:::i;:::-;-1:-1:-1;19724:9:1;;19619:120::o;19744:168::-;19784:7;19850:1;19846;19842:6;19838:14;19835:1;19832:21;19827:1;19820:9;19813:17;19809:45;19806:71;;;19857:18;;:::i;:::-;-1:-1:-1;19897:9:1;;19744:168::o;19917:125::-;19957:4;19985:1;19982;19979:8;19976:34;;;19990:18;;:::i;:::-;-1:-1:-1;20027:9:1;;19917:125::o;20047:258::-;20119:1;20129:113;20143:6;20140:1;20137:13;20129:113;;;20219:11;;;20213:18;20200:11;;;20193:39;20165:2;20158:10;20129:113;;;20260:6;20257:1;20254:13;20251:48;;;-1:-1:-1;;20295:1:1;20277:16;;20270:27;20047:258::o;20310:380::-;20389:1;20385:12;;;;20432;;;20453:61;;20507:4;20499:6;20495:17;20485:27;;20453:61;20560:2;20552:6;20549:14;20529:18;20526:38;20523:161;;;20606:10;20601:3;20597:20;20594:1;20587:31;20641:4;20638:1;20631:15;20669:4;20666:1;20659:15;20523:161;;20310:380;;;:::o;20695:135::-;20734:3;-1:-1:-1;;20755:17:1;;20752:43;;;20775:18;;:::i;:::-;-1:-1:-1;20822:1:1;20811:13;;20695:135::o;20835:112::-;20867:1;20893;20883:35;;20898:18;;:::i;:::-;-1:-1:-1;20932:9:1;;20835:112::o;20952:127::-;21013:10;21008:3;21004:20;21001:1;20994:31;21044:4;21041:1;21034:15;21068:4;21065:1;21058:15;21084:127;21145:10;21140:3;21136:20;21133:1;21126:31;21176:4;21173:1;21166:15;21200:4;21197:1;21190:15;21216:127;21277:10;21272:3;21268:20;21265:1;21258:31;21308:4;21305:1;21298:15;21332:4;21329:1;21322:15;21348:127;21409:10;21404:3;21400:20;21397:1;21390:31;21440:4;21437:1;21430:15;21464:4;21461:1;21454:15;21480:127;21541:10;21536:3;21532:20;21529:1;21522:31;21572:4;21569:1;21562:15;21596:4;21593:1;21586:15;21612:131;-1:-1:-1;;;;;;21686:32:1;;21676:43;;21666:71;;21733:1;21730;21723:12;21666:71;21612:131;:::o

Swarm Source

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