ETH Price: $3,389.56 (+1.32%)

Token

(0xbf331d15070494020502c8a1970649a12e067dbb)
 

Overview

Max Total Supply

10,000 ERC-721 TOKEN*

Holders

1,356

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
bryptocoins.eth
Balance
0 ERC-721 TOKEN*
0x6dfdc97a175094033f4089e158849f9b4e258ff7
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Asset

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-04
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;

pragma solidity ^0.8.0;

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


// File @openzeppelin/contracts/token/ERC721/[email protected]


pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC721/[email protected]


pragma solidity ^0.8.0;

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


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;

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

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

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


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


pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


pragma solidity ^0.8.0;

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

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


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


pragma solidity ^0.8.0;

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

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

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

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

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


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


pragma solidity ^0.8.0;

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


// File @openzeppelin/contracts/token/ERC721/[email protected]


pragma solidity ^0.8.0;







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

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        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.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

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


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;

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

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

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


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


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


pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented, decremented or reset. 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 {
        unchecked {
            counter._value += 1;
        }
    }

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

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}


// File @openzeppelin/contracts/access/[email protected]


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() {
        _setOwner(_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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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


pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

/**
 * @title Asset
 * @author Kevin Eimer (@kevineimer)
 * @dev Used for Ethereum projects compatible with OpenSea
 */

contract Asset is ERC721, Ownable { 

    bool public sale = false;
    bool public presale = true;

    string private _baseURIextended;

    uint16 public nonce = 1;
    uint public price;
    uint16 public earlySupply;
    uint16 public totalSupply;
    uint8 public maxTx;

    mapping (address => uint8) private presaleWallets;

    constructor(
        string memory _name,
        string memory _ticker,
        uint _price, 
        uint16 _totalSupply,
        uint8 _maxTx,
        string memory baseURI_,
        address[] memory _presaleWallets,
        uint8[] memory _presaleAmounts
    ) ERC721(_name, _ticker) {
        price = _price;
        earlySupply = _totalSupply;
        totalSupply = _totalSupply;
        maxTx = _maxTx;
        _baseURIextended = baseURI_;
        setPresaleWalletsAmounts(_presaleWallets, _presaleAmounts);
    }

    function setBaseURI(string memory baseURI_) public onlyOwner {
        _baseURIextended = baseURI_;
    }

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

    function setPrice(uint _newPrice) external onlyOwner {
        price = _newPrice;
    }

    function setEarlySupply(uint16 _newSupply) external onlyOwner {
        earlySupply = _newSupply;
    }

    function setTotalSupply(uint16 _newSupply) external onlyOwner {
        totalSupply = _newSupply;
    }

    function setPresale(bool _value) public onlyOwner {
        presale = _value;
    }

    function setSale(bool _value) public onlyOwner {
        sale = _value;
    }

    function setPresaleWalletsAmounts(address[] memory _a, uint8[] memory _amount) public onlyOwner {
        for (uint8 i; i < _a.length; i++) {
            presaleWallets[_a[i]] = _amount[i];
        }
    }

    function setMaxTx(uint8 _newMax) external onlyOwner {
        maxTx = _newMax;
    }

    function getPresaleWalletAmount(address _wallet) public view returns(uint8) {
        return presaleWallets[_wallet];
    }

    function buyPresale(uint8 _qty) external payable {
        uint8 _qtyAllowed = presaleWallets[msg.sender];
        require(presale, 'Presale is not active');
        require(_qty <= _qtyAllowed, 'You can not buy more than allowed');
        require(_qtyAllowed > 0, 'You can not mint on presale');
        require(uint16(_qty) + nonce - 1 <= earlySupply, 'No more supply');
        require(uint16(_qty) + nonce - 1 <= totalSupply, 'No more supply');
        require(msg.value >= price * _qty, 'Invalid price');
        presaleWallets[msg.sender] = _qtyAllowed - _qty;

        mintNFTs(msg.sender, _qty);
    }

    function buy(uint8 _qty) external payable {
        require(sale, 'Sale is not active');
        require(_qty <= maxTx || _qty < 1, 'You can not buy more than allowed');
        require(uint16(_qty) + nonce - 1 <= earlySupply, 'No more supply');
        require(uint16(_qty) + nonce - 1 <= totalSupply, 'No more supply');
        require(msg.value >= price * _qty, 'Invalid price');

        mintNFTs(msg.sender, _qty);
    }

    function giveaway(address _to, uint8 _qty) external onlyOwner {
        require(uint16(_qty) + nonce - 1 <= totalSupply, 'No more supply');

        mintNFTs(_to, _qty);
    }

    function mintNFTs(address _to, uint8 _qty) private {
        for (uint8 i = 0; i < _qty; i++) {
            uint16 _tokenId = nonce;
            _safeMint(_to, _tokenId);
            nonce++;
        }
    }

    function withdraw() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_ticker","type":"string"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint16","name":"_totalSupply","type":"uint16"},{"internalType":"uint8","name":"_maxTx","type":"uint8"},{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"address[]","name":"_presaleWallets","type":"address[]"},{"internalType":"uint8[]","name":"_presaleAmounts","type":"uint8[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"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":[{"internalType":"uint8","name":"_qty","type":"uint8"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_qty","type":"uint8"}],"name":"buyPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"earlySupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getPresaleWalletAmount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint8","name":"_qty","type":"uint8"}],"name":"giveaway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newSupply","type":"uint16"}],"name":"setEarlySupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newMax","type":"uint8"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint8[]","name":"_amount","type":"uint8[]"}],"name":"setPresaleWalletsAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newSupply","type":"uint16"}],"name":"setTotalSupply","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"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"}]

60806040526000600660146101000a81548160ff0219169083151502179055506001600660156101000a81548160ff0219169083151502179055506001600860006101000a81548161ffff021916908361ffff1602179055503480156200006557600080fd5b50604051620052873803806200528783398181016040528101906200008b9190620006ca565b87878160009080519060200190620000a592919062000408565b508060019080519060200190620000be92919062000408565b505050620000e1620000d56200017660201b60201c565b6200017e60201b60201c565b8560098190555084600a60006101000a81548161ffff021916908361ffff16021790555084600a60026101000a81548161ffff021916908361ffff16021790555083600a60046101000a81548160ff021916908360ff16021790555082600790805190602001906200015592919062000408565b506200016882826200024460201b60201c565b505050505050505062000b7a565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002546200017660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200027a620003de60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ca9062000831565b60405180910390fd5b60005b82518160ff161015620003d957818160ff168151811062000320577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600b6000858460ff168151811062000369577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055508080620003d09062000a1c565b915050620002d6565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200041690620009b0565b90600052602060002090601f0160209004810192826200043a576000855562000486565b82601f106200045557805160ff191683800117855562000486565b8280016001018555821562000486579182015b828111156200048557825182559160200191906001019062000468565b5b50905062000495919062000499565b5090565b5b80821115620004b45760008160009055506001016200049a565b5090565b6000620004cf620004c9846200087c565b62000853565b90508083825260208201905082856020860282011115620004ef57600080fd5b60005b85811015620005235781620005088882620005e7565b845260208401935060208301925050600181019050620004f2565b5050509392505050565b6000620005446200053e84620008ab565b62000853565b905080838252602082019050828560208602820111156200056457600080fd5b60005b858110156200059857816200057d8882620006b3565b84526020840193506020830192505060018101905062000567565b5050509392505050565b6000620005b9620005b384620008da565b62000853565b905082815260208101848484011115620005d257600080fd5b620005df8482856200097a565b509392505050565b600081519050620005f88162000b12565b92915050565b600082601f8301126200061057600080fd5b815162000622848260208601620004b8565b91505092915050565b600082601f8301126200063d57600080fd5b81516200064f8482602086016200052d565b91505092915050565b600082601f8301126200066a57600080fd5b81516200067c848260208601620005a2565b91505092915050565b600081519050620006968162000b2c565b92915050565b600081519050620006ad8162000b46565b92915050565b600081519050620006c48162000b60565b92915050565b600080600080600080600080610100898b031215620006e857600080fd5b600089015167ffffffffffffffff8111156200070357600080fd5b620007118b828c0162000658565b985050602089015167ffffffffffffffff8111156200072f57600080fd5b6200073d8b828c0162000658565b9750506040620007508b828c016200069c565b9650506060620007638b828c0162000685565b9550506080620007768b828c01620006b3565b94505060a089015167ffffffffffffffff8111156200079457600080fd5b620007a28b828c0162000658565b93505060c089015167ffffffffffffffff811115620007c057600080fd5b620007ce8b828c01620005fe565b92505060e089015167ffffffffffffffff811115620007ec57600080fd5b620007fa8b828c016200062b565b9150509295985092959890939650565b60006200081960208362000910565b9150620008268262000ae9565b602082019050919050565b600060208201905081810360008301526200084c816200080a565b9050919050565b60006200085f62000872565b90506200086d8282620009e6565b919050565b6000604051905090565b600067ffffffffffffffff8211156200089a576200089962000aa9565b5b602082029050602081019050919050565b600067ffffffffffffffff821115620008c957620008c862000aa9565b5b602082029050602081019050919050565b600067ffffffffffffffff821115620008f857620008f762000aa9565b5b620009038262000ad8565b9050602081019050919050565b600082825260208201905092915050565b60006200092e8262000943565b9050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200099a5780820151818401526020810190506200097d565b83811115620009aa576000848401525b50505050565b60006002820490506001821680620009c957607f821691505b60208210811415620009e057620009df62000a7a565b5b50919050565b620009f18262000ad8565b810181811067ffffffffffffffff8211171562000a135762000a1262000aa9565b5b80604052505050565b600062000a29826200096d565b915060ff82141562000a405762000a3f62000a4b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000b1d8162000921565b811462000b2957600080fd5b50565b62000b378162000935565b811462000b4357600080fd5b50565b62000b518162000963565b811462000b5d57600080fd5b50565b62000b6b816200096d565b811462000b7757600080fd5b50565b6146fd8062000b8a6000396000f3fe60806040526004361061020f5760003560e01c80637437681e11610118578063a63b94f5116100a0578063c54e73e31161006f578063c54e73e314610743578063c87b56dd1461076c578063e985e9c5146107a9578063f2fde38b146107e6578063fdea8e0b1461080f5761020f565b8063a63b94f5146106aa578063affed0e0146106c6578063b88d4fde146106f1578063c1408d791461071a5761020f565b806395d89b41116100e757806395d89b41146105c55780639dcd8cde146105f0578063a035b1fe1461062d578063a22cb46514610658578063a24ffbd4146106815761020f565b80637437681e1461051b5780638cb2923c146105465780638da5cb5b1461057157806391b7f5ed1461059c5761020f565b806342842e0e1161019b57806365f48e621161016a57806365f48e621461044a5780636ad1fe021461047357806370a082311461049e578063715018a6146104db57806373bfad87146104f25761020f565b806342842e0e1461039257806355f804b3146103bb578063562e438b146103e45780636352211e1461040d5761020f565b806314107f3c116101e257806314107f3c146102e257806318160ddd146102fe5780631d2e5a3a1461032957806323b872dd146103525780633ccfd60b1461037b5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b6004803603810190610236919061324b565b61083a565b60405161024891906137d4565b60405180910390f35b34801561025d57600080fd5b5061026661091c565b60405161027391906137ef565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613307565b6109ae565b6040516102b0919061376d565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db919061313e565b610a33565b005b6102fc60048036038101906102f79190613330565b610b4b565b005b34801561030a57600080fd5b50610313610d6a565b6040516103209190613ad1565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b9190613222565b610d7e565b005b34801561035e57600080fd5b5061037960048036038101906103749190613038565b610e17565b005b34801561038757600080fd5b50610390610e77565b005b34801561039e57600080fd5b506103b960048036038101906103b49190613038565b610f3c565b005b3480156103c757600080fd5b506103e260048036038101906103dd919061329d565b610f5c565b005b3480156103f057600080fd5b5061040b600480360381019061040691906132de565b610ff2565b005b34801561041957600080fd5b50610434600480360381019061042f9190613307565b61108e565b604051610441919061376d565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190613330565b611140565b005b34801561047f57600080fd5b506104886111da565b60405161049591906137d4565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612fd3565b6111ed565b6040516104d29190613aec565b60405180910390f35b3480156104e757600080fd5b506104f06112a5565b005b3480156104fe57600080fd5b50610519600480360381019061051491906131b6565b61132d565b005b34801561052757600080fd5b506105306114ae565b60405161053d9190613b07565b60405180910390f35b34801561055257600080fd5b5061055b6114c1565b6040516105689190613ad1565b60405180910390f35b34801561057d57600080fd5b506105866114d5565b604051610593919061376d565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be9190613307565b6114ff565b005b3480156105d157600080fd5b506105da611585565b6040516105e791906137ef565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190612fd3565b611617565b6040516106249190613b07565b60405180910390f35b34801561063957600080fd5b5061064261166d565b60405161064f9190613aec565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190613102565b611673565b005b34801561068d57600080fd5b506106a860048036038101906106a3919061317a565b6117f4565b005b6106c460048036038101906106bf9190613330565b611903565b005b3480156106d257600080fd5b506106db611c00565b6040516106e89190613ad1565b60405180910390f35b3480156106fd57600080fd5b5061071860048036038101906107139190613087565b611c14565b005b34801561072657600080fd5b50610741600480360381019061073c91906132de565b611c76565b005b34801561074f57600080fd5b5061076a60048036038101906107659190613222565b611d12565b005b34801561077857600080fd5b50610793600480360381019061078e9190613307565b611dab565b6040516107a091906137ef565b60405180910390f35b3480156107b557600080fd5b506107d060048036038101906107cb9190612ffc565b611e52565b6040516107dd91906137d4565b60405180910390f35b3480156107f257600080fd5b5061080d60048036038101906108089190612fd3565b611ee6565b005b34801561081b57600080fd5b50610824611fde565b60405161083191906137d4565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061090557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610915575061091482611ff1565b5b9050919050565b60606000805461092b90613eca565b80601f016020809104026020016040519081016040528092919081815260200182805461095790613eca565b80156109a45780601f10610979576101008083540402835291602001916109a4565b820191906000526020600020905b81548152906001019060200180831161098757829003601f168201915b5050505050905090565b60006109b98261205b565b6109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613991565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a3e8261108e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690613a11565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ace6120c7565b73ffffffffffffffffffffffffffffffffffffffff161480610afd5750610afc81610af76120c7565b611e52565b5b610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b33906138f1565b60405180910390fd5b610b4683836120cf565b505050565b600660149054906101000a900460ff16610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b91906138b1565b60405180910390fd5b600a60049054906101000a900460ff1660ff168160ff16111580610bc1575060018160ff16105b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613911565b60405180910390fd5b600a60009054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168360ff16610c369190613c44565b610c409190613d5d565b61ffff161115610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613a71565b60405180910390fd5b600a60029054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168360ff16610cbb9190613c44565b610cc59190613d5d565b61ffff161115610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190613a71565b60405180910390fd5b8060ff16600954610d1b9190613d03565b341015610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5490613a91565b60405180910390fd5b610d673382612188565b50565b600a60029054906101000a900461ffff1681565b610d866120c7565b73ffffffffffffffffffffffffffffffffffffffff16610da46114d5565b73ffffffffffffffffffffffffffffffffffffffff1614610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df1906139b1565b60405180910390fd5b80600660146101000a81548160ff02191690831515021790555050565b610e28610e226120c7565b82612210565b610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e90613a31565b60405180910390fd5b610e728383836122ee565b505050565b610e7f6120c7565b73ffffffffffffffffffffffffffffffffffffffff16610e9d6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea906139b1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f39573d6000803e3d6000fd5b50565b610f5783838360405180602001604052806000815250611c14565b505050565b610f646120c7565b73ffffffffffffffffffffffffffffffffffffffff16610f826114d5565b73ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906139b1565b60405180910390fd5b8060079080519060200190610fee929190612ca1565b5050565b610ffa6120c7565b73ffffffffffffffffffffffffffffffffffffffff166110186114d5565b73ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611065906139b1565b60405180910390fd5b80600a60026101000a81548161ffff021916908361ffff16021790555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90613951565b60405180910390fd5b80915050919050565b6111486120c7565b73ffffffffffffffffffffffffffffffffffffffff166111666114d5565b73ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b3906139b1565b60405180910390fd5b80600a60046101000a81548160ff021916908360ff16021790555050565b600660149054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590613931565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112ad6120c7565b73ffffffffffffffffffffffffffffffffffffffff166112cb6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611318906139b1565b60405180910390fd5b61132b600061254a565b565b6113356120c7565b73ffffffffffffffffffffffffffffffffffffffff166113536114d5565b73ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a0906139b1565b60405180910390fd5b60005b82518160ff1610156114a957818160ff16815181106113f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600b6000858460ff168151811061143c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555080806114a190613fa1565b9150506113ac565b505050565b600a60049054906101000a900460ff1681565b600a60009054906101000a900461ffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115076120c7565b73ffffffffffffffffffffffffffffffffffffffff166115256114d5565b73ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611572906139b1565b60405180910390fd5b8060098190555050565b60606001805461159490613eca565b80601f01602080910402602001604051908101604052809291908181526020018280546115c090613eca565b801561160d5780601f106115e25761010080835404028352916020019161160d565b820191906000526020600020905b8154815290600101906020018083116115f057829003601f168201915b5050505050905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b61167b6120c7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090613891565b60405180910390fd5b80600560006116f66120c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117a36120c7565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117e891906137d4565b60405180910390a35050565b6117fc6120c7565b73ffffffffffffffffffffffffffffffffffffffff1661181a6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867906139b1565b60405180910390fd5b600a60029054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168360ff166118a69190613c44565b6118b09190613d5d565b61ffff1611156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90613a71565b60405180910390fd5b6118ff8282612188565b5050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050600660159054906101000a900460ff166119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a90613a51565b60405180910390fd5b8060ff168260ff1611156119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e390613911565b60405180910390fd5b60008160ff1611611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2990613ab1565b60405180910390fd5b600a60009054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168460ff16611a689190613c44565b611a729190613d5d565b61ffff161115611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90613a71565b60405180910390fd5b600a60029054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168460ff16611aed9190613c44565b611af79190613d5d565b61ffff161115611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613a71565b60405180910390fd5b8160ff16600954611b4d9190613d03565b341015611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690613a91565b60405180910390fd5b8181611b9b9190613dc5565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550611bfc3383612188565b5050565b600860009054906101000a900461ffff1681565b611c25611c1f6120c7565b83612210565b611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b90613a31565b60405180910390fd5b611c7084848484612610565b50505050565b611c7e6120c7565b73ffffffffffffffffffffffffffffffffffffffff16611c9c6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce9906139b1565b60405180910390fd5b80600a60006101000a81548161ffff021916908361ffff16021790555050565b611d1a6120c7565b73ffffffffffffffffffffffffffffffffffffffff16611d386114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d85906139b1565b60405180910390fd5b80600660156101000a81548160ff02191690831515021790555050565b6060611db68261205b565b611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906139f1565b60405180910390fd5b6000611dff61266c565b90506000815111611e1f5760405180602001604052806000815250611e4a565b80611e29846126fe565b604051602001611e3a929190613749565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611eee6120c7565b73ffffffffffffffffffffffffffffffffffffffff16611f0c6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906139b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990613831565b60405180910390fd5b611fdb8161254a565b50565b600660159054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166121428361108e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60005b8160ff168160ff16101561220b576000600860009054906101000a900461ffff1690506121bc848261ffff166128ab565b6008600081819054906101000a900461ffff16809291906121dc90613f2d565b91906101000a81548161ffff021916908361ffff1602179055505050808061220390613fa1565b91505061218b565b505050565b600061221b8261205b565b61225a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612251906138d1565b60405180910390fd5b60006122658361108e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122d457508373ffffffffffffffffffffffffffffffffffffffff166122bc846109ae565b73ffffffffffffffffffffffffffffffffffffffff16145b806122e557506122e48185611e52565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661230e8261108e565b73ffffffffffffffffffffffffffffffffffffffff1614612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613871565b60405180910390fd5b6123df8383836128c9565b6123ea6000826120cf565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461243a9190613d91565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124919190613c7c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61261b8484846122ee565b612627848484846128ce565b612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613811565b60405180910390fd5b50505050565b60606007805461267b90613eca565b80601f01602080910402602001604051908101604052809291908181526020018280546126a790613eca565b80156126f45780601f106126c9576101008083540402835291602001916126f4565b820191906000526020600020905b8154815290600101906020018083116126d757829003601f168201915b5050505050905090565b60606000821415612746576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506128a6565b600082905060005b6000821461277857808061276190613f58565b915050600a826127719190613cd2565b915061274e565b60008167ffffffffffffffff8111156127ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156127ec5781602001600182028036833780820191505090505b5090505b6000851461289f576001826128059190613d91565b9150600a856128149190613fcb565b60306128209190613c7c565b60f81b81838151811061285c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856128989190613cd2565b94506127f0565b8093505050505b919050565b6128c5828260405180602001604052806000815250612a65565b5050565b505050565b60006128ef8473ffffffffffffffffffffffffffffffffffffffff16612ac0565b15612a58578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129186120c7565b8786866040518563ffffffff1660e01b815260040161293a9493929190613788565b602060405180830381600087803b15801561295457600080fd5b505af192505050801561298557506040513d601f19601f820116820180604052508101906129829190613274565b60015b612a08573d80600081146129b5576040519150601f19603f3d011682016040523d82523d6000602084013e6129ba565b606091505b50600081511415612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790613811565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a5d565b600190505b949350505050565b612a6f8383612ad3565b612a7c60008484846128ce565b612abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab290613811565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90613971565b60405180910390fd5b612b4c8161205b565b15612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8390613851565b60405180910390fd5b612b98600083836128c9565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612be89190613c7c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054612cad90613eca565b90600052602060002090601f016020900481019282612ccf5760008555612d16565b82601f10612ce857805160ff1916838001178555612d16565b82800160010185558215612d16579182015b82811115612d15578251825591602001919060010190612cfa565b5b509050612d239190612d27565b5090565b5b80821115612d40576000816000905550600101612d28565b5090565b6000612d57612d5284613b47565b613b22565b90508083825260208201905082856020860282011115612d7657600080fd5b60005b85811015612da65781612d8c8882612e98565b845260208401935060208301925050600181019050612d79565b5050509392505050565b6000612dc3612dbe84613b73565b613b22565b90508083825260208201905082856020860282011115612de257600080fd5b60005b85811015612e125781612df88882612fbe565b845260208401935060208301925050600181019050612de5565b5050509392505050565b6000612e2f612e2a84613b9f565b613b22565b905082815260208101848484011115612e4757600080fd5b612e52848285613e88565b509392505050565b6000612e6d612e6884613bd0565b613b22565b905082815260208101848484011115612e8557600080fd5b612e90848285613e88565b509392505050565b600081359050612ea78161463d565b92915050565b600082601f830112612ebe57600080fd5b8135612ece848260208601612d44565b91505092915050565b600082601f830112612ee857600080fd5b8135612ef8848260208601612db0565b91505092915050565b600081359050612f1081614654565b92915050565b600081359050612f258161466b565b92915050565b600081519050612f3a8161466b565b92915050565b600082601f830112612f5157600080fd5b8135612f61848260208601612e1c565b91505092915050565b600082601f830112612f7b57600080fd5b8135612f8b848260208601612e5a565b91505092915050565b600081359050612fa381614682565b92915050565b600081359050612fb881614699565b92915050565b600081359050612fcd816146b0565b92915050565b600060208284031215612fe557600080fd5b6000612ff384828501612e98565b91505092915050565b6000806040838503121561300f57600080fd5b600061301d85828601612e98565b925050602061302e85828601612e98565b9150509250929050565b60008060006060848603121561304d57600080fd5b600061305b86828701612e98565b935050602061306c86828701612e98565b925050604061307d86828701612fa9565b9150509250925092565b6000806000806080858703121561309d57600080fd5b60006130ab87828801612e98565b94505060206130bc87828801612e98565b93505060406130cd87828801612fa9565b925050606085013567ffffffffffffffff8111156130ea57600080fd5b6130f687828801612f40565b91505092959194509250565b6000806040838503121561311557600080fd5b600061312385828601612e98565b925050602061313485828601612f01565b9150509250929050565b6000806040838503121561315157600080fd5b600061315f85828601612e98565b925050602061317085828601612fa9565b9150509250929050565b6000806040838503121561318d57600080fd5b600061319b85828601612e98565b92505060206131ac85828601612fbe565b9150509250929050565b600080604083850312156131c957600080fd5b600083013567ffffffffffffffff8111156131e357600080fd5b6131ef85828601612ead565b925050602083013567ffffffffffffffff81111561320c57600080fd5b61321885828601612ed7565b9150509250929050565b60006020828403121561323457600080fd5b600061324284828501612f01565b91505092915050565b60006020828403121561325d57600080fd5b600061326b84828501612f16565b91505092915050565b60006020828403121561328657600080fd5b600061329484828501612f2b565b91505092915050565b6000602082840312156132af57600080fd5b600082013567ffffffffffffffff8111156132c957600080fd5b6132d584828501612f6a565b91505092915050565b6000602082840312156132f057600080fd5b60006132fe84828501612f94565b91505092915050565b60006020828403121561331957600080fd5b600061332784828501612fa9565b91505092915050565b60006020828403121561334257600080fd5b600061335084828501612fbe565b91505092915050565b61336281613df9565b82525050565b61337181613e0b565b82525050565b600061338282613c01565b61338c8185613c17565b935061339c818560208601613e97565b6133a5816140b8565b840191505092915050565b60006133bb82613c0c565b6133c58185613c28565b93506133d5818560208601613e97565b6133de816140b8565b840191505092915050565b60006133f482613c0c565b6133fe8185613c39565b935061340e818560208601613e97565b80840191505092915050565b6000613427603283613c28565b9150613432826140c9565b604082019050919050565b600061344a602683613c28565b915061345582614118565b604082019050919050565b600061346d601c83613c28565b915061347882614167565b602082019050919050565b6000613490602483613c28565b915061349b82614190565b604082019050919050565b60006134b3601983613c28565b91506134be826141df565b602082019050919050565b60006134d6601283613c28565b91506134e182614208565b602082019050919050565b60006134f9602c83613c28565b915061350482614231565b604082019050919050565b600061351c603883613c28565b915061352782614280565b604082019050919050565b600061353f602183613c28565b915061354a826142cf565b604082019050919050565b6000613562602a83613c28565b915061356d8261431e565b604082019050919050565b6000613585602983613c28565b91506135908261436d565b604082019050919050565b60006135a8602083613c28565b91506135b3826143bc565b602082019050919050565b60006135cb602c83613c28565b91506135d6826143e5565b604082019050919050565b60006135ee602083613c28565b91506135f982614434565b602082019050919050565b6000613611602983613c28565b915061361c8261445d565b604082019050919050565b6000613634602f83613c28565b915061363f826144ac565b604082019050919050565b6000613657602183613c28565b9150613662826144fb565b604082019050919050565b600061367a603183613c28565b91506136858261454a565b604082019050919050565b600061369d601583613c28565b91506136a882614599565b602082019050919050565b60006136c0600e83613c28565b91506136cb826145c2565b602082019050919050565b60006136e3600d83613c28565b91506136ee826145eb565b602082019050919050565b6000613706601b83613c28565b915061371182614614565b602082019050919050565b61372581613e43565b82525050565b61373481613e71565b82525050565b61374381613e7b565b82525050565b600061375582856133e9565b915061376182846133e9565b91508190509392505050565b60006020820190506137826000830184613359565b92915050565b600060808201905061379d6000830187613359565b6137aa6020830186613359565b6137b7604083018561372b565b81810360608301526137c98184613377565b905095945050505050565b60006020820190506137e96000830184613368565b92915050565b6000602082019050818103600083015261380981846133b0565b905092915050565b6000602082019050818103600083015261382a8161341a565b9050919050565b6000602082019050818103600083015261384a8161343d565b9050919050565b6000602082019050818103600083015261386a81613460565b9050919050565b6000602082019050818103600083015261388a81613483565b9050919050565b600060208201905081810360008301526138aa816134a6565b9050919050565b600060208201905081810360008301526138ca816134c9565b9050919050565b600060208201905081810360008301526138ea816134ec565b9050919050565b6000602082019050818103600083015261390a8161350f565b9050919050565b6000602082019050818103600083015261392a81613532565b9050919050565b6000602082019050818103600083015261394a81613555565b9050919050565b6000602082019050818103600083015261396a81613578565b9050919050565b6000602082019050818103600083015261398a8161359b565b9050919050565b600060208201905081810360008301526139aa816135be565b9050919050565b600060208201905081810360008301526139ca816135e1565b9050919050565b600060208201905081810360008301526139ea81613604565b9050919050565b60006020820190508181036000830152613a0a81613627565b9050919050565b60006020820190508181036000830152613a2a8161364a565b9050919050565b60006020820190508181036000830152613a4a8161366d565b9050919050565b60006020820190508181036000830152613a6a81613690565b9050919050565b60006020820190508181036000830152613a8a816136b3565b9050919050565b60006020820190508181036000830152613aaa816136d6565b9050919050565b60006020820190508181036000830152613aca816136f9565b9050919050565b6000602082019050613ae6600083018461371c565b92915050565b6000602082019050613b01600083018461372b565b92915050565b6000602082019050613b1c600083018461373a565b92915050565b6000613b2c613b3d565b9050613b388282613efc565b919050565b6000604051905090565b600067ffffffffffffffff821115613b6257613b61614089565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613b8e57613b8d614089565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613bba57613bb9614089565b5b613bc3826140b8565b9050602081019050919050565b600067ffffffffffffffff821115613beb57613bea614089565b5b613bf4826140b8565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613c4f82613e43565b9150613c5a83613e43565b92508261ffff03821115613c7157613c70613ffc565b5b828201905092915050565b6000613c8782613e71565b9150613c9283613e71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cc757613cc6613ffc565b5b828201905092915050565b6000613cdd82613e71565b9150613ce883613e71565b925082613cf857613cf761402b565b5b828204905092915050565b6000613d0e82613e71565b9150613d1983613e71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5257613d51613ffc565b5b828202905092915050565b6000613d6882613e43565b9150613d7383613e43565b925082821015613d8657613d85613ffc565b5b828203905092915050565b6000613d9c82613e71565b9150613da783613e71565b925082821015613dba57613db9613ffc565b5b828203905092915050565b6000613dd082613e7b565b9150613ddb83613e7b565b925082821015613dee57613ded613ffc565b5b828203905092915050565b6000613e0482613e51565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613eb5578082015181840152602081019050613e9a565b83811115613ec4576000848401525b50505050565b60006002820490506001821680613ee257607f821691505b60208210811415613ef657613ef561405a565b5b50919050565b613f05826140b8565b810181811067ffffffffffffffff82111715613f2457613f23614089565b5b80604052505050565b6000613f3882613e43565b915061ffff821415613f4d57613f4c613ffc565b5b600182019050919050565b6000613f6382613e71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f9657613f95613ffc565b5b600182019050919050565b6000613fac82613e7b565b915060ff821415613fc057613fbf613ffc565b5b600182019050919050565b6000613fd682613e71565b9150613fe183613e71565b925082613ff157613ff061402b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f596f752063616e206e6f7420627579206d6f7265207468616e20616c6c6f776560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f50726573616c65206973206e6f74206163746976650000000000000000000000600082015250565b7f4e6f206d6f726520737570706c79000000000000000000000000000000000000600082015250565b7f496e76616c696420707269636500000000000000000000000000000000000000600082015250565b7f596f752063616e206e6f74206d696e74206f6e2070726573616c650000000000600082015250565b61464681613df9565b811461465157600080fd5b50565b61465d81613e0b565b811461466857600080fd5b50565b61467481613e17565b811461467f57600080fd5b50565b61468b81613e43565b811461469657600080fd5b50565b6146a281613e71565b81146146ad57600080fd5b50565b6146b981613e7b565b81146146c457600080fd5b5056fea2646970667358221220163e2a048373824e26c94975c69caf063f53ecfc3787e0c8f8ea64e058d2a86764736f6c634300080400330000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000b1a2bc2ec500000000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000009526f636b20446f67730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000452444f4700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f6170692e726f636b646f67732e696f2f6d657461646174612f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000f09e84f6a7ddae4f182dd29c5e55d5ffe3dd62de00000000000000000000000003b36c53de0519f37bc4ef974935cc32948ad8ee000000000000000000000000904561f7ddb04d5a705237ccfc5f4c6042e58333000000000000000000000000c47b1081782c45408cfb9bdebe083daa0dd97502000000000000000000000000b5e6c65ecd9fee37dff13568f1ef6ce5757046df000000000000000000000000c36f2b015adf75f083f63bf5e30bff9a5ebea9120000000000000000000000000258be7ed2759f2940441096cb7c1614638f80c8000000000000000000000000ac65eb3bce56db551cb75639acccc4075647d24100000000000000000000000036881dca8f2dda8aad3edb2530e0d12675dd17bb000000000000000000000000a19df6f5108fed37e20531f2ae0764f1e75e9e8000000000000000000000000087854591e6be82dc660914cdab82ef9d738cdd260000000000000000000000002925892c7673ac345457863e45251096404749650000000000000000000000005013fccdb5fd0754fa071c5fbd24761b5ce1334d0000000000000000000000004cfe5f9cb00afcf81a614a9af72a3eedbe82b64200000000000000000000000045d2a6b380e3295ba8bfe1381e83f240d83eb20d000000000000000000000000e70c79107bb5938298dc703653da5e3c4e9f7beb000000000000000000000000d6a3c551399d40b9d30c570b05a65d2cdbb7cd690000000000000000000000003b18ac9e981116d80dad22e5451c693321256dde0000000000000000000000000fb2248b61be955675e7f96af8fdc2e4471f25a80000000000000000000000002a92195a610f21f8da1801ff9756aaa11319ef680000000000000000000000004be650c6d7acc79296f00351a4562102d26070860000000000000000000000002065fe9ed59441cf2b5ff50ffd9ead6567886384000000000000000000000000ea8bd01e563e083fcb3c0c62ba3d7d9ff032d2c50000000000000000000000006c2766b040bc34793d7256d965fb5112e1c208f40000000000000000000000008a6961e70f15c308b15dd84c9cc319da8fbb6fdd0000000000000000000000008b9d461c9bd341d5e93756efc46610e80003f7ea00000000000000000000000006cc21aeea76cebb12da254b6e982516662bbca40000000000000000000000002acc5684ba5563b3f7a1c2f8300af69c57278d07000000000000000000000000b5e6c65ecd9fee37dff13568f1ef6ce5757046df000000000000000000000000240a0cb9cde79088bd1bb3900d1cde4864b01f0000000000000000000000000032311ccef6c0441d26933071b1c066d65a649b5e00000000000000000000000015409fae9b4df50d4810840e31bd7d72f93daabc0000000000000000000000003ad6cddc687ea7b2a6fb650ebec14c6ad1c234e700000000000000000000000050f92a25c274b2f594f845fa025944902ca415ce0000000000000000000000003ef1bb56371ec3fdf9f374342636c42d88711861000000000000000000000000828dff2320e2fa3546bd1f012cc872f7e462073a000000000000000000000000cd1948839d244fb6cdf196894aa66488b1688555000000000000000000000000af4ac2f4c6787e81db915415eba3425b39fdf163000000000000000000000000e43f8fe97c86615e68d8c3a71c046759d25fbc47000000000000000000000000053f988e82f7c955f381be8011de1ac13e608d4c00000000000000000000000050f92a25c274b2f594f845fa025944902ca415ce00000000000000000000000027c69484a15b72ec4f7c6468095736c100f6afec000000000000000000000000efa316f2385adf441807d2b43111f9ca676d9827000000000000000000000000e896e26dc209f75846985273d0ad5402b0c183220000000000000000000000004dd6e4bf487dd0adfb3ea226a60bf1d5678553a00000000000000000000000004953044ed9890adb9b076baeafabf02d1ba41cb80000000000000000000000008dbfb1a7440e2f9e62f50b5c27ad980903563417000000000000000000000000f6a9b29acd34a8bf1ae48fe1525861486f853d75000000000000000000000000ab0b0dd7e4eab0f9e31a539074a03f1c1be80879000000000000000000000000ee6f4fdf1c3f7958aead949c1c3cc2d97d64eb51000000000000000000000000c53073f15d86d0c4a273c6bfd3652952a01a4dfc00000000000000000000000072e6c9378d57eff602cb46f782a88743ff0ce147000000000000000000000000783f10b988231c0b819b5d84c9c75273b9e964d20000000000000000000000007862969df22d647a13103cdf0724fdb21f818550000000000000000000000000eebc7af3c574a6e7eda8f07b4a35736721b4939200000000000000000000000043c1600f0d8be405079886c9c2cfe93fdb51a8950000000000000000000000009c47a5ec2783c8c6dd72e94a8562d23168c8a3130000000000000000000000009a3928278bc182610748a2573d3274cef7de101a00000000000000000000000099d93ca1df7250c5af38b3290a06596fbf69dae5000000000000000000000000ddf5afb04abb610d35d49531c79d532084f7148900000000000000000000000046e957fd8a4ac42b19faa4b691da0c038c0a153b0000000000000000000000008d29ba570c171a3c5cff0e3fd8261975685dd92f000000000000000000000000a1fa2c18aee1b200c5ccced400971a6354d564e90000000000000000000000006eb49672b26ac890219205debcc5f112188cb7010000000000000000000000002332402393226410e5852bd579564ad2605fa38f000000000000000000000000e8bafea5e68542631c2bf67e7874f7869a82984e0000000000000000000000008dcbc7c4799aa959df81c153c7d8eb457a53aa4700000000000000000000000067711d948086cfb429efe5ff59e76743ba600fa400000000000000000000000078d455025f8208f22d0a21ec68230298ee95304600000000000000000000000070271f2e451c14bd7e25cda898ffd4fba944f683000000000000000000000000ed4bda2dfb7465287ebc7946f0cf16055310eedc000000000000000000000000cae0aaf98dc12df1ab83599ae403a5c26aa58f9500000000000000000000000084996df1b1af7c626e9825cf4d42d3d1e4c00edb000000000000000000000000da59e024680e7e33110fa6666d2e524ad97cd01a00000000000000000000000095f36b225d79c2d16a769d5bbc2884e5cf46ce4a00000000000000000000000043265746c41d37d74d542dbb71a52830a9a1f4f80000000000000000000000002332402393226410e5852bd579564ad2605fa38f00000000000000000000000032de478af4bddb27e860f0b8192f19f0991d6267000000000000000000000000eb1a6246175b1d9a1abb8a80d08be98f98a10373000000000000000000000000132f73bd7ccd3583fd3bbceee00c752025e37c6f0000000000000000000000008ffbf4aaf0b6f5a93391dd874494cbf45ebcfe39000000000000000000000000d86f41ced6f932768985bddc2936e417c82f373a000000000000000000000000ede3881ec39b22239d3863a46b0afe895c893bcb000000000000000000000000577d19537895b9a160169af6dbefafc355b03e680000000000000000000000009a2d3ee21613f6acb6015c8bef70ec4ecb337956000000000000000000000000a860fa58e99ed6a6b1dd2851e97381838d18af7800000000000000000000000089f9bf88e52f7a325eb4195b5f6966b9750fbcd70000000000000000000000001fd29c8eee883023b6135c0b98c299b7310f4f9d00000000000000000000000085969b51161189c2d3257296ff86a61302d6917a000000000000000000000000df591be95cc40fddc0b74ab65d6293e685809402000000000000000000000000ea04a8cb783e1fdb0c031517a2a69d21c3cd37b10000000000000000000000002272032fc406e22b6b9ab972953933191d29227a0000000000000000000000001cfae8d9ea1a91b2095b1110b802e7a6d6ab8b8a0000000000000000000000000dc9824dc491780c39cad3d7d973c2bcdca013cb0000000000000000000000006dc7415b533d963657428860d019dd31774c3c46000000000000000000000000c9154f58133f89e8a294dc01aae61a80d82d71f7000000000000000000000000e236ea517fbba997cbeae155ed3f7ad40e70811900000000000000000000000026154fe0914ee31de594221b8125a0b6609f3605000000000000000000000000e8ca011d0d1355b003c25d0254c0de6f943a8a0f000000000000000000000000ddf5afb04abb610d35d49531c79d532084f7148900000000000000000000000007aaca4fa38105602f5a394730d98793398e086b0000000000000000000000002691993b36516f88755a3f26731182a54e46315c0000000000000000000000001b82e2ee66f98cc453a07c7ea232f4f6eeed2d9f0000000000000000000000000f4f6dc05bdbcccb815c90a3ef80910807069fbd00000000000000000000000048ed8265fcdb21c58f4888cfa8b09d2171166889000000000000000000000000a22020307368bd03dbb1813c0856ef074cec6684000000000000000000000000e26d3a2db6f9cc28c9eb5474cffc88bc5ec3c1dd0000000000000000000000000fb2248b61be955675e7f96af8fdc2e4471f25a8000000000000000000000000cea21ca907eb073bbf608af9ea69e482606e49cb000000000000000000000000bfb51c656109999754ecaf8d622494408875e35900000000000000000000000030efb67f07073baf266046aec4fcda46ad25b2080000000000000000000000005fc629632242726acd6760c6d5f182ef8e0619a9000000000000000000000000063034d3f1e5d5d8a0325f9927ff1a8d3cfe9aae000000000000000000000000b77b2cddd60cfd880583294c2f71bf128d55fa56000000000000000000000000ef6f97aa180a6bcf19cdbe9f7dc406f19c32fd5f000000000000000000000000c0708467b53d81037fcc3e07ba4ce66d255549e9000000000000000000000000ddf5afb04abb610d35d49531c79d532084f7148900000000000000000000000047b5f8906b494b5f0d38767dbc8d29c27a501eb00000000000000000000000006c4939c78f6c18b1ae8c91488e5308987e0617be000000000000000000000000de6f8cd16da03cea24d8e2ce46dcdcbf2b9cc7ef000000000000000000000000ede32c4b2a2400c679aac27259f3c7e6fe19cefe000000000000000000000000e236ea517fbba997cbeae155ed3f7ad40e70811900000000000000000000000033788065f57d6dcb61c8b62660046f577da438fb000000000000000000000000cb3537b868368967f821d7be6926b505e1bcbbc5000000000000000000000000320f8476ca3fa1252337f89e65d358ba1da1ca32000000000000000000000000f5ffed911303a449967cd8eba531271dab0afdf0000000000000000000000000593b17b90f57786e4f67b0fb62d6bafa29ef4e2000000000000000000000000021ebe4b94f05c9c1c46de911442adce83752ac77000000000000000000000000f9969fcd887115be49e640b0eccfbac8ae80de040000000000000000000000008976165f4e0ba6220b9b17a35aa92939d4343f44000000000000000000000000ecadf4c3e96c74cf180c82496ec3b8006aecbfed00000000000000000000000096227ed2549586c083a39800276e19ad18fecd430000000000000000000000002881bd94102dcb3b619f26cac95b4251cd620691000000000000000000000000667c29894b5bb2be88e493c8ced552cea489626a000000000000000000000000d0fe39bf91a20f55f8a9b782b52ac3754f77d0790000000000000000000000003b3640314b0fd7082a21a688fa730b1e5353a0060000000000000000000000003edb506e00713988162d2025aa9c60d5da7df74a000000000000000000000000408165179bb997241037b29e06ca24c9251a9f290000000000000000000000009245d62f04f47c281dcd089098388e7f153e558e000000000000000000000000481937b6fb95118efe0b1acf857af169f00d43de000000000000000000000000b7c55042eb6c9aeb346681d0a043c1176b029f8400000000000000000000000004355749c07254aba72a07796221585cfc8569d8000000000000000000000000c61b4c051b9ae5e5c2340c266a0c857f4ccd25ee000000000000000000000000bb05347b8136d5195710e43727aaf51f98ce5d350000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a

Deployed Bytecode

0x60806040526004361061020f5760003560e01c80637437681e11610118578063a63b94f5116100a0578063c54e73e31161006f578063c54e73e314610743578063c87b56dd1461076c578063e985e9c5146107a9578063f2fde38b146107e6578063fdea8e0b1461080f5761020f565b8063a63b94f5146106aa578063affed0e0146106c6578063b88d4fde146106f1578063c1408d791461071a5761020f565b806395d89b41116100e757806395d89b41146105c55780639dcd8cde146105f0578063a035b1fe1461062d578063a22cb46514610658578063a24ffbd4146106815761020f565b80637437681e1461051b5780638cb2923c146105465780638da5cb5b1461057157806391b7f5ed1461059c5761020f565b806342842e0e1161019b57806365f48e621161016a57806365f48e621461044a5780636ad1fe021461047357806370a082311461049e578063715018a6146104db57806373bfad87146104f25761020f565b806342842e0e1461039257806355f804b3146103bb578063562e438b146103e45780636352211e1461040d5761020f565b806314107f3c116101e257806314107f3c146102e257806318160ddd146102fe5780631d2e5a3a1461032957806323b872dd146103525780633ccfd60b1461037b5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b6004803603810190610236919061324b565b61083a565b60405161024891906137d4565b60405180910390f35b34801561025d57600080fd5b5061026661091c565b60405161027391906137ef565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613307565b6109ae565b6040516102b0919061376d565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db919061313e565b610a33565b005b6102fc60048036038101906102f79190613330565b610b4b565b005b34801561030a57600080fd5b50610313610d6a565b6040516103209190613ad1565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b9190613222565b610d7e565b005b34801561035e57600080fd5b5061037960048036038101906103749190613038565b610e17565b005b34801561038757600080fd5b50610390610e77565b005b34801561039e57600080fd5b506103b960048036038101906103b49190613038565b610f3c565b005b3480156103c757600080fd5b506103e260048036038101906103dd919061329d565b610f5c565b005b3480156103f057600080fd5b5061040b600480360381019061040691906132de565b610ff2565b005b34801561041957600080fd5b50610434600480360381019061042f9190613307565b61108e565b604051610441919061376d565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c9190613330565b611140565b005b34801561047f57600080fd5b506104886111da565b60405161049591906137d4565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612fd3565b6111ed565b6040516104d29190613aec565b60405180910390f35b3480156104e757600080fd5b506104f06112a5565b005b3480156104fe57600080fd5b50610519600480360381019061051491906131b6565b61132d565b005b34801561052757600080fd5b506105306114ae565b60405161053d9190613b07565b60405180910390f35b34801561055257600080fd5b5061055b6114c1565b6040516105689190613ad1565b60405180910390f35b34801561057d57600080fd5b506105866114d5565b604051610593919061376d565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be9190613307565b6114ff565b005b3480156105d157600080fd5b506105da611585565b6040516105e791906137ef565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190612fd3565b611617565b6040516106249190613b07565b60405180910390f35b34801561063957600080fd5b5061064261166d565b60405161064f9190613aec565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190613102565b611673565b005b34801561068d57600080fd5b506106a860048036038101906106a3919061317a565b6117f4565b005b6106c460048036038101906106bf9190613330565b611903565b005b3480156106d257600080fd5b506106db611c00565b6040516106e89190613ad1565b60405180910390f35b3480156106fd57600080fd5b5061071860048036038101906107139190613087565b611c14565b005b34801561072657600080fd5b50610741600480360381019061073c91906132de565b611c76565b005b34801561074f57600080fd5b5061076a60048036038101906107659190613222565b611d12565b005b34801561077857600080fd5b50610793600480360381019061078e9190613307565b611dab565b6040516107a091906137ef565b60405180910390f35b3480156107b557600080fd5b506107d060048036038101906107cb9190612ffc565b611e52565b6040516107dd91906137d4565b60405180910390f35b3480156107f257600080fd5b5061080d60048036038101906108089190612fd3565b611ee6565b005b34801561081b57600080fd5b50610824611fde565b60405161083191906137d4565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061090557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610915575061091482611ff1565b5b9050919050565b60606000805461092b90613eca565b80601f016020809104026020016040519081016040528092919081815260200182805461095790613eca565b80156109a45780601f10610979576101008083540402835291602001916109a4565b820191906000526020600020905b81548152906001019060200180831161098757829003601f168201915b5050505050905090565b60006109b98261205b565b6109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90613991565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a3e8261108e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690613a11565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ace6120c7565b73ffffffffffffffffffffffffffffffffffffffff161480610afd5750610afc81610af76120c7565b611e52565b5b610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b33906138f1565b60405180910390fd5b610b4683836120cf565b505050565b600660149054906101000a900460ff16610b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b91906138b1565b60405180910390fd5b600a60049054906101000a900460ff1660ff168160ff16111580610bc1575060018160ff16105b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613911565b60405180910390fd5b600a60009054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168360ff16610c369190613c44565b610c409190613d5d565b61ffff161115610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613a71565b60405180910390fd5b600a60029054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168360ff16610cbb9190613c44565b610cc59190613d5d565b61ffff161115610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190613a71565b60405180910390fd5b8060ff16600954610d1b9190613d03565b341015610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5490613a91565b60405180910390fd5b610d673382612188565b50565b600a60029054906101000a900461ffff1681565b610d866120c7565b73ffffffffffffffffffffffffffffffffffffffff16610da46114d5565b73ffffffffffffffffffffffffffffffffffffffff1614610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df1906139b1565b60405180910390fd5b80600660146101000a81548160ff02191690831515021790555050565b610e28610e226120c7565b82612210565b610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e90613a31565b60405180910390fd5b610e728383836122ee565b505050565b610e7f6120c7565b73ffffffffffffffffffffffffffffffffffffffff16610e9d6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea906139b1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f39573d6000803e3d6000fd5b50565b610f5783838360405180602001604052806000815250611c14565b505050565b610f646120c7565b73ffffffffffffffffffffffffffffffffffffffff16610f826114d5565b73ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906139b1565b60405180910390fd5b8060079080519060200190610fee929190612ca1565b5050565b610ffa6120c7565b73ffffffffffffffffffffffffffffffffffffffff166110186114d5565b73ffffffffffffffffffffffffffffffffffffffff161461106e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611065906139b1565b60405180910390fd5b80600a60026101000a81548161ffff021916908361ffff16021790555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90613951565b60405180910390fd5b80915050919050565b6111486120c7565b73ffffffffffffffffffffffffffffffffffffffff166111666114d5565b73ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b3906139b1565b60405180910390fd5b80600a60046101000a81548160ff021916908360ff16021790555050565b600660149054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590613931565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112ad6120c7565b73ffffffffffffffffffffffffffffffffffffffff166112cb6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611318906139b1565b60405180910390fd5b61132b600061254a565b565b6113356120c7565b73ffffffffffffffffffffffffffffffffffffffff166113536114d5565b73ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a0906139b1565b60405180910390fd5b60005b82518160ff1610156114a957818160ff16815181106113f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600b6000858460ff168151811061143c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555080806114a190613fa1565b9150506113ac565b505050565b600a60049054906101000a900460ff1681565b600a60009054906101000a900461ffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115076120c7565b73ffffffffffffffffffffffffffffffffffffffff166115256114d5565b73ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611572906139b1565b60405180910390fd5b8060098190555050565b60606001805461159490613eca565b80601f01602080910402602001604051908101604052809291908181526020018280546115c090613eca565b801561160d5780601f106115e25761010080835404028352916020019161160d565b820191906000526020600020905b8154815290600101906020018083116115f057829003601f168201915b5050505050905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b61167b6120c7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090613891565b60405180910390fd5b80600560006116f66120c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117a36120c7565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117e891906137d4565b60405180910390a35050565b6117fc6120c7565b73ffffffffffffffffffffffffffffffffffffffff1661181a6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611867906139b1565b60405180910390fd5b600a60029054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168360ff166118a69190613c44565b6118b09190613d5d565b61ffff1611156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90613a71565b60405180910390fd5b6118ff8282612188565b5050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050600660159054906101000a900460ff166119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a90613a51565b60405180910390fd5b8060ff168260ff1611156119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e390613911565b60405180910390fd5b60008160ff1611611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2990613ab1565b60405180910390fd5b600a60009054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168460ff16611a689190613c44565b611a729190613d5d565b61ffff161115611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90613a71565b60405180910390fd5b600a60029054906101000a900461ffff1661ffff166001600860009054906101000a900461ffff168460ff16611aed9190613c44565b611af79190613d5d565b61ffff161115611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613a71565b60405180910390fd5b8160ff16600954611b4d9190613d03565b341015611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690613a91565b60405180910390fd5b8181611b9b9190613dc5565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550611bfc3383612188565b5050565b600860009054906101000a900461ffff1681565b611c25611c1f6120c7565b83612210565b611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b90613a31565b60405180910390fd5b611c7084848484612610565b50505050565b611c7e6120c7565b73ffffffffffffffffffffffffffffffffffffffff16611c9c6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce9906139b1565b60405180910390fd5b80600a60006101000a81548161ffff021916908361ffff16021790555050565b611d1a6120c7565b73ffffffffffffffffffffffffffffffffffffffff16611d386114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d85906139b1565b60405180910390fd5b80600660156101000a81548160ff02191690831515021790555050565b6060611db68261205b565b611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906139f1565b60405180910390fd5b6000611dff61266c565b90506000815111611e1f5760405180602001604052806000815250611e4a565b80611e29846126fe565b604051602001611e3a929190613749565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611eee6120c7565b73ffffffffffffffffffffffffffffffffffffffff16611f0c6114d5565b73ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906139b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc990613831565b60405180910390fd5b611fdb8161254a565b50565b600660159054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166121428361108e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60005b8160ff168160ff16101561220b576000600860009054906101000a900461ffff1690506121bc848261ffff166128ab565b6008600081819054906101000a900461ffff16809291906121dc90613f2d565b91906101000a81548161ffff021916908361ffff1602179055505050808061220390613fa1565b91505061218b565b505050565b600061221b8261205b565b61225a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612251906138d1565b60405180910390fd5b60006122658361108e565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122d457508373ffffffffffffffffffffffffffffffffffffffff166122bc846109ae565b73ffffffffffffffffffffffffffffffffffffffff16145b806122e557506122e48185611e52565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661230e8261108e565b73ffffffffffffffffffffffffffffffffffffffff1614612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b906139d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613871565b60405180910390fd5b6123df8383836128c9565b6123ea6000826120cf565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461243a9190613d91565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124919190613c7c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61261b8484846122ee565b612627848484846128ce565b612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90613811565b60405180910390fd5b50505050565b60606007805461267b90613eca565b80601f01602080910402602001604051908101604052809291908181526020018280546126a790613eca565b80156126f45780601f106126c9576101008083540402835291602001916126f4565b820191906000526020600020905b8154815290600101906020018083116126d757829003601f168201915b5050505050905090565b60606000821415612746576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506128a6565b600082905060005b6000821461277857808061276190613f58565b915050600a826127719190613cd2565b915061274e565b60008167ffffffffffffffff8111156127ba577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156127ec5781602001600182028036833780820191505090505b5090505b6000851461289f576001826128059190613d91565b9150600a856128149190613fcb565b60306128209190613c7c565b60f81b81838151811061285c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856128989190613cd2565b94506127f0565b8093505050505b919050565b6128c5828260405180602001604052806000815250612a65565b5050565b505050565b60006128ef8473ffffffffffffffffffffffffffffffffffffffff16612ac0565b15612a58578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129186120c7565b8786866040518563ffffffff1660e01b815260040161293a9493929190613788565b602060405180830381600087803b15801561295457600080fd5b505af192505050801561298557506040513d601f19601f820116820180604052508101906129829190613274565b60015b612a08573d80600081146129b5576040519150601f19603f3d011682016040523d82523d6000602084013e6129ba565b606091505b50600081511415612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790613811565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612a5d565b600190505b949350505050565b612a6f8383612ad3565b612a7c60008484846128ce565b612abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab290613811565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90613971565b60405180910390fd5b612b4c8161205b565b15612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8390613851565b60405180910390fd5b612b98600083836128c9565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612be89190613c7c565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054612cad90613eca565b90600052602060002090601f016020900481019282612ccf5760008555612d16565b82601f10612ce857805160ff1916838001178555612d16565b82800160010185558215612d16579182015b82811115612d15578251825591602001919060010190612cfa565b5b509050612d239190612d27565b5090565b5b80821115612d40576000816000905550600101612d28565b5090565b6000612d57612d5284613b47565b613b22565b90508083825260208201905082856020860282011115612d7657600080fd5b60005b85811015612da65781612d8c8882612e98565b845260208401935060208301925050600181019050612d79565b5050509392505050565b6000612dc3612dbe84613b73565b613b22565b90508083825260208201905082856020860282011115612de257600080fd5b60005b85811015612e125781612df88882612fbe565b845260208401935060208301925050600181019050612de5565b5050509392505050565b6000612e2f612e2a84613b9f565b613b22565b905082815260208101848484011115612e4757600080fd5b612e52848285613e88565b509392505050565b6000612e6d612e6884613bd0565b613b22565b905082815260208101848484011115612e8557600080fd5b612e90848285613e88565b509392505050565b600081359050612ea78161463d565b92915050565b600082601f830112612ebe57600080fd5b8135612ece848260208601612d44565b91505092915050565b600082601f830112612ee857600080fd5b8135612ef8848260208601612db0565b91505092915050565b600081359050612f1081614654565b92915050565b600081359050612f258161466b565b92915050565b600081519050612f3a8161466b565b92915050565b600082601f830112612f5157600080fd5b8135612f61848260208601612e1c565b91505092915050565b600082601f830112612f7b57600080fd5b8135612f8b848260208601612e5a565b91505092915050565b600081359050612fa381614682565b92915050565b600081359050612fb881614699565b92915050565b600081359050612fcd816146b0565b92915050565b600060208284031215612fe557600080fd5b6000612ff384828501612e98565b91505092915050565b6000806040838503121561300f57600080fd5b600061301d85828601612e98565b925050602061302e85828601612e98565b9150509250929050565b60008060006060848603121561304d57600080fd5b600061305b86828701612e98565b935050602061306c86828701612e98565b925050604061307d86828701612fa9565b9150509250925092565b6000806000806080858703121561309d57600080fd5b60006130ab87828801612e98565b94505060206130bc87828801612e98565b93505060406130cd87828801612fa9565b925050606085013567ffffffffffffffff8111156130ea57600080fd5b6130f687828801612f40565b91505092959194509250565b6000806040838503121561311557600080fd5b600061312385828601612e98565b925050602061313485828601612f01565b9150509250929050565b6000806040838503121561315157600080fd5b600061315f85828601612e98565b925050602061317085828601612fa9565b9150509250929050565b6000806040838503121561318d57600080fd5b600061319b85828601612e98565b92505060206131ac85828601612fbe565b9150509250929050565b600080604083850312156131c957600080fd5b600083013567ffffffffffffffff8111156131e357600080fd5b6131ef85828601612ead565b925050602083013567ffffffffffffffff81111561320c57600080fd5b61321885828601612ed7565b9150509250929050565b60006020828403121561323457600080fd5b600061324284828501612f01565b91505092915050565b60006020828403121561325d57600080fd5b600061326b84828501612f16565b91505092915050565b60006020828403121561328657600080fd5b600061329484828501612f2b565b91505092915050565b6000602082840312156132af57600080fd5b600082013567ffffffffffffffff8111156132c957600080fd5b6132d584828501612f6a565b91505092915050565b6000602082840312156132f057600080fd5b60006132fe84828501612f94565b91505092915050565b60006020828403121561331957600080fd5b600061332784828501612fa9565b91505092915050565b60006020828403121561334257600080fd5b600061335084828501612fbe565b91505092915050565b61336281613df9565b82525050565b61337181613e0b565b82525050565b600061338282613c01565b61338c8185613c17565b935061339c818560208601613e97565b6133a5816140b8565b840191505092915050565b60006133bb82613c0c565b6133c58185613c28565b93506133d5818560208601613e97565b6133de816140b8565b840191505092915050565b60006133f482613c0c565b6133fe8185613c39565b935061340e818560208601613e97565b80840191505092915050565b6000613427603283613c28565b9150613432826140c9565b604082019050919050565b600061344a602683613c28565b915061345582614118565b604082019050919050565b600061346d601c83613c28565b915061347882614167565b602082019050919050565b6000613490602483613c28565b915061349b82614190565b604082019050919050565b60006134b3601983613c28565b91506134be826141df565b602082019050919050565b60006134d6601283613c28565b91506134e182614208565b602082019050919050565b60006134f9602c83613c28565b915061350482614231565b604082019050919050565b600061351c603883613c28565b915061352782614280565b604082019050919050565b600061353f602183613c28565b915061354a826142cf565b604082019050919050565b6000613562602a83613c28565b915061356d8261431e565b604082019050919050565b6000613585602983613c28565b91506135908261436d565b604082019050919050565b60006135a8602083613c28565b91506135b3826143bc565b602082019050919050565b60006135cb602c83613c28565b91506135d6826143e5565b604082019050919050565b60006135ee602083613c28565b91506135f982614434565b602082019050919050565b6000613611602983613c28565b915061361c8261445d565b604082019050919050565b6000613634602f83613c28565b915061363f826144ac565b604082019050919050565b6000613657602183613c28565b9150613662826144fb565b604082019050919050565b600061367a603183613c28565b91506136858261454a565b604082019050919050565b600061369d601583613c28565b91506136a882614599565b602082019050919050565b60006136c0600e83613c28565b91506136cb826145c2565b602082019050919050565b60006136e3600d83613c28565b91506136ee826145eb565b602082019050919050565b6000613706601b83613c28565b915061371182614614565b602082019050919050565b61372581613e43565b82525050565b61373481613e71565b82525050565b61374381613e7b565b82525050565b600061375582856133e9565b915061376182846133e9565b91508190509392505050565b60006020820190506137826000830184613359565b92915050565b600060808201905061379d6000830187613359565b6137aa6020830186613359565b6137b7604083018561372b565b81810360608301526137c98184613377565b905095945050505050565b60006020820190506137e96000830184613368565b92915050565b6000602082019050818103600083015261380981846133b0565b905092915050565b6000602082019050818103600083015261382a8161341a565b9050919050565b6000602082019050818103600083015261384a8161343d565b9050919050565b6000602082019050818103600083015261386a81613460565b9050919050565b6000602082019050818103600083015261388a81613483565b9050919050565b600060208201905081810360008301526138aa816134a6565b9050919050565b600060208201905081810360008301526138ca816134c9565b9050919050565b600060208201905081810360008301526138ea816134ec565b9050919050565b6000602082019050818103600083015261390a8161350f565b9050919050565b6000602082019050818103600083015261392a81613532565b9050919050565b6000602082019050818103600083015261394a81613555565b9050919050565b6000602082019050818103600083015261396a81613578565b9050919050565b6000602082019050818103600083015261398a8161359b565b9050919050565b600060208201905081810360008301526139aa816135be565b9050919050565b600060208201905081810360008301526139ca816135e1565b9050919050565b600060208201905081810360008301526139ea81613604565b9050919050565b60006020820190508181036000830152613a0a81613627565b9050919050565b60006020820190508181036000830152613a2a8161364a565b9050919050565b60006020820190508181036000830152613a4a8161366d565b9050919050565b60006020820190508181036000830152613a6a81613690565b9050919050565b60006020820190508181036000830152613a8a816136b3565b9050919050565b60006020820190508181036000830152613aaa816136d6565b9050919050565b60006020820190508181036000830152613aca816136f9565b9050919050565b6000602082019050613ae6600083018461371c565b92915050565b6000602082019050613b01600083018461372b565b92915050565b6000602082019050613b1c600083018461373a565b92915050565b6000613b2c613b3d565b9050613b388282613efc565b919050565b6000604051905090565b600067ffffffffffffffff821115613b6257613b61614089565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613b8e57613b8d614089565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613bba57613bb9614089565b5b613bc3826140b8565b9050602081019050919050565b600067ffffffffffffffff821115613beb57613bea614089565b5b613bf4826140b8565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613c4f82613e43565b9150613c5a83613e43565b92508261ffff03821115613c7157613c70613ffc565b5b828201905092915050565b6000613c8782613e71565b9150613c9283613e71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cc757613cc6613ffc565b5b828201905092915050565b6000613cdd82613e71565b9150613ce883613e71565b925082613cf857613cf761402b565b5b828204905092915050565b6000613d0e82613e71565b9150613d1983613e71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5257613d51613ffc565b5b828202905092915050565b6000613d6882613e43565b9150613d7383613e43565b925082821015613d8657613d85613ffc565b5b828203905092915050565b6000613d9c82613e71565b9150613da783613e71565b925082821015613dba57613db9613ffc565b5b828203905092915050565b6000613dd082613e7b565b9150613ddb83613e7b565b925082821015613dee57613ded613ffc565b5b828203905092915050565b6000613e0482613e51565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613eb5578082015181840152602081019050613e9a565b83811115613ec4576000848401525b50505050565b60006002820490506001821680613ee257607f821691505b60208210811415613ef657613ef561405a565b5b50919050565b613f05826140b8565b810181811067ffffffffffffffff82111715613f2457613f23614089565b5b80604052505050565b6000613f3882613e43565b915061ffff821415613f4d57613f4c613ffc565b5b600182019050919050565b6000613f6382613e71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f9657613f95613ffc565b5b600182019050919050565b6000613fac82613e7b565b915060ff821415613fc057613fbf613ffc565b5b600182019050919050565b6000613fd682613e71565b9150613fe183613e71565b925082613ff157613ff061402b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f596f752063616e206e6f7420627579206d6f7265207468616e20616c6c6f776560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f50726573616c65206973206e6f74206163746976650000000000000000000000600082015250565b7f4e6f206d6f726520737570706c79000000000000000000000000000000000000600082015250565b7f496e76616c696420707269636500000000000000000000000000000000000000600082015250565b7f596f752063616e206e6f74206d696e74206f6e2070726573616c650000000000600082015250565b61464681613df9565b811461465157600080fd5b50565b61465d81613e0b565b811461466857600080fd5b50565b61467481613e17565b811461467f57600080fd5b50565b61468b81613e43565b811461469657600080fd5b50565b6146a281613e71565b81146146ad57600080fd5b50565b6146b981613e7b565b81146146c457600080fd5b5056fea2646970667358221220163e2a048373824e26c94975c69caf063f53ecfc3787e0c8f8ea64e058d2a86764736f6c63430008040033

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

0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000b1a2bc2ec500000000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000009526f636b20446f67730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000452444f4700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f6170692e726f636b646f67732e696f2f6d657461646174612f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000f09e84f6a7ddae4f182dd29c5e55d5ffe3dd62de00000000000000000000000003b36c53de0519f37bc4ef974935cc32948ad8ee000000000000000000000000904561f7ddb04d5a705237ccfc5f4c6042e58333000000000000000000000000c47b1081782c45408cfb9bdebe083daa0dd97502000000000000000000000000b5e6c65ecd9fee37dff13568f1ef6ce5757046df000000000000000000000000c36f2b015adf75f083f63bf5e30bff9a5ebea9120000000000000000000000000258be7ed2759f2940441096cb7c1614638f80c8000000000000000000000000ac65eb3bce56db551cb75639acccc4075647d24100000000000000000000000036881dca8f2dda8aad3edb2530e0d12675dd17bb000000000000000000000000a19df6f5108fed37e20531f2ae0764f1e75e9e8000000000000000000000000087854591e6be82dc660914cdab82ef9d738cdd260000000000000000000000002925892c7673ac345457863e45251096404749650000000000000000000000005013fccdb5fd0754fa071c5fbd24761b5ce1334d0000000000000000000000004cfe5f9cb00afcf81a614a9af72a3eedbe82b64200000000000000000000000045d2a6b380e3295ba8bfe1381e83f240d83eb20d000000000000000000000000e70c79107bb5938298dc703653da5e3c4e9f7beb000000000000000000000000d6a3c551399d40b9d30c570b05a65d2cdbb7cd690000000000000000000000003b18ac9e981116d80dad22e5451c693321256dde0000000000000000000000000fb2248b61be955675e7f96af8fdc2e4471f25a80000000000000000000000002a92195a610f21f8da1801ff9756aaa11319ef680000000000000000000000004be650c6d7acc79296f00351a4562102d26070860000000000000000000000002065fe9ed59441cf2b5ff50ffd9ead6567886384000000000000000000000000ea8bd01e563e083fcb3c0c62ba3d7d9ff032d2c50000000000000000000000006c2766b040bc34793d7256d965fb5112e1c208f40000000000000000000000008a6961e70f15c308b15dd84c9cc319da8fbb6fdd0000000000000000000000008b9d461c9bd341d5e93756efc46610e80003f7ea00000000000000000000000006cc21aeea76cebb12da254b6e982516662bbca40000000000000000000000002acc5684ba5563b3f7a1c2f8300af69c57278d07000000000000000000000000b5e6c65ecd9fee37dff13568f1ef6ce5757046df000000000000000000000000240a0cb9cde79088bd1bb3900d1cde4864b01f0000000000000000000000000032311ccef6c0441d26933071b1c066d65a649b5e00000000000000000000000015409fae9b4df50d4810840e31bd7d72f93daabc0000000000000000000000003ad6cddc687ea7b2a6fb650ebec14c6ad1c234e700000000000000000000000050f92a25c274b2f594f845fa025944902ca415ce0000000000000000000000003ef1bb56371ec3fdf9f374342636c42d88711861000000000000000000000000828dff2320e2fa3546bd1f012cc872f7e462073a000000000000000000000000cd1948839d244fb6cdf196894aa66488b1688555000000000000000000000000af4ac2f4c6787e81db915415eba3425b39fdf163000000000000000000000000e43f8fe97c86615e68d8c3a71c046759d25fbc47000000000000000000000000053f988e82f7c955f381be8011de1ac13e608d4c00000000000000000000000050f92a25c274b2f594f845fa025944902ca415ce00000000000000000000000027c69484a15b72ec4f7c6468095736c100f6afec000000000000000000000000efa316f2385adf441807d2b43111f9ca676d9827000000000000000000000000e896e26dc209f75846985273d0ad5402b0c183220000000000000000000000004dd6e4bf487dd0adfb3ea226a60bf1d5678553a00000000000000000000000004953044ed9890adb9b076baeafabf02d1ba41cb80000000000000000000000008dbfb1a7440e2f9e62f50b5c27ad980903563417000000000000000000000000f6a9b29acd34a8bf1ae48fe1525861486f853d75000000000000000000000000ab0b0dd7e4eab0f9e31a539074a03f1c1be80879000000000000000000000000ee6f4fdf1c3f7958aead949c1c3cc2d97d64eb51000000000000000000000000c53073f15d86d0c4a273c6bfd3652952a01a4dfc00000000000000000000000072e6c9378d57eff602cb46f782a88743ff0ce147000000000000000000000000783f10b988231c0b819b5d84c9c75273b9e964d20000000000000000000000007862969df22d647a13103cdf0724fdb21f818550000000000000000000000000eebc7af3c574a6e7eda8f07b4a35736721b4939200000000000000000000000043c1600f0d8be405079886c9c2cfe93fdb51a8950000000000000000000000009c47a5ec2783c8c6dd72e94a8562d23168c8a3130000000000000000000000009a3928278bc182610748a2573d3274cef7de101a00000000000000000000000099d93ca1df7250c5af38b3290a06596fbf69dae5000000000000000000000000ddf5afb04abb610d35d49531c79d532084f7148900000000000000000000000046e957fd8a4ac42b19faa4b691da0c038c0a153b0000000000000000000000008d29ba570c171a3c5cff0e3fd8261975685dd92f000000000000000000000000a1fa2c18aee1b200c5ccced400971a6354d564e90000000000000000000000006eb49672b26ac890219205debcc5f112188cb7010000000000000000000000002332402393226410e5852bd579564ad2605fa38f000000000000000000000000e8bafea5e68542631c2bf67e7874f7869a82984e0000000000000000000000008dcbc7c4799aa959df81c153c7d8eb457a53aa4700000000000000000000000067711d948086cfb429efe5ff59e76743ba600fa400000000000000000000000078d455025f8208f22d0a21ec68230298ee95304600000000000000000000000070271f2e451c14bd7e25cda898ffd4fba944f683000000000000000000000000ed4bda2dfb7465287ebc7946f0cf16055310eedc000000000000000000000000cae0aaf98dc12df1ab83599ae403a5c26aa58f9500000000000000000000000084996df1b1af7c626e9825cf4d42d3d1e4c00edb000000000000000000000000da59e024680e7e33110fa6666d2e524ad97cd01a00000000000000000000000095f36b225d79c2d16a769d5bbc2884e5cf46ce4a00000000000000000000000043265746c41d37d74d542dbb71a52830a9a1f4f80000000000000000000000002332402393226410e5852bd579564ad2605fa38f00000000000000000000000032de478af4bddb27e860f0b8192f19f0991d6267000000000000000000000000eb1a6246175b1d9a1abb8a80d08be98f98a10373000000000000000000000000132f73bd7ccd3583fd3bbceee00c752025e37c6f0000000000000000000000008ffbf4aaf0b6f5a93391dd874494cbf45ebcfe39000000000000000000000000d86f41ced6f932768985bddc2936e417c82f373a000000000000000000000000ede3881ec39b22239d3863a46b0afe895c893bcb000000000000000000000000577d19537895b9a160169af6dbefafc355b03e680000000000000000000000009a2d3ee21613f6acb6015c8bef70ec4ecb337956000000000000000000000000a860fa58e99ed6a6b1dd2851e97381838d18af7800000000000000000000000089f9bf88e52f7a325eb4195b5f6966b9750fbcd70000000000000000000000001fd29c8eee883023b6135c0b98c299b7310f4f9d00000000000000000000000085969b51161189c2d3257296ff86a61302d6917a000000000000000000000000df591be95cc40fddc0b74ab65d6293e685809402000000000000000000000000ea04a8cb783e1fdb0c031517a2a69d21c3cd37b10000000000000000000000002272032fc406e22b6b9ab972953933191d29227a0000000000000000000000001cfae8d9ea1a91b2095b1110b802e7a6d6ab8b8a0000000000000000000000000dc9824dc491780c39cad3d7d973c2bcdca013cb0000000000000000000000006dc7415b533d963657428860d019dd31774c3c46000000000000000000000000c9154f58133f89e8a294dc01aae61a80d82d71f7000000000000000000000000e236ea517fbba997cbeae155ed3f7ad40e70811900000000000000000000000026154fe0914ee31de594221b8125a0b6609f3605000000000000000000000000e8ca011d0d1355b003c25d0254c0de6f943a8a0f000000000000000000000000ddf5afb04abb610d35d49531c79d532084f7148900000000000000000000000007aaca4fa38105602f5a394730d98793398e086b0000000000000000000000002691993b36516f88755a3f26731182a54e46315c0000000000000000000000001b82e2ee66f98cc453a07c7ea232f4f6eeed2d9f0000000000000000000000000f4f6dc05bdbcccb815c90a3ef80910807069fbd00000000000000000000000048ed8265fcdb21c58f4888cfa8b09d2171166889000000000000000000000000a22020307368bd03dbb1813c0856ef074cec6684000000000000000000000000e26d3a2db6f9cc28c9eb5474cffc88bc5ec3c1dd0000000000000000000000000fb2248b61be955675e7f96af8fdc2e4471f25a8000000000000000000000000cea21ca907eb073bbf608af9ea69e482606e49cb000000000000000000000000bfb51c656109999754ecaf8d622494408875e35900000000000000000000000030efb67f07073baf266046aec4fcda46ad25b2080000000000000000000000005fc629632242726acd6760c6d5f182ef8e0619a9000000000000000000000000063034d3f1e5d5d8a0325f9927ff1a8d3cfe9aae000000000000000000000000b77b2cddd60cfd880583294c2f71bf128d55fa56000000000000000000000000ef6f97aa180a6bcf19cdbe9f7dc406f19c32fd5f000000000000000000000000c0708467b53d81037fcc3e07ba4ce66d255549e9000000000000000000000000ddf5afb04abb610d35d49531c79d532084f7148900000000000000000000000047b5f8906b494b5f0d38767dbc8d29c27a501eb00000000000000000000000006c4939c78f6c18b1ae8c91488e5308987e0617be000000000000000000000000de6f8cd16da03cea24d8e2ce46dcdcbf2b9cc7ef000000000000000000000000ede32c4b2a2400c679aac27259f3c7e6fe19cefe000000000000000000000000e236ea517fbba997cbeae155ed3f7ad40e70811900000000000000000000000033788065f57d6dcb61c8b62660046f577da438fb000000000000000000000000cb3537b868368967f821d7be6926b505e1bcbbc5000000000000000000000000320f8476ca3fa1252337f89e65d358ba1da1ca32000000000000000000000000f5ffed911303a449967cd8eba531271dab0afdf0000000000000000000000000593b17b90f57786e4f67b0fb62d6bafa29ef4e2000000000000000000000000021ebe4b94f05c9c1c46de911442adce83752ac77000000000000000000000000f9969fcd887115be49e640b0eccfbac8ae80de040000000000000000000000008976165f4e0ba6220b9b17a35aa92939d4343f44000000000000000000000000ecadf4c3e96c74cf180c82496ec3b8006aecbfed00000000000000000000000096227ed2549586c083a39800276e19ad18fecd430000000000000000000000002881bd94102dcb3b619f26cac95b4251cd620691000000000000000000000000667c29894b5bb2be88e493c8ced552cea489626a000000000000000000000000d0fe39bf91a20f55f8a9b782b52ac3754f77d0790000000000000000000000003b3640314b0fd7082a21a688fa730b1e5353a0060000000000000000000000003edb506e00713988162d2025aa9c60d5da7df74a000000000000000000000000408165179bb997241037b29e06ca24c9251a9f290000000000000000000000009245d62f04f47c281dcd089098388e7f153e558e000000000000000000000000481937b6fb95118efe0b1acf857af169f00d43de000000000000000000000000b7c55042eb6c9aeb346681d0a043c1176b029f8400000000000000000000000004355749c07254aba72a07796221585cfc8569d8000000000000000000000000c61b4c051b9ae5e5c2340c266a0c857f4ccd25ee000000000000000000000000bb05347b8136d5195710e43727aaf51f98ce5d350000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a

-----Decoded View---------------
Arg [0] : _name (string): Rock Dogs
Arg [1] : _ticker (string): RDOG
Arg [2] : _price (uint256): 50000000000000000
Arg [3] : _totalSupply (uint16): 10000
Arg [4] : _maxTx (uint8): 10
Arg [5] : baseURI_ (string): https://api.rockdogs.io/metadata/
Arg [6] : _presaleWallets (address[]): 0xF09e84f6a7ddAE4f182dD29C5E55d5Ffe3dD62dE,0x03B36c53de0519F37bc4Ef974935cC32948Ad8ee,0x904561F7DdB04d5a705237CCfc5F4C6042E58333,0xC47b1081782c45408cfB9BDEBE083daA0dd97502,0xb5E6c65EcD9FEE37dfF13568f1Ef6Ce5757046DF,0xc36f2B015ADF75f083F63bf5E30bfF9a5EBea912,0x0258be7eD2759F2940441096cB7C1614638F80C8,0xAC65eb3BCE56Db551cB75639aCCcC4075647d241,0x36881Dca8F2DDa8AAd3edb2530E0d12675Dd17BB,0xa19dF6F5108Fed37e20531F2aE0764f1E75e9E80,0x87854591e6be82dC660914CdaB82eF9d738Cdd26,0x2925892C7673ac345457863E4525109640474965,0x5013fcCDB5fd0754Fa071c5FbD24761b5cE1334D,0x4CFE5f9cb00AfCF81a614a9AF72A3EedBe82b642,0x45D2A6b380e3295Ba8BFE1381e83F240d83eb20D,0xe70c79107bB5938298dc703653DA5E3c4E9F7BEb,0xD6A3C551399D40B9D30c570B05a65D2CDBb7Cd69,0x3b18Ac9e981116D80DAD22e5451c693321256ddE,0x0fB2248B61BE955675E7f96af8fDc2E4471f25A8,0x2A92195A610f21f8DA1801Ff9756Aaa11319Ef68,0x4be650c6d7Acc79296f00351a4562102D2607086,0x2065fe9eD59441CF2b5fF50FfD9EAD6567886384,0xEA8bd01E563E083fCB3C0c62ba3d7D9ff032D2c5,0x6C2766b040Bc34793d7256D965FB5112E1C208f4,0x8A6961E70f15c308b15Dd84C9CC319dA8FBb6Fdd,0x8B9d461C9BD341d5e93756eFc46610E80003f7EA,0x06CC21AeEa76cebB12Da254B6E982516662BbCa4,0x2ACC5684Ba5563B3F7a1c2F8300af69c57278d07,0xb5E6c65EcD9FEE37dfF13568f1Ef6Ce5757046DF,0x240A0CB9cdE79088bD1Bb3900d1cDE4864B01f00,0x32311CCeF6c0441d26933071b1c066d65A649b5E,0x15409fAE9b4df50d4810840E31bD7D72f93DAaBc,0x3Ad6CDdC687eA7b2a6fb650EbEc14C6AD1c234E7,0x50F92a25C274b2f594f845fA025944902Ca415Ce,0x3eF1bB56371Ec3fDF9f374342636c42D88711861,0x828DfF2320e2FA3546bD1F012cc872f7E462073A,0xCd1948839D244FB6cdF196894aA66488B1688555,0xAf4Ac2F4c6787e81dB915415EBa3425B39fdf163,0xe43F8Fe97c86615e68D8C3a71C046759d25FBc47,0x053F988e82f7c955F381BE8011de1AC13E608D4c,0x50F92a25C274b2f594f845fA025944902Ca415Ce,0x27c69484A15B72ec4F7C6468095736c100f6AfEc,0xEfa316F2385aDF441807d2b43111f9ca676D9827,0xe896e26DC209f75846985273D0AD5402b0C18322,0x4dD6e4bF487Dd0AdFb3Ea226a60BF1D5678553A0,0x4953044eD9890ADB9b076BaeaFAbF02D1ba41cB8,0x8dBfb1a7440E2f9e62f50B5C27Ad980903563417,0xF6a9b29Acd34a8Bf1aE48fe1525861486f853D75,0xab0b0dD7e4EaB0F9e31a539074a03f1C1Be80879,0xEE6F4fdf1c3f7958aeAD949C1C3CC2d97D64EB51,0xC53073F15d86D0c4a273c6bfD3652952a01A4dfC,0x72E6c9378d57eFF602CB46f782A88743fF0CE147,0x783F10b988231c0B819b5D84c9C75273b9E964D2,0x7862969df22D647a13103CdF0724FdB21F818550,0xeEBc7aF3C574a6E7EdA8F07B4a35736721B49392,0x43c1600f0D8bE405079886c9c2CFe93FdB51A895,0x9C47A5EC2783C8C6Dd72e94A8562d23168C8A313,0x9a3928278bc182610748a2573d3274CeF7dE101A,0x99d93Ca1df7250C5af38b3290A06596fBF69dae5,0xDdf5Afb04abB610D35D49531C79D532084f71489,0x46e957fD8a4aC42b19fAa4B691dA0C038c0a153b,0x8D29ba570C171A3c5cff0E3fd8261975685dD92f,0xA1Fa2c18aeE1b200c5ccCEd400971A6354d564E9,0x6eb49672B26AC890219205dEBCc5f112188cB701,0x2332402393226410E5852Bd579564aD2605FA38F,0xe8baFEa5e68542631C2BF67E7874f7869A82984E,0x8DCbC7c4799AA959df81c153C7D8Eb457a53aa47,0x67711D948086Cfb429EfE5FF59E76743bA600fa4,0x78d455025F8208F22d0A21eC68230298ee953046,0x70271F2E451C14bD7E25CDA898Ffd4Fba944f683,0xED4BDa2dFB7465287EBC7946f0CF16055310EEDC,0xcaE0Aaf98dc12DF1aB83599aE403a5C26AA58f95,0x84996Df1B1af7c626E9825cF4d42D3D1e4C00Edb,0xdA59E024680E7E33110fA6666d2E524ad97CD01a,0x95f36B225D79C2d16A769D5bbC2884e5cf46ce4A,0x43265746c41d37d74D542Dbb71a52830a9a1F4f8,0x2332402393226410E5852Bd579564aD2605FA38F,0x32dE478aF4BDDB27e860f0b8192f19f0991D6267,0xeb1A6246175b1d9a1aBB8a80d08BE98F98a10373,0x132f73bD7CCd3583fd3BbceeE00C752025e37C6F,0x8fFBf4aAf0b6F5a93391Dd874494CBf45EbcFe39,0xD86F41CED6f932768985BDDc2936e417c82f373a,0xeDe3881ec39B22239d3863a46B0AFE895c893Bcb,0x577D19537895b9a160169af6DbeFaFc355B03e68,0x9A2d3ee21613f6aCb6015c8BeF70ec4ECb337956,0xa860fA58e99Ed6a6b1dD2851E97381838d18AF78,0x89F9BF88E52F7A325Eb4195B5F6966B9750FBCD7,0x1FD29c8Eee883023b6135c0b98C299B7310f4f9D,0x85969B51161189c2D3257296Ff86a61302d6917A,0xdf591bE95cc40FddC0B74aB65D6293E685809402,0xea04a8cb783e1FdB0C031517A2a69D21c3cd37B1,0x2272032fc406E22B6b9Ab972953933191D29227a,0x1CfAE8D9eA1a91b2095b1110B802e7a6D6ab8B8A,0x0dc9824dC491780c39caD3d7d973C2bCdCa013Cb,0x6DC7415b533D963657428860D019DD31774c3C46,0xc9154F58133F89E8a294DC01AaE61A80d82d71f7,0xe236Ea517fBbA997CBeaE155eD3F7aD40E708119,0x26154Fe0914ee31De594221b8125A0b6609f3605,0xE8cA011d0D1355B003c25d0254C0de6F943a8a0F,0xDdf5Afb04abB610D35D49531C79D532084f71489,0x07aaCa4Fa38105602F5A394730D98793398E086b,0x2691993b36516F88755a3f26731182A54e46315c,0x1B82e2EE66F98cC453a07C7EA232f4F6eEeD2D9f,0x0f4f6dc05BdBCcCB815c90A3Ef80910807069fBD,0x48ED8265fcDb21c58f4888CFA8B09D2171166889,0xA22020307368Bd03dbb1813c0856Ef074ceC6684,0xe26d3a2Db6f9cc28c9EB5474cffc88bC5ec3C1dD,0x0fB2248B61BE955675E7f96af8fDc2E4471f25A8,0xcEA21Ca907Eb073BbF608Af9Ea69e482606e49cB,0xBFb51c656109999754ecAf8D622494408875E359,0x30EFb67F07073bAF266046AEc4fcDa46AD25B208,0x5FC629632242726aCD6760C6D5f182ef8e0619A9,0x063034D3f1E5d5D8a0325F9927FF1A8d3cFE9aaE,0xb77b2cddd60CFd880583294c2f71bf128d55Fa56,0xEf6F97aa180a6BcF19cDbe9F7dc406F19C32fD5f,0xc0708467B53D81037FcC3E07BA4CE66d255549E9,0xDdf5Afb04abB610D35D49531C79D532084f71489,0x47B5f8906B494b5F0d38767DbC8d29c27a501Eb0,0x6C4939C78f6c18b1AE8C91488E5308987e0617BE,0xdE6F8Cd16da03cEA24D8e2ce46DCdCbF2b9Cc7Ef,0xede32C4B2A2400C679aAC27259f3c7E6FE19Cefe,0xe236Ea517fBbA997CBeaE155eD3F7aD40E708119,0x33788065f57D6DcB61C8B62660046F577da438fB,0xCb3537b868368967f821d7Be6926B505E1BCBbc5,0x320F8476CA3FA1252337f89E65D358ba1DA1CA32,0xf5ffED911303a449967cD8eBA531271DAb0AfDF0,0x593B17B90f57786e4F67b0fB62d6bAfA29eF4e20,0x21eBe4b94f05C9c1C46dE911442aDCE83752aC77,0xf9969fCD887115bE49e640b0eccFbAc8ae80dE04,0x8976165F4e0Ba6220b9B17A35Aa92939d4343f44,0xecADF4C3E96c74CF180c82496EC3b8006aecBfed,0x96227ed2549586c083A39800276e19aD18FecD43,0x2881Bd94102dcb3b619f26cAc95b4251Cd620691,0x667c29894b5BB2BE88E493C8CEd552CEA489626A,0xd0fE39bf91A20F55F8A9B782b52ac3754F77d079,0x3b3640314B0FD7082A21A688fA730B1E5353a006,0x3EdB506e00713988162D2025aA9c60D5DA7Df74a,0x408165179bB997241037b29e06CA24c9251a9F29,0x9245d62f04f47C281dCd089098388E7F153E558E,0x481937B6fb95118EfE0B1acf857AF169F00D43de,0xb7C55042eB6c9AeB346681d0a043c1176b029F84,0x04355749c07254abA72a07796221585cFC8569d8,0xc61b4c051B9ae5E5C2340c266a0c857f4cCd25ee,0xbB05347b8136d5195710E43727aaF51F98ce5D35
Arg [7] : _presaleAmounts (uint8[]): 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10

-----Encoded View---------------
305 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000001400
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [9] : 526f636b20446f67730000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 52444f4700000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000021
Arg [13] : 68747470733a2f2f6170692e726f636b646f67732e696f2f6d65746164617461
Arg [14] : 2f00000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000090
Arg [16] : 000000000000000000000000f09e84f6a7ddae4f182dd29c5e55d5ffe3dd62de
Arg [17] : 00000000000000000000000003b36c53de0519f37bc4ef974935cc32948ad8ee
Arg [18] : 000000000000000000000000904561f7ddb04d5a705237ccfc5f4c6042e58333
Arg [19] : 000000000000000000000000c47b1081782c45408cfb9bdebe083daa0dd97502
Arg [20] : 000000000000000000000000b5e6c65ecd9fee37dff13568f1ef6ce5757046df
Arg [21] : 000000000000000000000000c36f2b015adf75f083f63bf5e30bff9a5ebea912
Arg [22] : 0000000000000000000000000258be7ed2759f2940441096cb7c1614638f80c8
Arg [23] : 000000000000000000000000ac65eb3bce56db551cb75639acccc4075647d241
Arg [24] : 00000000000000000000000036881dca8f2dda8aad3edb2530e0d12675dd17bb
Arg [25] : 000000000000000000000000a19df6f5108fed37e20531f2ae0764f1e75e9e80
Arg [26] : 00000000000000000000000087854591e6be82dc660914cdab82ef9d738cdd26
Arg [27] : 0000000000000000000000002925892c7673ac345457863e4525109640474965
Arg [28] : 0000000000000000000000005013fccdb5fd0754fa071c5fbd24761b5ce1334d
Arg [29] : 0000000000000000000000004cfe5f9cb00afcf81a614a9af72a3eedbe82b642
Arg [30] : 00000000000000000000000045d2a6b380e3295ba8bfe1381e83f240d83eb20d
Arg [31] : 000000000000000000000000e70c79107bb5938298dc703653da5e3c4e9f7beb
Arg [32] : 000000000000000000000000d6a3c551399d40b9d30c570b05a65d2cdbb7cd69
Arg [33] : 0000000000000000000000003b18ac9e981116d80dad22e5451c693321256dde
Arg [34] : 0000000000000000000000000fb2248b61be955675e7f96af8fdc2e4471f25a8
Arg [35] : 0000000000000000000000002a92195a610f21f8da1801ff9756aaa11319ef68
Arg [36] : 0000000000000000000000004be650c6d7acc79296f00351a4562102d2607086
Arg [37] : 0000000000000000000000002065fe9ed59441cf2b5ff50ffd9ead6567886384
Arg [38] : 000000000000000000000000ea8bd01e563e083fcb3c0c62ba3d7d9ff032d2c5
Arg [39] : 0000000000000000000000006c2766b040bc34793d7256d965fb5112e1c208f4
Arg [40] : 0000000000000000000000008a6961e70f15c308b15dd84c9cc319da8fbb6fdd
Arg [41] : 0000000000000000000000008b9d461c9bd341d5e93756efc46610e80003f7ea
Arg [42] : 00000000000000000000000006cc21aeea76cebb12da254b6e982516662bbca4
Arg [43] : 0000000000000000000000002acc5684ba5563b3f7a1c2f8300af69c57278d07
Arg [44] : 000000000000000000000000b5e6c65ecd9fee37dff13568f1ef6ce5757046df
Arg [45] : 000000000000000000000000240a0cb9cde79088bd1bb3900d1cde4864b01f00
Arg [46] : 00000000000000000000000032311ccef6c0441d26933071b1c066d65a649b5e
Arg [47] : 00000000000000000000000015409fae9b4df50d4810840e31bd7d72f93daabc
Arg [48] : 0000000000000000000000003ad6cddc687ea7b2a6fb650ebec14c6ad1c234e7
Arg [49] : 00000000000000000000000050f92a25c274b2f594f845fa025944902ca415ce
Arg [50] : 0000000000000000000000003ef1bb56371ec3fdf9f374342636c42d88711861
Arg [51] : 000000000000000000000000828dff2320e2fa3546bd1f012cc872f7e462073a
Arg [52] : 000000000000000000000000cd1948839d244fb6cdf196894aa66488b1688555
Arg [53] : 000000000000000000000000af4ac2f4c6787e81db915415eba3425b39fdf163
Arg [54] : 000000000000000000000000e43f8fe97c86615e68d8c3a71c046759d25fbc47
Arg [55] : 000000000000000000000000053f988e82f7c955f381be8011de1ac13e608d4c
Arg [56] : 00000000000000000000000050f92a25c274b2f594f845fa025944902ca415ce
Arg [57] : 00000000000000000000000027c69484a15b72ec4f7c6468095736c100f6afec
Arg [58] : 000000000000000000000000efa316f2385adf441807d2b43111f9ca676d9827
Arg [59] : 000000000000000000000000e896e26dc209f75846985273d0ad5402b0c18322
Arg [60] : 0000000000000000000000004dd6e4bf487dd0adfb3ea226a60bf1d5678553a0
Arg [61] : 0000000000000000000000004953044ed9890adb9b076baeafabf02d1ba41cb8
Arg [62] : 0000000000000000000000008dbfb1a7440e2f9e62f50b5c27ad980903563417
Arg [63] : 000000000000000000000000f6a9b29acd34a8bf1ae48fe1525861486f853d75
Arg [64] : 000000000000000000000000ab0b0dd7e4eab0f9e31a539074a03f1c1be80879
Arg [65] : 000000000000000000000000ee6f4fdf1c3f7958aead949c1c3cc2d97d64eb51
Arg [66] : 000000000000000000000000c53073f15d86d0c4a273c6bfd3652952a01a4dfc
Arg [67] : 00000000000000000000000072e6c9378d57eff602cb46f782a88743ff0ce147
Arg [68] : 000000000000000000000000783f10b988231c0b819b5d84c9c75273b9e964d2
Arg [69] : 0000000000000000000000007862969df22d647a13103cdf0724fdb21f818550
Arg [70] : 000000000000000000000000eebc7af3c574a6e7eda8f07b4a35736721b49392
Arg [71] : 00000000000000000000000043c1600f0d8be405079886c9c2cfe93fdb51a895
Arg [72] : 0000000000000000000000009c47a5ec2783c8c6dd72e94a8562d23168c8a313
Arg [73] : 0000000000000000000000009a3928278bc182610748a2573d3274cef7de101a
Arg [74] : 00000000000000000000000099d93ca1df7250c5af38b3290a06596fbf69dae5
Arg [75] : 000000000000000000000000ddf5afb04abb610d35d49531c79d532084f71489
Arg [76] : 00000000000000000000000046e957fd8a4ac42b19faa4b691da0c038c0a153b
Arg [77] : 0000000000000000000000008d29ba570c171a3c5cff0e3fd8261975685dd92f
Arg [78] : 000000000000000000000000a1fa2c18aee1b200c5ccced400971a6354d564e9
Arg [79] : 0000000000000000000000006eb49672b26ac890219205debcc5f112188cb701
Arg [80] : 0000000000000000000000002332402393226410e5852bd579564ad2605fa38f
Arg [81] : 000000000000000000000000e8bafea5e68542631c2bf67e7874f7869a82984e
Arg [82] : 0000000000000000000000008dcbc7c4799aa959df81c153c7d8eb457a53aa47
Arg [83] : 00000000000000000000000067711d948086cfb429efe5ff59e76743ba600fa4
Arg [84] : 00000000000000000000000078d455025f8208f22d0a21ec68230298ee953046
Arg [85] : 00000000000000000000000070271f2e451c14bd7e25cda898ffd4fba944f683
Arg [86] : 000000000000000000000000ed4bda2dfb7465287ebc7946f0cf16055310eedc
Arg [87] : 000000000000000000000000cae0aaf98dc12df1ab83599ae403a5c26aa58f95
Arg [88] : 00000000000000000000000084996df1b1af7c626e9825cf4d42d3d1e4c00edb
Arg [89] : 000000000000000000000000da59e024680e7e33110fa6666d2e524ad97cd01a
Arg [90] : 00000000000000000000000095f36b225d79c2d16a769d5bbc2884e5cf46ce4a
Arg [91] : 00000000000000000000000043265746c41d37d74d542dbb71a52830a9a1f4f8
Arg [92] : 0000000000000000000000002332402393226410e5852bd579564ad2605fa38f
Arg [93] : 00000000000000000000000032de478af4bddb27e860f0b8192f19f0991d6267
Arg [94] : 000000000000000000000000eb1a6246175b1d9a1abb8a80d08be98f98a10373
Arg [95] : 000000000000000000000000132f73bd7ccd3583fd3bbceee00c752025e37c6f
Arg [96] : 0000000000000000000000008ffbf4aaf0b6f5a93391dd874494cbf45ebcfe39
Arg [97] : 000000000000000000000000d86f41ced6f932768985bddc2936e417c82f373a
Arg [98] : 000000000000000000000000ede3881ec39b22239d3863a46b0afe895c893bcb
Arg [99] : 000000000000000000000000577d19537895b9a160169af6dbefafc355b03e68
Arg [100] : 0000000000000000000000009a2d3ee21613f6acb6015c8bef70ec4ecb337956
Arg [101] : 000000000000000000000000a860fa58e99ed6a6b1dd2851e97381838d18af78
Arg [102] : 00000000000000000000000089f9bf88e52f7a325eb4195b5f6966b9750fbcd7
Arg [103] : 0000000000000000000000001fd29c8eee883023b6135c0b98c299b7310f4f9d
Arg [104] : 00000000000000000000000085969b51161189c2d3257296ff86a61302d6917a
Arg [105] : 000000000000000000000000df591be95cc40fddc0b74ab65d6293e685809402
Arg [106] : 000000000000000000000000ea04a8cb783e1fdb0c031517a2a69d21c3cd37b1
Arg [107] : 0000000000000000000000002272032fc406e22b6b9ab972953933191d29227a
Arg [108] : 0000000000000000000000001cfae8d9ea1a91b2095b1110b802e7a6d6ab8b8a
Arg [109] : 0000000000000000000000000dc9824dc491780c39cad3d7d973c2bcdca013cb
Arg [110] : 0000000000000000000000006dc7415b533d963657428860d019dd31774c3c46
Arg [111] : 000000000000000000000000c9154f58133f89e8a294dc01aae61a80d82d71f7
Arg [112] : 000000000000000000000000e236ea517fbba997cbeae155ed3f7ad40e708119
Arg [113] : 00000000000000000000000026154fe0914ee31de594221b8125a0b6609f3605
Arg [114] : 000000000000000000000000e8ca011d0d1355b003c25d0254c0de6f943a8a0f
Arg [115] : 000000000000000000000000ddf5afb04abb610d35d49531c79d532084f71489
Arg [116] : 00000000000000000000000007aaca4fa38105602f5a394730d98793398e086b
Arg [117] : 0000000000000000000000002691993b36516f88755a3f26731182a54e46315c
Arg [118] : 0000000000000000000000001b82e2ee66f98cc453a07c7ea232f4f6eeed2d9f
Arg [119] : 0000000000000000000000000f4f6dc05bdbcccb815c90a3ef80910807069fbd
Arg [120] : 00000000000000000000000048ed8265fcdb21c58f4888cfa8b09d2171166889
Arg [121] : 000000000000000000000000a22020307368bd03dbb1813c0856ef074cec6684
Arg [122] : 000000000000000000000000e26d3a2db6f9cc28c9eb5474cffc88bc5ec3c1dd
Arg [123] : 0000000000000000000000000fb2248b61be955675e7f96af8fdc2e4471f25a8
Arg [124] : 000000000000000000000000cea21ca907eb073bbf608af9ea69e482606e49cb
Arg [125] : 000000000000000000000000bfb51c656109999754ecaf8d622494408875e359
Arg [126] : 00000000000000000000000030efb67f07073baf266046aec4fcda46ad25b208
Arg [127] : 0000000000000000000000005fc629632242726acd6760c6d5f182ef8e0619a9
Arg [128] : 000000000000000000000000063034d3f1e5d5d8a0325f9927ff1a8d3cfe9aae
Arg [129] : 000000000000000000000000b77b2cddd60cfd880583294c2f71bf128d55fa56
Arg [130] : 000000000000000000000000ef6f97aa180a6bcf19cdbe9f7dc406f19c32fd5f
Arg [131] : 000000000000000000000000c0708467b53d81037fcc3e07ba4ce66d255549e9
Arg [132] : 000000000000000000000000ddf5afb04abb610d35d49531c79d532084f71489
Arg [133] : 00000000000000000000000047b5f8906b494b5f0d38767dbc8d29c27a501eb0
Arg [134] : 0000000000000000000000006c4939c78f6c18b1ae8c91488e5308987e0617be
Arg [135] : 000000000000000000000000de6f8cd16da03cea24d8e2ce46dcdcbf2b9cc7ef
Arg [136] : 000000000000000000000000ede32c4b2a2400c679aac27259f3c7e6fe19cefe
Arg [137] : 000000000000000000000000e236ea517fbba997cbeae155ed3f7ad40e708119
Arg [138] : 00000000000000000000000033788065f57d6dcb61c8b62660046f577da438fb
Arg [139] : 000000000000000000000000cb3537b868368967f821d7be6926b505e1bcbbc5
Arg [140] : 000000000000000000000000320f8476ca3fa1252337f89e65d358ba1da1ca32
Arg [141] : 000000000000000000000000f5ffed911303a449967cd8eba531271dab0afdf0
Arg [142] : 000000000000000000000000593b17b90f57786e4f67b0fb62d6bafa29ef4e20
Arg [143] : 00000000000000000000000021ebe4b94f05c9c1c46de911442adce83752ac77
Arg [144] : 000000000000000000000000f9969fcd887115be49e640b0eccfbac8ae80de04
Arg [145] : 0000000000000000000000008976165f4e0ba6220b9b17a35aa92939d4343f44
Arg [146] : 000000000000000000000000ecadf4c3e96c74cf180c82496ec3b8006aecbfed
Arg [147] : 00000000000000000000000096227ed2549586c083a39800276e19ad18fecd43
Arg [148] : 0000000000000000000000002881bd94102dcb3b619f26cac95b4251cd620691
Arg [149] : 000000000000000000000000667c29894b5bb2be88e493c8ced552cea489626a
Arg [150] : 000000000000000000000000d0fe39bf91a20f55f8a9b782b52ac3754f77d079
Arg [151] : 0000000000000000000000003b3640314b0fd7082a21a688fa730b1e5353a006
Arg [152] : 0000000000000000000000003edb506e00713988162d2025aa9c60d5da7df74a
Arg [153] : 000000000000000000000000408165179bb997241037b29e06ca24c9251a9f29
Arg [154] : 0000000000000000000000009245d62f04f47c281dcd089098388e7f153e558e
Arg [155] : 000000000000000000000000481937b6fb95118efe0b1acf857af169f00d43de
Arg [156] : 000000000000000000000000b7c55042eb6c9aeb346681d0a043c1176b029f84
Arg [157] : 00000000000000000000000004355749c07254aba72a07796221585cfc8569d8
Arg [158] : 000000000000000000000000c61b4c051b9ae5e5c2340c266a0c857f4ccd25ee
Arg [159] : 000000000000000000000000bb05347b8136d5195710e43727aaf51f98ce5d35
Arg [160] : 0000000000000000000000000000000000000000000000000000000000000090
Arg [161] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [162] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [163] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [164] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [165] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [166] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [167] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [168] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [169] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [170] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [171] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [172] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [173] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [174] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [175] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [176] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [177] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [178] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [179] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [180] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [181] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [182] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [183] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [184] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [185] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [186] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [187] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [188] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [189] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [190] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [191] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [192] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [193] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [194] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [195] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [196] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [197] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [198] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [199] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [200] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [201] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [202] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [203] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [204] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [205] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [206] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [207] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [208] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [209] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [210] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [211] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [212] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [213] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [214] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [215] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [216] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [217] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [218] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [219] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [220] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [221] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [222] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [223] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [224] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [225] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [226] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [227] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [228] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [229] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [230] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [231] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [232] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [233] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [234] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [235] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [236] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [237] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [238] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [239] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [240] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [241] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [242] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [243] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [244] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [245] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [246] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [247] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [248] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [249] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [250] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [251] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [252] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [253] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [254] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [255] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [256] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [257] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [258] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [259] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [260] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [261] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [262] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [263] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [264] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [265] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [266] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [267] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [268] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [269] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [270] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [271] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [272] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [273] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [274] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [275] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [276] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [277] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [278] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [279] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [280] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [281] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [282] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [283] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [284] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [285] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [286] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [287] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [288] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [289] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [290] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [291] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [292] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [293] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [294] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [295] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [296] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [297] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [298] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [299] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [300] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [301] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [302] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [303] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [304] : 000000000000000000000000000000000000000000000000000000000000000a


Deployed Bytecode Sourcemap

51662:3674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20674:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21619:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23178:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22701:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54375:433;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51898:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53215:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24068:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;55224:109;;;;;;;;;;;;;:::i;:::-;;24478:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52559:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53009:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21313:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53519:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51706:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21043:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43943:94;;;;;;;;;;;;;:::i;:::-;;53302:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51930:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51866:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43292:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52799:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21788:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53613:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51842:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23471:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;54816:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53746:621;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51812:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24734:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52896:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53122:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21963:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23837:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44192:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51737:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20674:305;20776:4;20828:25;20813:40;;;:11;:40;;;;:105;;;;20885:33;20870:48;;;:11;:48;;;;20813:105;:158;;;;20935:36;20959:11;20935:23;:36::i;:::-;20813:158;20793:178;;20674:305;;;:::o;21619:100::-;21673:13;21706:5;21699:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21619:100;:::o;23178:221::-;23254:7;23282:16;23290:7;23282;:16::i;:::-;23274:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23367:15;:24;23383:7;23367:24;;;;;;;;;;;;;;;;;;;;;23360:31;;23178:221;;;:::o;22701:411::-;22782:13;22798:23;22813:7;22798:14;:23::i;:::-;22782:39;;22846:5;22840:11;;:2;:11;;;;22832:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22940:5;22924:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;22949:37;22966:5;22973:12;:10;:12::i;:::-;22949:16;:37::i;:::-;22924:62;22902:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23083:21;23092:2;23096:7;23083:8;:21::i;:::-;22701:411;;;:::o;54375:433::-;54436:4;;;;;;;;;;;54428:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;54490:5;;;;;;;;;;;54482:13;;:4;:13;;;;:25;;;;54506:1;54499:4;:8;;;54482:25;54474:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;54592:11;;;;;;;;;;;54564:39;;54587:1;54579:5;;;;;;;;;;;54571:4;54564:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;54556:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;54669:11;;;;;;;;;;;54641:39;;54664:1;54656:5;;;;;;;;;;;54648:4;54641:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;54633:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;54739:4;54731:12;;:5;;:12;;;;:::i;:::-;54718:9;:25;;54710:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;54774:26;54783:10;54795:4;54774:8;:26::i;:::-;54375:433;:::o;51898:25::-;;;;;;;;;;;;;:::o;53215:79::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53280:6:::1;53273:4;;:13;;;;;;;;;;;;;;;;;;53215:79:::0;:::o;24068:339::-;24263:41;24282:12;:10;:12::i;:::-;24296:7;24263:18;:41::i;:::-;24255:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24371:28;24381:4;24387:2;24391:7;24371:9;:28::i;:::-;24068:339;;;:::o;55224:109::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;55282:10:::1;55274:28;;:51;55303:21;55274:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;55224:109::o:0;24478:185::-;24616:39;24633:4;24639:2;24643:7;24616:39;;;;;;;;;;;;:16;:39::i;:::-;24478:185;;;:::o;52559:107::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52650:8:::1;52631:16;:27;;;;;;;;;;;;:::i;:::-;;52559:107:::0;:::o;53009:105::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53096:10:::1;53082:11;;:24;;;;;;;;;;;;;;;;;;53009:105:::0;:::o;21313:239::-;21385:7;21405:13;21421:7;:16;21429:7;21421:16;;;;;;;;;;;;;;;;;;;;;21405:32;;21473:1;21456:19;;:5;:19;;;;21448:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21539:5;21532:12;;;21313:239;;;:::o;53519:86::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53590:7:::1;53582:5;;:15;;;;;;;;;;;;;;;;;;53519:86:::0;:::o;51706:24::-;;;;;;;;;;;;;:::o;21043:208::-;21115:7;21160:1;21143:19;;:5;:19;;;;21135:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21227:9;:16;21237:5;21227:16;;;;;;;;;;;;;;;;21220:23;;21043:208;;;:::o;43943:94::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44008:21:::1;44026:1;44008:9;:21::i;:::-;43943:94::o:0;53302:209::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53414:7:::1;53409:95;53427:2;:9;53423:1;:13;;;53409:95;;;53482:7;53490:1;53482:10;;;;;;;;;;;;;;;;;;;;;;;;53458:14;:21;53473:2;53476:1;53473:5;;;;;;;;;;;;;;;;;;;;;;;;53458:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;53438:3;;;;;:::i;:::-;;;;53409:95;;;;53302:209:::0;;:::o;51930:18::-;;;;;;;;;;;;;:::o;51866:25::-;;;;;;;;;;;;;:::o;43292:87::-;43338:7;43365:6;;;;;;;;;;;43358:13;;43292:87;:::o;52799:89::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52871:9:::1;52863:5;:17;;;;52799:89:::0;:::o;21788:104::-;21844:13;21877:7;21870:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21788:104;:::o;53613:125::-;53682:5;53707:14;:23;53722:7;53707:23;;;;;;;;;;;;;;;;;;;;;;;;;53700:30;;53613:125;;;:::o;51842:17::-;;;;:::o;23471:295::-;23586:12;:10;:12::i;:::-;23574:24;;:8;:24;;;;23566:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23686:8;23641:18;:32;23660:12;:10;:12::i;:::-;23641:32;;;;;;;;;;;;;;;:42;23674:8;23641:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23739:8;23710:48;;23725:12;:10;:12::i;:::-;23710:48;;;23749:8;23710:48;;;;;;:::i;:::-;;;;;;;;23471:295;;:::o;54816:179::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;54925:11:::1;;;;;;;;;;;54897:39;;54920:1;54912:5;;;;;;;;;;;54904:4;54897:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;54889:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;54968:19;54977:3;54982:4;54968:8;:19::i;:::-;54816:179:::0;;:::o;53746:621::-;53806:17;53826:14;:26;53841:10;53826:26;;;;;;;;;;;;;;;;;;;;;;;;;53806:46;;53871:7;;;;;;;;;;;53863:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;53931:11;53923:19;;:4;:19;;;;53915:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;54013:1;53999:11;:15;;;53991:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;54093:11;;;;;;;;;;;54065:39;;54088:1;54080:5;;;;;;;;;;;54072:4;54065:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;54057:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;54170:11;;;;;;;;;;;54142:39;;54165:1;54157:5;;;;;;;;;;;54149:4;54142:12;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;:39;;;;54134:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;54240:4;54232:12;;:5;;:12;;;;:::i;:::-;54219:9;:25;;54211:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;54316:4;54302:11;:18;;;;:::i;:::-;54273:14;:26;54288:10;54273:26;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;54333:26;54342:10;54354:4;54333:8;:26::i;:::-;53746:621;;:::o;51812:23::-;;;;;;;;;;;;;:::o;24734:328::-;24909:41;24928:12;:10;:12::i;:::-;24942:7;24909:18;:41::i;:::-;24901:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25015:39;25029:4;25035:2;25039:7;25048:5;25015:13;:39::i;:::-;24734:328;;;;:::o;52896:105::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52983:10:::1;52969:11;;:24;;;;;;;;;;;;;;;;;;52896:105:::0;:::o;53122:85::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53193:6:::1;53183:7;;:16;;;;;;;;;;;;;;;;;;53122:85:::0;:::o;21963:334::-;22036:13;22070:16;22078:7;22070;:16::i;:::-;22062:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22151:21;22175:10;:8;:10::i;:::-;22151:34;;22227:1;22209:7;22203:21;:25;:86;;;;;;;;;;;;;;;;;22255:7;22264:18;:7;:16;:18::i;:::-;22238:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22203:86;22196:93;;;21963:334;;;:::o;23837:164::-;23934:4;23958:18;:25;23977:5;23958:25;;;;;;;;;;;;;;;:35;23984:8;23958:35;;;;;;;;;;;;;;;;;;;;;;;;;23951:42;;23837:164;;;;:::o;44192:192::-;43523:12;:10;:12::i;:::-;43512:23;;:7;:5;:7::i;:::-;:23;;;43504:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44301:1:::1;44281:22;;:8;:22;;;;44273:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;44357:19;44367:8;44357:9;:19::i;:::-;44192:192:::0;:::o;51737:26::-;;;;;;;;;;;;;:::o;19174:157::-;19259:4;19298:25;19283:40;;;:11;:40;;;;19276:47;;19174:157;;;:::o;26572:127::-;26637:4;26689:1;26661:30;;:7;:16;26669:7;26661:16;;;;;;;;;;;;;;;;;;;;;:30;;;;26654:37;;26572:127;;;:::o;16082:98::-;16135:7;16162:10;16155:17;;16082:98;:::o;30554:174::-;30656:2;30629:15;:24;30645:7;30629:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30712:7;30708:2;30674:46;;30683:23;30698:7;30683:14;:23::i;:::-;30674:46;;;;;;;;;;;;30554:174;;:::o;55003:213::-;55070:7;55065:144;55087:4;55083:8;;:1;:8;;;55065:144;;;55113:15;55131:5;;;;;;;;;;;55113:23;;55151:24;55161:3;55166:8;55151:24;;:9;:24::i;:::-;55190:5;;:7;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;55065:144;55093:3;;;;;:::i;:::-;;;;55065:144;;;;55003:213;;:::o;26866:348::-;26959:4;26984:16;26992:7;26984;:16::i;:::-;26976:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27060:13;27076:23;27091:7;27076:14;:23::i;:::-;27060:39;;27129:5;27118:16;;:7;:16;;;:51;;;;27162:7;27138:31;;:20;27150:7;27138:11;:20::i;:::-;:31;;;27118:51;:87;;;;27173:32;27190:5;27197:7;27173:16;:32::i;:::-;27118:87;27110:96;;;26866:348;;;;:::o;29858:578::-;30017:4;29990:31;;:23;30005:7;29990:14;:23::i;:::-;:31;;;29982:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30100:1;30086:16;;:2;:16;;;;30078:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30156:39;30177:4;30183:2;30187:7;30156:20;:39::i;:::-;30260:29;30277:1;30281:7;30260:8;:29::i;:::-;30321:1;30302:9;:15;30312:4;30302:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30350:1;30333:9;:13;30343:2;30333:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30381:2;30362:7;:16;30370:7;30362:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30420:7;30416:2;30401:27;;30410:4;30401:27;;;;;;;;;;;;29858:578;;;:::o;44392:173::-;44448:16;44467:6;;;;;;;;;;;44448:25;;44493:8;44484:6;;:17;;;;;;;;;;;;;;;;;;44548:8;44517:40;;44538:8;44517:40;;;;;;;;;;;;44392:173;;:::o;25944:315::-;26101:28;26111:4;26117:2;26121:7;26101:9;:28::i;:::-;26148:48;26171:4;26177:2;26181:7;26190:5;26148:22;:48::i;:::-;26140:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25944:315;;;;:::o;52674:117::-;52734:13;52767:16;52760:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52674:117;:::o;16613:723::-;16669:13;16899:1;16890:5;:10;16886:53;;;16917:10;;;;;;;;;;;;;;;;;;;;;16886:53;16949:12;16964:5;16949:20;;16980:14;17005:78;17020:1;17012:4;:9;17005:78;;17038:8;;;;;:::i;:::-;;;;17069:2;17061:10;;;;;:::i;:::-;;;17005:78;;;17093:19;17125:6;17115:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17093:39;;17143:154;17159:1;17150:5;:10;17143:154;;17187:1;17177:11;;;;;:::i;:::-;;;17254:2;17246:5;:10;;;;:::i;:::-;17233:2;:24;;;;:::i;:::-;17220:39;;17203:6;17210;17203:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;17283:2;17274:11;;;;;:::i;:::-;;;17143:154;;;17321:6;17307:21;;;;;16613:723;;;;:::o;27556:110::-;27632:26;27642:2;27646:7;27632:26;;;;;;;;;;;;:9;:26::i;:::-;27556:110;;:::o;32664:126::-;;;;:::o;31293:799::-;31448:4;31469:15;:2;:13;;;:15::i;:::-;31465:620;;;31521:2;31505:36;;;31542:12;:10;:12::i;:::-;31556:4;31562:7;31571:5;31505:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31501:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31764:1;31747:6;:13;:18;31743:272;;;31790:60;;;;;;;;;;:::i;:::-;;;;;;;;31743:272;31965:6;31959:13;31950:6;31946:2;31942:15;31935:38;31501:529;31638:41;;;31628:51;;;:6;:51;;;;31621:58;;;;;31465:620;32069:4;32062:11;;31293:799;;;;;;;:::o;27893:321::-;28023:18;28029:2;28033:7;28023:5;:18::i;:::-;28074:54;28105:1;28109:2;28113:7;28122:5;28074:22;:54::i;:::-;28052:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;27893:321;;;:::o;8120:387::-;8180:4;8388:12;8455:7;8443:20;8435:28;;8498:1;8491:4;:8;8484:15;;;8120:387;;;:::o;28550:382::-;28644:1;28630:16;;:2;:16;;;;28622:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28703:16;28711:7;28703;:16::i;:::-;28702:17;28694:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28765:45;28794:1;28798:2;28802:7;28765:20;:45::i;:::-;28840:1;28823:9;:13;28833:2;28823:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28871:2;28852:7;:16;28860:7;28852:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28916:7;28912:2;28891:33;;28908:1;28891:33;;;;;;;;;;;;28550:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;700:649::-;794:5;819:79;835:62;890:6;835:62;:::i;:::-;819:79;:::i;:::-;810:88;;918:5;947:6;940:5;933:21;981:4;974:5;970:16;963:23;;1007:6;1057:3;1049:4;1041:6;1037:17;1032:3;1028:27;1025:36;1022:2;;;1086:1;1083;1076:12;1022:2;1122:1;1107:236;1132:6;1129:1;1126:13;1107:236;;;1200:3;1229:35;1260:3;1248:10;1229:35;:::i;:::-;1224:3;1217:48;1294:4;1289:3;1285:14;1278:21;;1328:4;1323:3;1319:14;1312:21;;1167:176;1154:1;1151;1147:9;1142:14;;1107:236;;;1111:14;800:549;;;;;;;:::o;1355:343::-;1432:5;1457:65;1473:48;1514:6;1473:48;:::i;:::-;1457:65;:::i;:::-;1448:74;;1545:6;1538:5;1531:21;1583:4;1576:5;1572:16;1621:3;1612:6;1607:3;1603:16;1600:25;1597:2;;;1638:1;1635;1628:12;1597:2;1651:41;1685:6;1680:3;1675;1651:41;:::i;:::-;1438:260;;;;;;:::o;1704:345::-;1782:5;1807:66;1823:49;1865:6;1823:49;:::i;:::-;1807:66;:::i;:::-;1798:75;;1896:6;1889:5;1882:21;1934:4;1927:5;1923:16;1972:3;1963:6;1958:3;1954:16;1951:25;1948:2;;;1989:1;1986;1979:12;1948:2;2002:41;2036:6;2031:3;2026;2002:41;:::i;:::-;1788:261;;;;;;:::o;2055:139::-;2101:5;2139:6;2126:20;2117:29;;2155:33;2182:5;2155:33;:::i;:::-;2107:87;;;;:::o;2217:303::-;2288:5;2337:3;2330:4;2322:6;2318:17;2314:27;2304:2;;2355:1;2352;2345:12;2304:2;2395:6;2382:20;2420:94;2510:3;2502:6;2495:4;2487:6;2483:17;2420:94;:::i;:::-;2411:103;;2294:226;;;;;:::o;2541:299::-;2610:5;2659:3;2652:4;2644:6;2640:17;2636:27;2626:2;;2677:1;2674;2667:12;2626:2;2717:6;2704:20;2742:92;2830:3;2822:6;2815:4;2807:6;2803:17;2742:92;:::i;:::-;2733:101;;2616:224;;;;;:::o;2846:133::-;2889:5;2927:6;2914:20;2905:29;;2943:30;2967:5;2943:30;:::i;:::-;2895:84;;;;:::o;2985:137::-;3030:5;3068:6;3055:20;3046:29;;3084:32;3110:5;3084:32;:::i;:::-;3036:86;;;;:::o;3128:141::-;3184:5;3215:6;3209:13;3200:22;;3231:32;3257:5;3231:32;:::i;:::-;3190:79;;;;:::o;3288:271::-;3343:5;3392:3;3385:4;3377:6;3373:17;3369:27;3359:2;;3410:1;3407;3400:12;3359:2;3450:6;3437:20;3475:78;3549:3;3541:6;3534:4;3526:6;3522:17;3475:78;:::i;:::-;3466:87;;3349:210;;;;;:::o;3579:273::-;3635:5;3684:3;3677:4;3669:6;3665:17;3661:27;3651:2;;3702:1;3699;3692:12;3651:2;3742:6;3729:20;3767:79;3842:3;3834:6;3827:4;3819:6;3815:17;3767:79;:::i;:::-;3758:88;;3641:211;;;;;:::o;3858:137::-;3903:5;3941:6;3928:20;3919:29;;3957:32;3983:5;3957:32;:::i;:::-;3909:86;;;;:::o;4001:139::-;4047:5;4085:6;4072:20;4063:29;;4101:33;4128:5;4101:33;:::i;:::-;4053:87;;;;:::o;4146:135::-;4190:5;4228:6;4215:20;4206:29;;4244:31;4269:5;4244:31;:::i;:::-;4196:85;;;;:::o;4287:262::-;4346:6;4395:2;4383:9;4374:7;4370:23;4366:32;4363:2;;;4411:1;4408;4401:12;4363:2;4454:1;4479:53;4524:7;4515:6;4504:9;4500:22;4479:53;:::i;:::-;4469:63;;4425:117;4353:196;;;;:::o;4555:407::-;4623:6;4631;4680:2;4668:9;4659:7;4655:23;4651:32;4648:2;;;4696:1;4693;4686:12;4648:2;4739:1;4764:53;4809:7;4800:6;4789:9;4785:22;4764:53;:::i;:::-;4754:63;;4710:117;4866:2;4892:53;4937:7;4928:6;4917:9;4913:22;4892:53;:::i;:::-;4882:63;;4837:118;4638:324;;;;;:::o;4968:552::-;5045:6;5053;5061;5110:2;5098:9;5089:7;5085:23;5081:32;5078:2;;;5126:1;5123;5116:12;5078:2;5169:1;5194:53;5239:7;5230:6;5219:9;5215:22;5194:53;:::i;:::-;5184:63;;5140:117;5296:2;5322:53;5367:7;5358:6;5347:9;5343:22;5322:53;:::i;:::-;5312:63;;5267:118;5424:2;5450:53;5495:7;5486:6;5475:9;5471:22;5450:53;:::i;:::-;5440:63;;5395:118;5068:452;;;;;:::o;5526:809::-;5621:6;5629;5637;5645;5694:3;5682:9;5673:7;5669:23;5665:33;5662:2;;;5711:1;5708;5701:12;5662:2;5754:1;5779:53;5824:7;5815:6;5804:9;5800:22;5779:53;:::i;:::-;5769:63;;5725:117;5881:2;5907:53;5952:7;5943:6;5932:9;5928:22;5907:53;:::i;:::-;5897:63;;5852:118;6009:2;6035:53;6080:7;6071:6;6060:9;6056:22;6035:53;:::i;:::-;6025:63;;5980:118;6165:2;6154:9;6150:18;6137:32;6196:18;6188:6;6185:30;6182:2;;;6228:1;6225;6218:12;6182:2;6256:62;6310:7;6301:6;6290:9;6286:22;6256:62;:::i;:::-;6246:72;;6108:220;5652:683;;;;;;;:::o;6341:401::-;6406:6;6414;6463:2;6451:9;6442:7;6438:23;6434:32;6431:2;;;6479:1;6476;6469:12;6431:2;6522:1;6547:53;6592:7;6583:6;6572:9;6568:22;6547:53;:::i;:::-;6537:63;;6493:117;6649:2;6675:50;6717:7;6708:6;6697:9;6693:22;6675:50;:::i;:::-;6665:60;;6620:115;6421:321;;;;;:::o;6748:407::-;6816:6;6824;6873:2;6861:9;6852:7;6848:23;6844:32;6841:2;;;6889:1;6886;6879:12;6841:2;6932:1;6957:53;7002:7;6993:6;6982:9;6978:22;6957:53;:::i;:::-;6947:63;;6903:117;7059:2;7085:53;7130:7;7121:6;7110:9;7106:22;7085:53;:::i;:::-;7075:63;;7030:118;6831:324;;;;;:::o;7161:403::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:2;;;7300:1;7297;7290:12;7252:2;7343:1;7368:53;7413:7;7404:6;7393:9;7389:22;7368:53;:::i;:::-;7358:63;;7314:117;7470:2;7496:51;7539:7;7530:6;7519:9;7515:22;7496:51;:::i;:::-;7486:61;;7441:116;7242:322;;;;;:::o;7570:689::-;7686:6;7694;7743:2;7731:9;7722:7;7718:23;7714:32;7711:2;;;7759:1;7756;7749:12;7711:2;7830:1;7819:9;7815:17;7802:31;7860:18;7852:6;7849:30;7846:2;;;7892:1;7889;7882:12;7846:2;7920:78;7990:7;7981:6;7970:9;7966:22;7920:78;:::i;:::-;7910:88;;7773:235;8075:2;8064:9;8060:18;8047:32;8106:18;8098:6;8095:30;8092:2;;;8138:1;8135;8128:12;8092:2;8166:76;8234:7;8225:6;8214:9;8210:22;8166:76;:::i;:::-;8156:86;;8018:234;7701:558;;;;;:::o;8265:256::-;8321:6;8370:2;8358:9;8349:7;8345:23;8341:32;8338:2;;;8386:1;8383;8376:12;8338:2;8429:1;8454:50;8496:7;8487:6;8476:9;8472:22;8454:50;:::i;:::-;8444:60;;8400:114;8328:193;;;;:::o;8527:260::-;8585:6;8634:2;8622:9;8613:7;8609:23;8605:32;8602:2;;;8650:1;8647;8640:12;8602:2;8693:1;8718:52;8762:7;8753:6;8742:9;8738:22;8718:52;:::i;:::-;8708:62;;8664:116;8592:195;;;;:::o;8793:282::-;8862:6;8911:2;8899:9;8890:7;8886:23;8882:32;8879:2;;;8927:1;8924;8917:12;8879:2;8970:1;8995:63;9050:7;9041:6;9030:9;9026:22;8995:63;:::i;:::-;8985:73;;8941:127;8869:206;;;;:::o;9081:375::-;9150:6;9199:2;9187:9;9178:7;9174:23;9170:32;9167:2;;;9215:1;9212;9205:12;9167:2;9286:1;9275:9;9271:17;9258:31;9316:18;9308:6;9305:30;9302:2;;;9348:1;9345;9338:12;9302:2;9376:63;9431:7;9422:6;9411:9;9407:22;9376:63;:::i;:::-;9366:73;;9229:220;9157:299;;;;:::o;9462:260::-;9520:6;9569:2;9557:9;9548:7;9544:23;9540:32;9537:2;;;9585:1;9582;9575:12;9537:2;9628:1;9653:52;9697:7;9688:6;9677:9;9673:22;9653:52;:::i;:::-;9643:62;;9599:116;9527:195;;;;:::o;9728:262::-;9787:6;9836:2;9824:9;9815:7;9811:23;9807:32;9804:2;;;9852:1;9849;9842:12;9804:2;9895:1;9920:53;9965:7;9956:6;9945:9;9941:22;9920:53;:::i;:::-;9910:63;;9866:117;9794:196;;;;:::o;9996:258::-;10053:6;10102:2;10090:9;10081:7;10077:23;10073:32;10070:2;;;10118:1;10115;10108:12;10070:2;10161:1;10186:51;10229:7;10220:6;10209:9;10205:22;10186:51;:::i;:::-;10176:61;;10132:115;10060:194;;;;:::o;10260:118::-;10347:24;10365:5;10347:24;:::i;:::-;10342:3;10335:37;10325:53;;:::o;10384:109::-;10465:21;10480:5;10465:21;:::i;:::-;10460:3;10453:34;10443:50;;:::o;10499:360::-;10585:3;10613:38;10645:5;10613:38;:::i;:::-;10667:70;10730:6;10725:3;10667:70;:::i;:::-;10660:77;;10746:52;10791:6;10786:3;10779:4;10772:5;10768:16;10746:52;:::i;:::-;10823:29;10845:6;10823:29;:::i;:::-;10818:3;10814:39;10807:46;;10589:270;;;;;:::o;10865:364::-;10953:3;10981:39;11014:5;10981:39;:::i;:::-;11036:71;11100:6;11095:3;11036:71;:::i;:::-;11029:78;;11116:52;11161:6;11156:3;11149:4;11142:5;11138:16;11116:52;:::i;:::-;11193:29;11215:6;11193:29;:::i;:::-;11188:3;11184:39;11177:46;;10957:272;;;;;:::o;11235:377::-;11341:3;11369:39;11402:5;11369:39;:::i;:::-;11424:89;11506:6;11501:3;11424:89;:::i;:::-;11417:96;;11522:52;11567:6;11562:3;11555:4;11548:5;11544:16;11522:52;:::i;:::-;11599:6;11594:3;11590:16;11583:23;;11345:267;;;;;:::o;11618:366::-;11760:3;11781:67;11845:2;11840:3;11781:67;:::i;:::-;11774:74;;11857:93;11946:3;11857:93;:::i;:::-;11975:2;11970:3;11966:12;11959:19;;11764:220;;;:::o;11990:366::-;12132:3;12153:67;12217:2;12212:3;12153:67;:::i;:::-;12146:74;;12229:93;12318:3;12229:93;:::i;:::-;12347:2;12342:3;12338:12;12331:19;;12136:220;;;:::o;12362:366::-;12504:3;12525:67;12589:2;12584:3;12525:67;:::i;:::-;12518:74;;12601:93;12690:3;12601:93;:::i;:::-;12719:2;12714:3;12710:12;12703:19;;12508:220;;;:::o;12734:366::-;12876:3;12897:67;12961:2;12956:3;12897:67;:::i;:::-;12890:74;;12973:93;13062:3;12973:93;:::i;:::-;13091:2;13086:3;13082:12;13075:19;;12880:220;;;:::o;13106:366::-;13248:3;13269:67;13333:2;13328:3;13269:67;:::i;:::-;13262:74;;13345:93;13434:3;13345:93;:::i;:::-;13463:2;13458:3;13454:12;13447:19;;13252:220;;;:::o;13478:366::-;13620:3;13641:67;13705:2;13700:3;13641:67;:::i;:::-;13634:74;;13717:93;13806:3;13717:93;:::i;:::-;13835:2;13830:3;13826:12;13819:19;;13624:220;;;:::o;13850:366::-;13992:3;14013:67;14077:2;14072:3;14013:67;:::i;:::-;14006:74;;14089:93;14178:3;14089:93;:::i;:::-;14207:2;14202:3;14198:12;14191:19;;13996:220;;;:::o;14222:366::-;14364:3;14385:67;14449:2;14444:3;14385:67;:::i;:::-;14378:74;;14461:93;14550:3;14461:93;:::i;:::-;14579:2;14574:3;14570:12;14563:19;;14368:220;;;:::o;14594:366::-;14736:3;14757:67;14821:2;14816:3;14757:67;:::i;:::-;14750:74;;14833:93;14922:3;14833:93;:::i;:::-;14951:2;14946:3;14942:12;14935:19;;14740:220;;;:::o;14966:366::-;15108:3;15129:67;15193:2;15188:3;15129:67;:::i;:::-;15122:74;;15205:93;15294:3;15205:93;:::i;:::-;15323:2;15318:3;15314:12;15307:19;;15112:220;;;:::o;15338:366::-;15480:3;15501:67;15565:2;15560:3;15501:67;:::i;:::-;15494:74;;15577:93;15666:3;15577:93;:::i;:::-;15695:2;15690:3;15686:12;15679:19;;15484:220;;;:::o;15710:366::-;15852:3;15873:67;15937:2;15932:3;15873:67;:::i;:::-;15866:74;;15949:93;16038:3;15949:93;:::i;:::-;16067:2;16062:3;16058:12;16051:19;;15856:220;;;:::o;16082:366::-;16224:3;16245:67;16309:2;16304:3;16245:67;:::i;:::-;16238:74;;16321:93;16410:3;16321:93;:::i;:::-;16439:2;16434:3;16430:12;16423:19;;16228:220;;;:::o;16454:366::-;16596:3;16617:67;16681:2;16676:3;16617:67;:::i;:::-;16610:74;;16693:93;16782:3;16693:93;:::i;:::-;16811:2;16806:3;16802:12;16795:19;;16600:220;;;:::o;16826:366::-;16968:3;16989:67;17053:2;17048:3;16989:67;:::i;:::-;16982:74;;17065:93;17154:3;17065:93;:::i;:::-;17183:2;17178:3;17174:12;17167:19;;16972:220;;;:::o;17198:366::-;17340:3;17361:67;17425:2;17420:3;17361:67;:::i;:::-;17354:74;;17437:93;17526:3;17437:93;:::i;:::-;17555:2;17550:3;17546:12;17539:19;;17344:220;;;:::o;17570:366::-;17712:3;17733:67;17797:2;17792:3;17733:67;:::i;:::-;17726:74;;17809:93;17898:3;17809:93;:::i;:::-;17927:2;17922:3;17918:12;17911:19;;17716:220;;;:::o;17942:366::-;18084:3;18105:67;18169:2;18164:3;18105:67;:::i;:::-;18098:74;;18181:93;18270:3;18181:93;:::i;:::-;18299:2;18294:3;18290:12;18283:19;;18088:220;;;:::o;18314:366::-;18456:3;18477:67;18541:2;18536:3;18477:67;:::i;:::-;18470:74;;18553:93;18642:3;18553:93;:::i;:::-;18671:2;18666:3;18662:12;18655:19;;18460:220;;;:::o;18686:366::-;18828:3;18849:67;18913:2;18908:3;18849:67;:::i;:::-;18842:74;;18925:93;19014:3;18925:93;:::i;:::-;19043:2;19038:3;19034:12;19027:19;;18832:220;;;:::o;19058:366::-;19200:3;19221:67;19285:2;19280:3;19221:67;:::i;:::-;19214:74;;19297:93;19386:3;19297:93;:::i;:::-;19415:2;19410:3;19406:12;19399:19;;19204:220;;;:::o;19430:366::-;19572:3;19593:67;19657:2;19652:3;19593:67;:::i;:::-;19586:74;;19669:93;19758:3;19669:93;:::i;:::-;19787:2;19782:3;19778:12;19771:19;;19576:220;;;:::o;19802:115::-;19887:23;19904:5;19887:23;:::i;:::-;19882:3;19875:36;19865:52;;:::o;19923:118::-;20010:24;20028:5;20010:24;:::i;:::-;20005:3;19998:37;19988:53;;:::o;20047:112::-;20130:22;20146:5;20130:22;:::i;:::-;20125:3;20118:35;20108:51;;:::o;20165:435::-;20345:3;20367:95;20458:3;20449:6;20367:95;:::i;:::-;20360:102;;20479:95;20570:3;20561:6;20479:95;:::i;:::-;20472:102;;20591:3;20584:10;;20349:251;;;;;:::o;20606:222::-;20699:4;20737:2;20726:9;20722:18;20714:26;;20750:71;20818:1;20807:9;20803:17;20794:6;20750:71;:::i;:::-;20704:124;;;;:::o;20834:640::-;21029:4;21067:3;21056:9;21052:19;21044:27;;21081:71;21149:1;21138:9;21134:17;21125:6;21081:71;:::i;:::-;21162:72;21230:2;21219:9;21215:18;21206:6;21162:72;:::i;:::-;21244;21312:2;21301:9;21297:18;21288:6;21244:72;:::i;:::-;21363:9;21357:4;21353:20;21348:2;21337:9;21333:18;21326:48;21391:76;21462:4;21453:6;21391:76;:::i;:::-;21383:84;;21034:440;;;;;;;:::o;21480:210::-;21567:4;21605:2;21594:9;21590:18;21582:26;;21618:65;21680:1;21669:9;21665:17;21656:6;21618:65;:::i;:::-;21572:118;;;;:::o;21696:313::-;21809:4;21847:2;21836:9;21832:18;21824:26;;21896:9;21890:4;21886:20;21882:1;21871:9;21867:17;21860:47;21924:78;21997:4;21988:6;21924:78;:::i;:::-;21916:86;;21814:195;;;;:::o;22015:419::-;22181:4;22219:2;22208:9;22204:18;22196:26;;22268:9;22262:4;22258:20;22254:1;22243:9;22239:17;22232:47;22296:131;22422:4;22296:131;:::i;:::-;22288:139;;22186:248;;;:::o;22440:419::-;22606:4;22644:2;22633:9;22629:18;22621:26;;22693:9;22687:4;22683:20;22679:1;22668:9;22664:17;22657:47;22721:131;22847:4;22721:131;:::i;:::-;22713:139;;22611:248;;;:::o;22865:419::-;23031:4;23069:2;23058:9;23054:18;23046:26;;23118:9;23112:4;23108:20;23104:1;23093:9;23089:17;23082:47;23146:131;23272:4;23146:131;:::i;:::-;23138:139;;23036:248;;;:::o;23290:419::-;23456:4;23494:2;23483:9;23479:18;23471:26;;23543:9;23537:4;23533:20;23529:1;23518:9;23514:17;23507:47;23571:131;23697:4;23571:131;:::i;:::-;23563:139;;23461:248;;;:::o;23715:419::-;23881:4;23919:2;23908:9;23904:18;23896:26;;23968:9;23962:4;23958:20;23954:1;23943:9;23939:17;23932:47;23996:131;24122:4;23996:131;:::i;:::-;23988:139;;23886:248;;;:::o;24140:419::-;24306:4;24344:2;24333:9;24329:18;24321:26;;24393:9;24387:4;24383:20;24379:1;24368:9;24364:17;24357:47;24421:131;24547:4;24421:131;:::i;:::-;24413:139;;24311:248;;;:::o;24565:419::-;24731:4;24769:2;24758:9;24754:18;24746:26;;24818:9;24812:4;24808:20;24804:1;24793:9;24789:17;24782:47;24846:131;24972:4;24846:131;:::i;:::-;24838:139;;24736:248;;;:::o;24990:419::-;25156:4;25194:2;25183:9;25179:18;25171:26;;25243:9;25237:4;25233:20;25229:1;25218:9;25214:17;25207:47;25271:131;25397:4;25271:131;:::i;:::-;25263:139;;25161:248;;;:::o;25415:419::-;25581:4;25619:2;25608:9;25604:18;25596:26;;25668:9;25662:4;25658:20;25654:1;25643:9;25639:17;25632:47;25696:131;25822:4;25696:131;:::i;:::-;25688:139;;25586:248;;;:::o;25840:419::-;26006:4;26044:2;26033:9;26029:18;26021:26;;26093:9;26087:4;26083:20;26079:1;26068:9;26064:17;26057:47;26121:131;26247:4;26121:131;:::i;:::-;26113:139;;26011:248;;;:::o;26265:419::-;26431:4;26469:2;26458:9;26454:18;26446:26;;26518:9;26512:4;26508:20;26504:1;26493:9;26489:17;26482:47;26546:131;26672:4;26546:131;:::i;:::-;26538:139;;26436:248;;;:::o;26690:419::-;26856:4;26894:2;26883:9;26879:18;26871:26;;26943:9;26937:4;26933:20;26929:1;26918:9;26914:17;26907:47;26971:131;27097:4;26971:131;:::i;:::-;26963:139;;26861:248;;;:::o;27115:419::-;27281:4;27319:2;27308:9;27304:18;27296:26;;27368:9;27362:4;27358:20;27354:1;27343:9;27339:17;27332:47;27396:131;27522:4;27396:131;:::i;:::-;27388:139;;27286:248;;;:::o;27540:419::-;27706:4;27744:2;27733:9;27729:18;27721:26;;27793:9;27787:4;27783:20;27779:1;27768:9;27764:17;27757:47;27821:131;27947:4;27821:131;:::i;:::-;27813:139;;27711:248;;;:::o;27965:419::-;28131:4;28169:2;28158:9;28154:18;28146:26;;28218:9;28212:4;28208:20;28204:1;28193:9;28189:17;28182:47;28246:131;28372:4;28246:131;:::i;:::-;28238:139;;28136:248;;;:::o;28390:419::-;28556:4;28594:2;28583:9;28579:18;28571:26;;28643:9;28637:4;28633:20;28629:1;28618:9;28614:17;28607:47;28671:131;28797:4;28671:131;:::i;:::-;28663:139;;28561:248;;;:::o;28815:419::-;28981:4;29019:2;29008:9;29004:18;28996:26;;29068:9;29062:4;29058:20;29054:1;29043:9;29039:17;29032:47;29096:131;29222:4;29096:131;:::i;:::-;29088:139;;28986:248;;;:::o;29240:419::-;29406:4;29444:2;29433:9;29429:18;29421:26;;29493:9;29487:4;29483:20;29479:1;29468:9;29464:17;29457:47;29521:131;29647:4;29521:131;:::i;:::-;29513:139;;29411:248;;;:::o;29665:419::-;29831:4;29869:2;29858:9;29854:18;29846:26;;29918:9;29912:4;29908:20;29904:1;29893:9;29889:17;29882:47;29946:131;30072:4;29946:131;:::i;:::-;29938:139;;29836:248;;;:::o;30090:419::-;30256:4;30294:2;30283:9;30279:18;30271:26;;30343:9;30337:4;30333:20;30329:1;30318:9;30314:17;30307:47;30371:131;30497:4;30371:131;:::i;:::-;30363:139;;30261:248;;;:::o;30515:419::-;30681:4;30719:2;30708:9;30704:18;30696:26;;30768:9;30762:4;30758:20;30754:1;30743:9;30739:17;30732:47;30796:131;30922:4;30796:131;:::i;:::-;30788:139;;30686:248;;;:::o;30940:419::-;31106:4;31144:2;31133:9;31129:18;31121:26;;31193:9;31187:4;31183:20;31179:1;31168:9;31164:17;31157:47;31221:131;31347:4;31221:131;:::i;:::-;31213:139;;31111:248;;;:::o;31365:218::-;31456:4;31494:2;31483:9;31479:18;31471:26;;31507:69;31573:1;31562:9;31558:17;31549:6;31507:69;:::i;:::-;31461:122;;;;:::o;31589:222::-;31682:4;31720:2;31709:9;31705:18;31697:26;;31733:71;31801:1;31790:9;31786:17;31777:6;31733:71;:::i;:::-;31687:124;;;;:::o;31817:214::-;31906:4;31944:2;31933:9;31929:18;31921:26;;31957:67;32021:1;32010:9;32006:17;31997:6;31957:67;:::i;:::-;31911:120;;;;:::o;32037:129::-;32071:6;32098:20;;:::i;:::-;32088:30;;32127:33;32155:4;32147:6;32127:33;:::i;:::-;32078:88;;;:::o;32172:75::-;32205:6;32238:2;32232:9;32222:19;;32212:35;:::o;32253:311::-;32330:4;32420:18;32412:6;32409:30;32406:2;;;32442:18;;:::i;:::-;32406:2;32492:4;32484:6;32480:17;32472:25;;32552:4;32546;32542:15;32534:23;;32335:229;;;:::o;32570:309::-;32645:4;32735:18;32727:6;32724:30;32721:2;;;32757:18;;:::i;:::-;32721:2;32807:4;32799:6;32795:17;32787:25;;32867:4;32861;32857:15;32849:23;;32650:229;;;:::o;32885:307::-;32946:4;33036:18;33028:6;33025:30;33022:2;;;33058:18;;:::i;:::-;33022:2;33096:29;33118:6;33096:29;:::i;:::-;33088:37;;33180:4;33174;33170:15;33162:23;;32951:241;;;:::o;33198:308::-;33260:4;33350:18;33342:6;33339:30;33336:2;;;33372:18;;:::i;:::-;33336:2;33410:29;33432:6;33410:29;:::i;:::-;33402:37;;33494:4;33488;33484:15;33476:23;;33265:241;;;:::o;33512:98::-;33563:6;33597:5;33591:12;33581:22;;33570:40;;;:::o;33616:99::-;33668:6;33702:5;33696:12;33686:22;;33675:40;;;:::o;33721:168::-;33804:11;33838:6;33833:3;33826:19;33878:4;33873:3;33869:14;33854:29;;33816:73;;;;:::o;33895:169::-;33979:11;34013:6;34008:3;34001:19;34053:4;34048:3;34044:14;34029:29;;33991:73;;;;:::o;34070:148::-;34172:11;34209:3;34194:18;;34184:34;;;;:::o;34224:242::-;34263:3;34282:19;34299:1;34282:19;:::i;:::-;34277:24;;34315:19;34332:1;34315:19;:::i;:::-;34310:24;;34408:1;34400:6;34396:14;34393:1;34390:21;34387:2;;;34414:18;;:::i;:::-;34387:2;34458:1;34455;34451:9;34444:16;;34267:199;;;;:::o;34472:305::-;34512:3;34531:20;34549:1;34531:20;:::i;:::-;34526:25;;34565:20;34583:1;34565:20;:::i;:::-;34560:25;;34719:1;34651:66;34647:74;34644:1;34641:81;34638:2;;;34725:18;;:::i;:::-;34638:2;34769:1;34766;34762:9;34755:16;;34516:261;;;;:::o;34783:185::-;34823:1;34840:20;34858:1;34840:20;:::i;:::-;34835:25;;34874:20;34892:1;34874:20;:::i;:::-;34869:25;;34913:1;34903:2;;34918:18;;:::i;:::-;34903:2;34960:1;34957;34953:9;34948:14;;34825:143;;;;:::o;34974:348::-;35014:7;35037:20;35055:1;35037:20;:::i;:::-;35032:25;;35071:20;35089:1;35071:20;:::i;:::-;35066:25;;35259:1;35191:66;35187:74;35184:1;35181:81;35176:1;35169:9;35162:17;35158:105;35155:2;;;35266:18;;:::i;:::-;35155:2;35314:1;35311;35307:9;35296:20;;35022:300;;;;:::o;35328:188::-;35367:4;35387:19;35404:1;35387:19;:::i;:::-;35382:24;;35420:19;35437:1;35420:19;:::i;:::-;35415:24;;35458:1;35455;35452:8;35449:2;;;35463:18;;:::i;:::-;35449:2;35508:1;35505;35501:9;35493:17;;35372:144;;;;:::o;35522:191::-;35562:4;35582:20;35600:1;35582:20;:::i;:::-;35577:25;;35616:20;35634:1;35616:20;:::i;:::-;35611:25;;35655:1;35652;35649:8;35646:2;;;35660:18;;:::i;:::-;35646:2;35705:1;35702;35698:9;35690:17;;35567:146;;;;:::o;35719:185::-;35757:4;35777:18;35793:1;35777:18;:::i;:::-;35772:23;;35809:18;35825:1;35809:18;:::i;:::-;35804:23;;35846:1;35843;35840:8;35837:2;;;35851:18;;:::i;:::-;35837:2;35896:1;35893;35889:9;35881:17;;35762:142;;;;:::o;35910:96::-;35947:7;35976:24;35994:5;35976:24;:::i;:::-;35965:35;;35955:51;;;:::o;36012:90::-;36046:7;36089:5;36082:13;36075:21;36064:32;;36054:48;;;:::o;36108:149::-;36144:7;36184:66;36177:5;36173:78;36162:89;;36152:105;;;:::o;36263:89::-;36299:7;36339:6;36332:5;36328:18;36317:29;;36307:45;;;:::o;36358:126::-;36395:7;36435:42;36428:5;36424:54;36413:65;;36403:81;;;:::o;36490:77::-;36527:7;36556:5;36545:16;;36535:32;;;:::o;36573:86::-;36608:7;36648:4;36641:5;36637:16;36626:27;;36616:43;;;:::o;36665:154::-;36749:6;36744:3;36739;36726:30;36811:1;36802:6;36797:3;36793:16;36786:27;36716:103;;;:::o;36825:307::-;36893:1;36903:113;36917:6;36914:1;36911:13;36903:113;;;37002:1;36997:3;36993:11;36987:18;36983:1;36978:3;36974:11;36967:39;36939:2;36936:1;36932:10;36927:15;;36903:113;;;37034:6;37031:1;37028:13;37025:2;;;37114:1;37105:6;37100:3;37096:16;37089:27;37025:2;36874:258;;;;:::o;37138:320::-;37182:6;37219:1;37213:4;37209:12;37199:22;;37266:1;37260:4;37256:12;37287:18;37277:2;;37343:4;37335:6;37331:17;37321:27;;37277:2;37405;37397:6;37394:14;37374:18;37371:38;37368:2;;;37424:18;;:::i;:::-;37368:2;37189:269;;;;:::o;37464:281::-;37547:27;37569:4;37547:27;:::i;:::-;37539:6;37535:40;37677:6;37665:10;37662:22;37641:18;37629:10;37626:34;37623:62;37620:2;;;37688:18;;:::i;:::-;37620:2;37728:10;37724:2;37717:22;37507:238;;;:::o;37751:171::-;37789:3;37812:23;37829:5;37812:23;:::i;:::-;37803:32;;37857:6;37850:5;37847:17;37844:2;;;37867:18;;:::i;:::-;37844:2;37914:1;37907:5;37903:13;37896:20;;37793:129;;;:::o;37928:233::-;37967:3;37990:24;38008:5;37990:24;:::i;:::-;37981:33;;38036:66;38029:5;38026:77;38023:2;;;38106:18;;:::i;:::-;38023:2;38153:1;38146:5;38142:13;38135:20;;37971:190;;;:::o;38167:167::-;38204:3;38227:22;38243:5;38227:22;:::i;:::-;38218:31;;38271:4;38264:5;38261:15;38258:2;;;38279:18;;:::i;:::-;38258:2;38326:1;38319:5;38315:13;38308:20;;38208:126;;;:::o;38340:176::-;38372:1;38389:20;38407:1;38389:20;:::i;:::-;38384:25;;38423:20;38441:1;38423:20;:::i;:::-;38418:25;;38462:1;38452:2;;38467:18;;:::i;:::-;38452:2;38508:1;38505;38501:9;38496:14;;38374:142;;;;:::o;38522:180::-;38570:77;38567:1;38560:88;38667:4;38664:1;38657:15;38691:4;38688:1;38681:15;38708:180;38756:77;38753:1;38746:88;38853:4;38850:1;38843:15;38877:4;38874:1;38867:15;38894:180;38942:77;38939:1;38932:88;39039:4;39036:1;39029:15;39063:4;39060:1;39053:15;39080:180;39128:77;39125:1;39118:88;39225:4;39222:1;39215:15;39249:4;39246:1;39239:15;39266:102;39307:6;39358:2;39354:7;39349:2;39342:5;39338:14;39334:28;39324:38;;39314:54;;;:::o;39374:237::-;39514:34;39510:1;39502:6;39498:14;39491:58;39583:20;39578:2;39570:6;39566:15;39559:45;39480:131;:::o;39617:225::-;39757:34;39753:1;39745:6;39741:14;39734:58;39826:8;39821:2;39813:6;39809:15;39802:33;39723:119;:::o;39848:178::-;39988:30;39984:1;39976:6;39972:14;39965:54;39954:72;:::o;40032:223::-;40172:34;40168:1;40160:6;40156:14;40149:58;40241:6;40236:2;40228:6;40224:15;40217:31;40138:117;:::o;40261:175::-;40401:27;40397:1;40389:6;40385:14;40378:51;40367:69;:::o;40442:168::-;40582:20;40578:1;40570:6;40566:14;40559:44;40548:62;:::o;40616:231::-;40756:34;40752:1;40744:6;40740:14;40733:58;40825:14;40820:2;40812:6;40808:15;40801:39;40722:125;:::o;40853:243::-;40993:34;40989:1;40981:6;40977:14;40970:58;41062:26;41057:2;41049:6;41045:15;41038:51;40959:137;:::o;41102:220::-;41242:34;41238:1;41230:6;41226:14;41219:58;41311:3;41306:2;41298:6;41294:15;41287:28;41208:114;:::o;41328:229::-;41468:34;41464:1;41456:6;41452:14;41445:58;41537:12;41532:2;41524:6;41520:15;41513:37;41434:123;:::o;41563:228::-;41703:34;41699:1;41691:6;41687:14;41680:58;41772:11;41767:2;41759:6;41755:15;41748:36;41669:122;:::o;41797:182::-;41937:34;41933:1;41925:6;41921:14;41914:58;41903:76;:::o;41985:231::-;42125:34;42121:1;42113:6;42109:14;42102:58;42194:14;42189:2;42181:6;42177:15;42170:39;42091:125;:::o;42222:182::-;42362:34;42358:1;42350:6;42346:14;42339:58;42328:76;:::o;42410:228::-;42550:34;42546:1;42538:6;42534:14;42527:58;42619:11;42614:2;42606:6;42602:15;42595:36;42516:122;:::o;42644:234::-;42784:34;42780:1;42772:6;42768:14;42761:58;42853:17;42848:2;42840:6;42836:15;42829:42;42750:128;:::o;42884:220::-;43024:34;43020:1;43012:6;43008:14;43001:58;43093:3;43088:2;43080:6;43076:15;43069:28;42990:114;:::o;43110:236::-;43250:34;43246:1;43238:6;43234:14;43227:58;43319:19;43314:2;43306:6;43302:15;43295:44;43216:130;:::o;43352:171::-;43492:23;43488:1;43480:6;43476:14;43469:47;43458:65;:::o;43529:164::-;43669:16;43665:1;43657:6;43653:14;43646:40;43635:58;:::o;43699:163::-;43839:15;43835:1;43827:6;43823:14;43816:39;43805:57;:::o;43868:177::-;44008:29;44004:1;43996:6;43992:14;43985:53;43974:71;:::o;44051:122::-;44124:24;44142:5;44124:24;:::i;:::-;44117:5;44114:35;44104:2;;44163:1;44160;44153:12;44104:2;44094:79;:::o;44179:116::-;44249:21;44264:5;44249:21;:::i;:::-;44242:5;44239:32;44229:2;;44285:1;44282;44275:12;44229:2;44219:76;:::o;44301:120::-;44373:23;44390:5;44373:23;:::i;:::-;44366:5;44363:34;44353:2;;44411:1;44408;44401:12;44353:2;44343:78;:::o;44427:120::-;44499:23;44516:5;44499:23;:::i;:::-;44492:5;44489:34;44479:2;;44537:1;44534;44527:12;44479:2;44469:78;:::o;44553:122::-;44626:24;44644:5;44626:24;:::i;:::-;44619:5;44616:35;44606:2;;44665:1;44662;44655:12;44606:2;44596:79;:::o;44681:118::-;44752:22;44768:5;44752:22;:::i;:::-;44745:5;44742:33;44732:2;;44789:1;44786;44779:12;44732:2;44722:77;:::o

Swarm Source

ipfs://163e2a048373824e26c94975c69caf063f53ecfc3787e0c8f8ea64e058d2a867
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.