ETH Price: $2,393.87 (-1.45%)

Token

Omni Bears (OMNIBEARS)
 

Overview

Max Total Supply

0 OMNIBEARS

Holders

48

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
3 OMNIBEARS
0xbb3a1ebe3b924ad4e20e731defbdd47d9541c5e8
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:
OmniBears

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-05
*/

// SPDX-License-Identifier: MIT
// File: contracts/interfaces/ILayerZeroUserApplicationConfig.sol



pragma solidity >=0.5.0;

interface ILayerZeroUserApplicationConfig {
    // @notice set the configuration of the LayerZero messaging library of the specified version
    // @param _version - messaging library version
    // @param _chainId - the chainId for the pending config change
    // @param _configType - type of configuration. every messaging library has its own convention.
    // @param _config - configuration in the bytes. can encode arbitrary content.
    function setConfig(uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config) external;

    // @notice set the send() LayerZero messaging library version to _version
    // @param _version - new messaging library version
    function setSendVersion(uint16 _version) external;

    // @notice set the lzReceive() LayerZero messaging library version to _version
    // @param _version - new messaging library version
    function setReceiveVersion(uint16 _version) external;

    // @notice Only when the UA needs to resume the message flow in blocking mode and clear the stored payload
    // @param _srcChainId - the chainId of the source chain
    // @param _srcAddress - the contract address of the source contract at the source chain
    function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external;
}

// File: contracts/interfaces/ILayerZeroEndpoint.sol



pragma solidity >=0.5.0;


interface ILayerZeroEndpoint is ILayerZeroUserApplicationConfig {
    // @notice send a LayerZero message to the specified address at a LayerZero endpoint.
    // @param _dstChainId - the destination chain identifier
    // @param _destination - the address on destination chain (in bytes). address length/format may vary by chains
    // @param _payload - a custom bytes payload to send to the destination contract
    // @param _refundAddress - if the source transaction is cheaper than the amount of value passed, refund the additional amount to this address
    // @param _zroPaymentAddress - the address of the ZRO token holder who would pay for the transaction
    // @param _adapterParams - parameters for custom functionality. e.g. receive airdropped native gas from the relayer on destination
    function send(uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams) external payable;

    // @notice used by the messaging library to publish verified payload
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source contract (as bytes) at the source chain
    // @param _dstAddress - the address on destination chain
    // @param _nonce - the unbound message ordering nonce
    // @param _gasLimit - the gas limit for external contract execution
    // @param _payload - verified payload to send to the destination contract
    function receivePayload(uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload) external;

    // @notice get the inboundNonce of a receiver from a source chain which could be EVM or non-EVM chain
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source chain contract address
    function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (uint64);

    // @notice get the outboundNonce from this source chain which, consequently, is always an EVM
    // @param _srcAddress - the source chain contract address
    function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view returns (uint64);

    // @notice gets a quote in source native gas, for the amount that send() requires to pay for message delivery
    // @param _dstChainId - the destination chain identifier
    // @param _userApplication - the user app address on this EVM chain
    // @param _payload - the custom message to send over LayerZero
    // @param _payInZRO - if false, user app pays the protocol fee in native token
    // @param _adapterParam - parameters for the adapter service, e.g. send some dust native token to dstChain
    function estimateFees(uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam) external view returns (uint nativeFee, uint zroFee);

    // @notice get this Endpoint's immutable source identifier
    function getChainId() external view returns (uint16);

    // @notice the interface to retry failed message on this Endpoint destination
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source chain contract address
    // @param _payload - the payload to be retried
    function retryPayload(uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload) external;

    // @notice query if any STORED payload (message blocking) at the endpoint.
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source chain contract address
    function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (bool);

    // @notice query if the _libraryAddress is valid for sending msgs.
    // @param _userApplication - the user app address on this EVM chain
    function getSendLibraryAddress(address _userApplication) external view returns (address);

    // @notice query if the _libraryAddress is valid for receiving msgs.
    // @param _userApplication - the user app address on this EVM chain
    function getReceiveLibraryAddress(address _userApplication) external view returns (address);

    // @notice query if the non-reentrancy guard for send() is on
    // @return true if the guard is on. false otherwise
    function isSendingPayload() external view returns (bool);

    // @notice query if the non-reentrancy guard for receive() is on
    // @return true if the guard is on. false otherwise
    function isReceivingPayload() external view returns (bool);

    // @notice get the configuration of the LayerZero messaging library of the specified version
    // @param _version - messaging library version
    // @param _chainId - the chainId for the pending config change
    // @param _userApplication - the contract address of the user application
    // @param _configType - type of configuration. every messaging library has its own convention.
    function getConfig(uint16 _version, uint16 _chainId, address _userApplication, uint _configType) external view returns (bytes memory);

    // @notice get the send() LayerZero messaging library version
    // @param _userApplication - the contract address of the user application
    function getSendVersion(address _userApplication) external view returns (uint16);

    // @notice get the lzReceive() LayerZero messaging library version
    // @param _userApplication - the contract address of the user application
    function getReceiveVersion(address _userApplication) external view returns (uint16);
}

// File: contracts/interfaces/ILayerZeroReceiver.sol



pragma solidity >=0.5.0;

interface ILayerZeroReceiver {
    // @notice LayerZero endpoint will invoke this function to deliver the message on the destination
    // @param _srcChainId - the source endpoint identifier
    // @param _srcAddress - the source sending contract address from the source chain
    // @param _nonce - the ordered message nonce
    // @param _payload - the signed payload is the UA bytes has encoded to be sent
    function lzReceive(uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload) external;
}
// File: @openzeppelin/contracts/utils/Strings.sol


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

pragma solidity ^0.8.0;

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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

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

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


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;


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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;


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

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


// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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

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

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

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

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


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;


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

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

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

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


// OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol)

pragma solidity ^0.8.0;








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

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

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

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

        _transfer(from, to, tokenId);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

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

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

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

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

// File: contracts/NonblockingReceiver.sol


pragma solidity ^0.8.6;




abstract contract NonblockingReceiver is Ownable, ILayerZeroReceiver {

    ILayerZeroEndpoint internal endpoint;

    struct FailedMessages {
        uint payloadLength;
        bytes32 payloadHash;
    }

    mapping(uint16 => mapping(bytes => mapping(uint => FailedMessages))) public failedMessages;
    mapping(uint16 => bytes) public trustedRemoteLookup;

    event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload);

    function lzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) external override {
        require(msg.sender == address(endpoint)); // boilerplate! lzReceive must be called by the endpoint for security
        require(_srcAddress.length == trustedRemoteLookup[_srcChainId].length && keccak256(_srcAddress) == keccak256(trustedRemoteLookup[_srcChainId]), 
            "NonblockingReceiver: invalid source sending contract");

        // try-catch all errors/exceptions
        // having failed messages does not block messages passing
        try this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload) {
            // do nothing
        } catch {
            // error / exception
            failedMessages[_srcChainId][_srcAddress][_nonce] = FailedMessages(_payload.length, keccak256(_payload));
            emit MessageFailed(_srcChainId, _srcAddress, _nonce, _payload);
        }
    }

    function onLzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) public {
        // only internal transaction
        require(msg.sender == address(this), "NonblockingReceiver: caller must be Bridge.");

        // handle incoming message
        _LzReceive( _srcChainId, _srcAddress, _nonce, _payload);
    }

    // abstract function
    function _LzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) virtual internal;

    function _lzSend(uint16 _dstChainId, bytes memory _payload, address payable _refundAddress, address _zroPaymentAddress, bytes memory _txParam) internal {
        endpoint.send{value: msg.value}(_dstChainId, trustedRemoteLookup[_dstChainId], _payload, _refundAddress, _zroPaymentAddress, _txParam);
    }

    function retryMessage(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes calldata _payload) external payable {
        // assert there is message to retry
        FailedMessages storage failedMsg = failedMessages[_srcChainId][_srcAddress][_nonce];
        require(failedMsg.payloadHash != bytes32(0), "NonblockingReceiver: no stored message");
        require(_payload.length == failedMsg.payloadLength && keccak256(_payload) == failedMsg.payloadHash, "LayerZero: invalid payload");
        // clear the stored message
        failedMsg.payloadLength = 0;
        failedMsg.payloadHash = bytes32(0);
        // execute the message. revert if it fails again
        this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload);
    }

    function setTrustedRemote(uint16 _chainId, bytes calldata _trustedRemote) external onlyOwner {
        trustedRemoteLookup[_chainId] = _trustedRemote;
    }
}


pragma solidity ^0.8.7;


contract OmniBears is Ownable, ERC721, NonblockingReceiver {
    
    using Strings for uint256;
    address public _owner;
    string private baseURI;
    uint256 nextTokenId = 0;
    uint256 MAX_MINT_ETH = 1000;
    uint256 public mintPrice = 0.045 ether;
    
    string public baseExtension = ".json";

    uint256 public constant MAX_BEARS_PER_WALLET = 3;

    mapping(address => uint256) public publicListMintCounts;

    uint gasForDestinationLzReceive = 350000;

    constructor(string memory baseURI_, address _layerZeroEndpoint) ERC721("Omni Bears", "OMNIBEARS") { 
        _owner = msg.sender;
        endpoint = ILayerZeroEndpoint(_layerZeroEndpoint);
        baseURI = baseURI_;
    }


    // ============ FUNCTION FOR MINTING ============

    // you can choose to mint 1, 2 or 3 NFT
    // first 100 NFTs for free then for 0.045 ETH ( MAX 3 NFT PER WALLET)
    function mint(uint8 numTokens) external payable {
        uint256 numAlreadyMinted = publicListMintCounts[msg.sender];
        require(numAlreadyMinted + numTokens <= MAX_BEARS_PER_WALLET, "3 omni bears max per wallet");
        require(nextTokenId + numTokens <= MAX_MINT_ETH, "Mint exceeds supply");
        if (nextTokenId + numTokens > 100) {
            require(
                mintPrice * numTokens <= msg.value,
                "Incorrect value sent"
            ); 
        }
        for (uint256 i = 0; i < numTokens; i++) {
            _safeMint(msg.sender, ++nextTokenId);
        }
        publicListMintCounts[msg.sender] = numAlreadyMinted + numTokens;
        
    }

    // for donation
    function donate() external payable {
    }


    // ============ FUNCTION FOR TRANSFERING NFT TO OTHER CHAIN ============

    // this function transfers the nft from your address on the 
    // source chain to the same address on the destination chain
    function traverseChains(uint16 _chainId, uint tokenId) public payable {
        require(msg.sender == ownerOf(tokenId), "You must own the token to traverse");
        require(trustedRemoteLookup[_chainId].length > 0, "This chain is currently unavailable for travel");

        // burn NFT, eliminating it from circulation on src chain
        _burn(tokenId);

        // abi.encode() the payload with the values to send
        bytes memory payload = abi.encode(msg.sender, tokenId);

        // encode adapterParams to specify more gas for the destination
        uint16 version = 1;
        bytes memory adapterParams = abi.encodePacked(version, gasForDestinationLzReceive);

        // get the fees we need to pay to LayerZero + Relayer to cover message delivery
        // you will be refunded for extra gas paid
        (uint messageFee, ) = endpoint.estimateFees(_chainId, address(this), payload, false, adapterParams);
        
        require(msg.value >= messageFee, "msg.value not enough to cover messageFee. Send gas for message fees");

        endpoint.send{value: msg.value}(
            _chainId,                           // destination chainId
            trustedRemoteLookup[_chainId],      // destination address of nft contract
            payload,                            // abi.encoded()'ed bytes
            payable(msg.sender),                // refund address
            address(0x0),                       // 'zroPaymentAddress' unused for this
            adapterParams                       // txParameters 
        );
    }  


    // ============ OWNER ONLY FUNCTIOS ============

    // This allows to change base URI
    function setBaseURI(string memory URI) external onlyOwner {
        baseURI = URI;
    }

    function setMintPrice(uint256 _price) external onlyOwner {
        mintPrice = _price;
    }
    function team(uint256 numberOfTokens) external onlyOwner
    {
        for (uint256 i = 0; i < numberOfTokens; i++) {
            _safeMint(msg.sender, ++nextTokenId);
        }
    }

    // This allows the devs to withdraw funds
    function withdraw() public onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }

    // just in case this fixed variable limits us from future integrations
    function setGasForDestinationLzReceive(uint newVal) external onlyOwner {
        gasForDestinationLzReceive = newVal;
    }

    function _LzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) override internal {
        // decode
        (address toAddr, uint tokenId) = abi.decode(_payload, (address, uint));

        // mint the tokens back into existence on destination chain
        _safeMint(toAddr, tokenId);
    }  

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

    function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"address","name":"_layerZeroEndpoint","type":"address"}],"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":false,"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"_nonce","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"MessageFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_BEARS_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"donate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"failedMessages","outputs":[{"internalType":"uint256","name":"payloadLength","type":"uint256"},{"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"numTokens","type":"uint8"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"onLzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"publicListMintCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"retryMessage","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"setGasForDestinationLzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"bytes","name":"_trustedRemote","type":"bytes"}],"name":"setTrustedRemote","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":"numberOfTokens","type":"uint256"}],"name":"team","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"traverseChains","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"trustedRemoteLookup","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600c556103e8600d55669fdf42f6e48000600e556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600f908051906020019062000067929190620002d1565b50620557306011553480156200007c57600080fd5b5060405162005769380380620057698339818101604052810190620000a2919062000416565b6040518060400160405280600a81526020017f4f6d6e69204265617273000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f4f4d4e49424541525300000000000000000000000000000000000000000000008152506200012e620001226200020560201b60201c565b6200020d60201b60201c565b816001908051906020019062000146929190620002d1565b5080600290805190602001906200015f929190620002d1565b50505033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b9080519060200190620001fc929190620002d1565b5050506200064e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002df9062000545565b90600052602060002090601f0160209004810192826200030357600085556200034f565b82601f106200031e57805160ff19168380011785556200034f565b828001600101855582156200034f579182015b828111156200034e57825182559160200191906001019062000331565b5b5090506200035e919062000362565b5090565b5b808211156200037d57600081600090555060010162000363565b5090565b6000620003986200039284620004a5565b6200047c565b905082815260208101848484011115620003b757620003b662000614565b5b620003c48482856200050f565b509392505050565b600081519050620003dd8162000634565b92915050565b600082601f830112620003fb57620003fa6200060f565b5b81516200040d84826020860162000381565b91505092915050565b6000806040838503121562000430576200042f6200061e565b5b600083015167ffffffffffffffff81111562000451576200045062000619565b5b6200045f85828601620003e3565b92505060206200047285828601620003cc565b9150509250929050565b6000620004886200049b565b90506200049682826200057b565b919050565b6000604051905090565b600067ffffffffffffffff821115620004c357620004c2620005e0565b5b620004ce8262000623565b9050602081019050919050565b6000620004e882620004ef565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200052f57808201518184015260208101905062000512565b838111156200053f576000848401525b50505050565b600060028204905060018216806200055e57607f821691505b60208210811415620005755762000574620005b1565b5b50919050565b620005868262000623565b810181811067ffffffffffffffff82111715620005a857620005a7620005e0565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200063f81620004db565b81146200064b57600080fd5b50565b61510b806200065e6000396000f3fe6080604052600436106102035760003560e01c8063715018a611610118578063c6682862116100a0578063e985e9c51161006f578063e985e9c51461073a578063eb8d72b714610777578063ed88c68e146107a0578063f2fde38b146107aa578063f4a0a528146107d357610203565b8063c66828621461069a578063c87b56dd146106c5578063cf89fa0314610702578063d1deba1f1461071e57610203565b8063943fb872116100e7578063943fb872146105c957806395d89b41146105f2578063a22cb4651461061d578063b2bdfa7b14610646578063b88d4fde1461067157610203565b8063715018a61461050c5780637533d788146105235780638da5cb5b146105605780638ee749121461058b57610203565b806324014f2d1161019b57806355f804b31161016a57806355f804b3146104225780636352211e1461044b5780636817c76c146104885780636ecd2306146104b357806370a08231146104cf57610203565b806324014f2d1461037a5780633ccfd60b146103b757806342842e0e146103ce578063559c6466146103f757610203565b8063095ea7b3116101d7578063095ea7b3146102d6578063197ebd53146102ff5780631c37a8221461032857806323b872dd1461035157610203565b80621d35671461020857806301ffc9a71461023157806306fdde031461026e578063081812fc14610299575b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a9190613580565b6107fc565b005b34801561023d57600080fd5b506102586004803603810190610253919061333d565b610a3e565b6040516102659190613ed3565b60405180910390f35b34801561027a57600080fd5b50610283610b20565b6040516102909190613f10565b60405180910390f35b3480156102a557600080fd5b506102c060048036038101906102bb919061365f565b610bb2565b6040516102cd9190613e43565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f891906132fd565b610c37565b005b34801561030b57600080fd5b506103266004803603810190610321919061365f565b610d4f565b005b34801561033457600080fd5b5061034f600480360381019061034a9190613580565b610e0b565b005b34801561035d57600080fd5b50610378600480360381019061037391906131e7565b610e8b565b005b34801561038657600080fd5b506103a1600480360381019061039c919061313a565b610eeb565b6040516103ae91906143d1565b60405180910390f35b3480156103c357600080fd5b506103cc610f03565b005b3480156103da57600080fd5b506103f560048036038101906103f091906131e7565b610fce565b005b34801561040357600080fd5b5061040c610fee565b60405161041991906143d1565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190613397565b610ff3565b005b34801561045757600080fd5b50610472600480360381019061046d919061365f565b611089565b60405161047f9190613e43565b60405180910390f35b34801561049457600080fd5b5061049d61113b565b6040516104aa91906143d1565b60405180910390f35b6104cd60048036038101906104c891906136cc565b611141565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061313a565b61132f565b60405161050391906143d1565b60405180910390f35b34801561051857600080fd5b506105216113e7565b005b34801561052f57600080fd5b5061054a600480360381019061054591906133e0565b61146f565b6040516105579190613eee565b60405180910390f35b34801561056c57600080fd5b5061057561150f565b6040516105829190613e43565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad919061346d565b611538565b6040516105c09291906143ec565b60405180910390f35b3480156105d557600080fd5b506105f060048036038101906105eb919061365f565b61158c565b005b3480156105fe57600080fd5b50610607611612565b6040516106149190613f10565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f91906132bd565b6116a4565b005b34801561065257600080fd5b5061065b6116ba565b6040516106689190613e43565b60405180910390f35b34801561067d57600080fd5b506106986004803603810190610693919061323a565b6116e0565b005b3480156106a657600080fd5b506106af611742565b6040516106bc9190613f10565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e7919061365f565b6117d0565b6040516106f99190613f10565b60405180910390f35b61071c6004803603810190610717919061361f565b61187a565b005b610738600480360381019061073391906134dc565b611b6d565b005b34801561074657600080fd5b50610761600480360381019061075c91906131a7565b611d0d565b60405161076e9190613ed3565b60405180910390f35b34801561078357600080fd5b5061079e6004803603810190610799919061340d565b611da1565b005b6107a8611e4d565b005b3480156107b657600080fd5b506107d160048036038101906107cc919061313a565b611e4f565b005b3480156107df57600080fd5b506107fa60048036038101906107f5919061365f565b611f47565b005b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461085657600080fd5b600960008561ffff1661ffff168152602001908152602001600020805461087c9061472a565b905083511480156108c25750600960008561ffff1661ffff1681526020019081526020016000206040516108b09190613dcf565b60405180910390208380519060200120145b610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f890614192565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b81526004016109409493929190614308565b600060405180830381600087803b15801561095a57600080fd5b505af192505050801561096b575060015b610a37576040518060400160405280825181526020018280519060200120815250600860008661ffff1661ffff168152602001908152602001600020846040516109b59190613db8565b908152602001604051809103902060008467ffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d84848484604051610a2a9493929190614308565b60405180910390a1610a38565b5b50505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b0957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b195750610b1882611fcd565b5b9050919050565b606060018054610b2f9061472a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5b9061472a565b8015610ba85780601f10610b7d57610100808354040283529160200191610ba8565b820191906000526020600020905b815481529060010190602001808311610b8b57829003601f168201915b5050505050905090565b6000610bbd82612037565b610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390614152565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c4282611089565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa906141f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cd26120a3565b73ffffffffffffffffffffffffffffffffffffffff161480610d015750610d0081610cfb6120a3565b611d0d565b5b610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d37906140b2565b60405180910390fd5b610d4a83836120ab565b505050565b610d576120a3565b73ffffffffffffffffffffffffffffffffffffffff16610d7561150f565b73ffffffffffffffffffffffffffffffffffffffff1614610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290614172565b60405180910390fd5b60005b81811015610e0757610df433600c60008154610de99061478d565b919050819055612164565b8080610dff9061478d565b915050610dce565b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090614112565b60405180910390fd5b610e8584848484612182565b50505050565b610e9c610e966120a3565b826121af565b610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290614212565b60405180910390fd5b610ee683838361228d565b505050565b60106020528060005260406000206000915090505481565b610f0b6120a3565b73ffffffffffffffffffffffffffffffffffffffff16610f2961150f565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7690614172565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610fca573d6000803e3d6000fd5b5050565b610fe9838383604051806020016040528060008152506116e0565b505050565b600381565b610ffb6120a3565b73ffffffffffffffffffffffffffffffffffffffff1661101961150f565b73ffffffffffffffffffffffffffffffffffffffff161461106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106690614172565b60405180910390fd5b80600b9080519060200190611085929190612e09565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611129906140f2565b60405180910390fd5b80915050919050565b600e5481565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060038260ff16826111969190614514565b11156111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90613f92565b60405180910390fd5b600d548260ff16600c546111eb9190614514565b111561122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390614072565b60405180910390fd5b60648260ff16600c5461123f9190614514565b111561129957348260ff16600e54611257919061459b565b1115611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90614032565b60405180910390fd5b5b60005b8260ff168110156112d8576112c533600c600081546112ba9061478d565b919050819055612164565b80806112d09061478d565b91505061129c565b508160ff16816112e89190614514565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611397906140d2565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef6120a3565b73ffffffffffffffffffffffffffffffffffffffff1661140d61150f565b73ffffffffffffffffffffffffffffffffffffffff1614611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a90614172565b60405180910390fd5b61146d60006124e9565b565b6009602052806000526040600020600091509050805461148e9061472a565b80601f01602080910402602001604051908101604052809291908181526020018280546114ba9061472a565b80156115075780601f106114dc57610100808354040283529160200191611507565b820191906000526020600020905b8154815290600101906020018083116114ea57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528260005260406000208280516020810182018051848252602083016020850120818352809550505050505060205280600052604060002060009250925050508060000154908060010154905082565b6115946120a3565b73ffffffffffffffffffffffffffffffffffffffff166115b261150f565b73ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90614172565b60405180910390fd5b8060118190555050565b6060600280546116219061472a565b80601f016020809104026020016040519081016040528092919081815260200182805461164d9061472a565b801561169a5780601f1061166f5761010080835404028352916020019161169a565b820191906000526020600020905b81548152906001019060200180831161167d57829003601f168201915b5050505050905090565b6116b66116af6120a3565b83836125ad565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116f16116eb6120a3565b836121af565b611730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172790614212565b60405180910390fd5b61173c8484848461271a565b50505050565b600f805461174f9061472a565b80601f016020809104026020016040519081016040528092919081815260200182805461177b9061472a565b80156117c85780601f1061179d576101008083540402835291602001916117c8565b820191906000526020600020905b8154815290600101906020018083116117ab57829003601f168201915b505050505081565b60606117db82612037565b61181a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611811906141d2565b60405180910390fd5b6000611824612776565b905060008151116118445760405180602001604052806000815250611872565b8061184e84612808565b600f60405160200161186293929190613de6565b6040516020818303038152906040525b915050919050565b61188381611089565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790614052565b60405180910390fd5b6000600960008461ffff1661ffff16815260200190815260200160002080546119189061472a565b90501161195a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195190613ff2565b60405180910390fd5b61196381612969565b60003382604051602001611978929190613eaa565b60405160208183030381529060405290506000600190506000816011546040516020016119a6929190613e17565b60405160208183030381529060405290506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730876000876040518663ffffffff1660e01b8152600401611a1d959493929190614252565b604080518083038186803b158015611a3457600080fd5b505afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c919061368c565b50905080341015611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613f32565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c58031003488600960008b61ffff1661ffff16815260200190815260200160002088336000896040518863ffffffff1660e01b8152600401611b339695949392919061435b565b6000604051808303818588803b158015611b4c57600080fd5b505af1158015611b60573d6000803e3d6000fd5b5050505050505050505050565b6000600860008761ffff1661ffff16815260200190815260200160002085604051611b989190613db8565b908152602001604051809103902060008567ffffffffffffffff16815260200190815260200160002090506000801b81600101541415611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490614232565b60405180910390fd5b806000015483839050148015611c3d575080600101548383604051611c33929190613d9f565b6040518091039020145b611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390614012565b60405180910390fd5b600081600001819055506000801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b8152600401611cd39594939291906142b3565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b50505050505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611da96120a3565b73ffffffffffffffffffffffffffffffffffffffff16611dc761150f565b73ffffffffffffffffffffffffffffffffffffffff1614611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490614172565b60405180910390fd5b8181600960008661ffff1661ffff1681526020019081526020016000209190611e47929190612e8f565b50505050565b565b611e576120a3565b73ffffffffffffffffffffffffffffffffffffffff16611e7561150f565b73ffffffffffffffffffffffffffffffffffffffff1614611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290614172565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290613f72565b60405180910390fd5b611f44816124e9565b50565b611f4f6120a3565b73ffffffffffffffffffffffffffffffffffffffff16611f6d61150f565b73ffffffffffffffffffffffffffffffffffffffff1614611fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fba90614172565b60405180910390fd5b80600e8190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661211e83611089565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61217e828260405180602001604052806000815250612a7a565b5050565b600080828060200190518101906121999190613167565b915091506121a78282612164565b505050505050565b60006121ba82612037565b6121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f090614092565b60405180910390fd5b600061220483611089565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061227357508373ffffffffffffffffffffffffffffffffffffffff1661225b84610bb2565b73ffffffffffffffffffffffffffffffffffffffff16145b8061228457506122838185611d0d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166122ad82611089565b73ffffffffffffffffffffffffffffffffffffffff1614612303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fa906141b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236a90613fb2565b60405180910390fd5b61237e838383612ad5565b6123896000826120ab565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123d991906145f5565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124309190614514565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561261c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261390613fd2565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161270d9190613ed3565b60405180910390a3505050565b61272584848461228d565b61273184848484612ada565b612770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276790613f52565b60405180910390fd5b50505050565b6060600b80546127859061472a565b80601f01602080910402602001604051908101604052809291908181526020018280546127b19061472a565b80156127fe5780601f106127d3576101008083540402835291602001916127fe565b820191906000526020600020905b8154815290600101906020018083116127e157829003601f168201915b5050505050905090565b60606000821415612850576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612964565b600082905060005b6000821461288257808061286b9061478d565b915050600a8261287b919061456a565b9150612858565b60008167ffffffffffffffff81111561289e5761289d6148df565b5b6040519080825280601f01601f1916602001820160405280156128d05781602001600182028036833780820191505090505b5090505b6000851461295d576001826128e991906145f5565b9150600a856128f891906147f2565b60306129049190614514565b60f81b81838151811061291a576129196148b0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612956919061456a565b94506128d4565b8093505050505b919050565b600061297482611089565b905061298281600084612ad5565b61298d6000836120ab565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129dd91906145f5565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612a848383612c71565b612a916000848484612ada565b612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac790613f52565b60405180910390fd5b505050565b505050565b6000612afb8473ffffffffffffffffffffffffffffffffffffffff16612df6565b15612c64578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b246120a3565b8786866040518563ffffffff1660e01b8152600401612b469493929190613e5e565b602060405180830381600087803b158015612b6057600080fd5b505af1925050508015612b9157506040513d601f19601f82011682018060405250810190612b8e919061336a565b60015b612c14573d8060008114612bc1576040519150601f19603f3d011682016040523d82523d6000602084013e612bc6565b606091505b50600081511415612c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0390613f52565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c69565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890614132565b60405180910390fd5b612ced60008383612ad5565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d3d9190614514565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612e159061472a565b90600052602060002090601f016020900481019282612e375760008555612e7e565b82601f10612e5057805160ff1916838001178555612e7e565b82800160010185558215612e7e579182015b82811115612e7d578251825591602001919060010190612e62565b5b509050612e8b9190612f15565b5090565b828054612e9b9061472a565b90600052602060002090601f016020900481019282612ebd5760008555612f04565b82601f10612ed657803560ff1916838001178555612f04565b82800160010185558215612f04579182015b82811115612f03578235825591602001919060010190612ee8565b5b509050612f119190612f15565b5090565b5b80821115612f2e576000816000905550600101612f16565b5090565b6000612f45612f408461443a565b614415565b905082815260208101848484011115612f6157612f6061491d565b5b612f6c8482856146e8565b509392505050565b6000612f87612f828461446b565b614415565b905082815260208101848484011115612fa357612fa261491d565b5b612fae8482856146e8565b509392505050565b600081359050612fc58161501d565b92915050565b600081519050612fda81615034565b92915050565b600081359050612fef8161504b565b92915050565b60008135905061300481615062565b92915050565b60008151905061301981615062565b92915050565b60008083601f84011261303557613034614913565b5b8235905067ffffffffffffffff8111156130525761305161490e565b5b60208301915083600182028301111561306e5761306d614918565b5b9250929050565b600082601f83011261308a57613089614913565b5b813561309a848260208601612f32565b91505092915050565b600082601f8301126130b8576130b7614913565b5b81356130c8848260208601612f74565b91505092915050565b6000813590506130e081615079565b92915050565b6000813590506130f581615090565b92915050565b60008151905061310a81615090565b92915050565b60008135905061311f816150a7565b92915050565b600081359050613134816150be565b92915050565b6000602082840312156131505761314f614927565b5b600061315e84828501612fb6565b91505092915050565b6000806040838503121561317e5761317d614927565b5b600061318c85828601612fcb565b925050602061319d858286016130fb565b9150509250929050565b600080604083850312156131be576131bd614927565b5b60006131cc85828601612fb6565b92505060206131dd85828601612fb6565b9150509250929050565b600080600060608486031215613200576131ff614927565b5b600061320e86828701612fb6565b935050602061321f86828701612fb6565b9250506040613230868287016130e6565b9150509250925092565b6000806000806080858703121561325457613253614927565b5b600061326287828801612fb6565b945050602061327387828801612fb6565b9350506040613284878288016130e6565b925050606085013567ffffffffffffffff8111156132a5576132a4614922565b5b6132b187828801613075565b91505092959194509250565b600080604083850312156132d4576132d3614927565b5b60006132e285828601612fb6565b92505060206132f385828601612fe0565b9150509250929050565b6000806040838503121561331457613313614927565b5b600061332285828601612fb6565b9250506020613333858286016130e6565b9150509250929050565b60006020828403121561335357613352614927565b5b600061336184828501612ff5565b91505092915050565b6000602082840312156133805761337f614927565b5b600061338e8482850161300a565b91505092915050565b6000602082840312156133ad576133ac614927565b5b600082013567ffffffffffffffff8111156133cb576133ca614922565b5b6133d7848285016130a3565b91505092915050565b6000602082840312156133f6576133f5614927565b5b6000613404848285016130d1565b91505092915050565b60008060006040848603121561342657613425614927565b5b6000613434868287016130d1565b935050602084013567ffffffffffffffff81111561345557613454614922565b5b6134618682870161301f565b92509250509250925092565b60008060006060848603121561348657613485614927565b5b6000613494868287016130d1565b935050602084013567ffffffffffffffff8111156134b5576134b4614922565b5b6134c186828701613075565b92505060406134d2868287016130e6565b9150509250925092565b6000806000806000608086880312156134f8576134f7614927565b5b6000613506888289016130d1565b955050602086013567ffffffffffffffff81111561352757613526614922565b5b61353388828901613075565b945050604061354488828901613110565b935050606086013567ffffffffffffffff81111561356557613564614922565b5b6135718882890161301f565b92509250509295509295909350565b6000806000806080858703121561359a57613599614927565b5b60006135a8878288016130d1565b945050602085013567ffffffffffffffff8111156135c9576135c8614922565b5b6135d587828801613075565b93505060406135e687828801613110565b925050606085013567ffffffffffffffff81111561360757613606614922565b5b61361387828801613075565b91505092959194509250565b6000806040838503121561363657613635614927565b5b6000613644858286016130d1565b9250506020613655858286016130e6565b9150509250929050565b60006020828403121561367557613674614927565b5b6000613683848285016130e6565b91505092915050565b600080604083850312156136a3576136a2614927565b5b60006136b1858286016130fb565b92505060206136c2858286016130fb565b9150509250929050565b6000602082840312156136e2576136e1614927565b5b60006136f084828501613125565b91505092915050565b6137028161463b565b82525050565b61371181614629565b82525050565b6137208161464d565b82525050565b61372f81614659565b82525050565b600061374183856144dc565b935061374e8385846146e8565b6137578361492c565b840190509392505050565b600061376e83856144ed565b935061377b8385846146e8565b82840190509392505050565b6000613792826144c6565b61379c81856144dc565b93506137ac8185602086016146f7565b6137b58161492c565b840191505092915050565b60006137cb826144c6565b6137d581856144ed565b93506137e58185602086016146f7565b80840191505092915050565b600081546137fe8161472a565b61380881866144dc565b94506001821660008114613823576001811461383557613868565b60ff1983168652602086019350613868565b61383e8561449c565b60005b8381101561386057815481890152600182019150602081019050613841565b808801955050505b50505092915050565b6000815461387e8161472a565b61388881866144ed565b945060018216600081146138a357600181146138b4576138e7565b60ff198316865281860193506138e7565b6138bd8561449c565b60005b838110156138df578154818901526001820191506020810190506138c0565b838801955050505b50505092915050565b60006138fb826144d1565b61390581856144f8565b93506139158185602086016146f7565b61391e8161492c565b840191505092915050565b6000613934826144d1565b61393e8185614509565b935061394e8185602086016146f7565b80840191505092915050565b600081546139678161472a565b6139718186614509565b9450600182166000811461398c576001811461399d576139d0565b60ff198316865281860193506139d0565b6139a6856144b1565b60005b838110156139c8578154818901526001820191506020810190506139a9565b838801955050505b50505092915050565b60006139e66043836144f8565b91506139f18261494a565b606082019050919050565b6000613a096032836144f8565b9150613a14826149bf565b604082019050919050565b6000613a2c6026836144f8565b9150613a3782614a0e565b604082019050919050565b6000613a4f601b836144f8565b9150613a5a82614a5d565b602082019050919050565b6000613a726024836144f8565b9150613a7d82614a86565b604082019050919050565b6000613a956019836144f8565b9150613aa082614ad5565b602082019050919050565b6000613ab8602e836144f8565b9150613ac382614afe565b604082019050919050565b6000613adb601a836144f8565b9150613ae682614b4d565b602082019050919050565b6000613afe6014836144f8565b9150613b0982614b76565b602082019050919050565b6000613b216022836144f8565b9150613b2c82614b9f565b604082019050919050565b6000613b446013836144f8565b9150613b4f82614bee565b602082019050919050565b6000613b67602c836144f8565b9150613b7282614c17565b604082019050919050565b6000613b8a6038836144f8565b9150613b9582614c66565b604082019050919050565b6000613bad602a836144f8565b9150613bb882614cb5565b604082019050919050565b6000613bd06029836144f8565b9150613bdb82614d04565b604082019050919050565b6000613bf3602b836144f8565b9150613bfe82614d53565b604082019050919050565b6000613c166020836144f8565b9150613c2182614da2565b602082019050919050565b6000613c39602c836144f8565b9150613c4482614dcb565b604082019050919050565b6000613c5c6020836144f8565b9150613c6782614e1a565b602082019050919050565b6000613c7f6034836144f8565b9150613c8a82614e43565b604082019050919050565b6000613ca26029836144f8565b9150613cad82614e92565b604082019050919050565b6000613cc5602f836144f8565b9150613cd082614ee1565b604082019050919050565b6000613ce86021836144f8565b9150613cf382614f30565b604082019050919050565b6000613d0b6031836144f8565b9150613d1682614f7f565b604082019050919050565b6000613d2e6026836144f8565b9150613d3982614fce565b604082019050919050565b613d4d8161468f565b82525050565b613d64613d5f8261468f565b6147d6565b82525050565b613d73816146bd565b82525050565b613d8a613d85826146bd565b6147e8565b82525050565b613d99816146c7565b82525050565b6000613dac828486613762565b91508190509392505050565b6000613dc482846137c0565b915081905092915050565b6000613ddb8284613871565b915081905092915050565b6000613df28286613929565b9150613dfe8285613929565b9150613e0a828461395a565b9150819050949350505050565b6000613e238285613d53565b600282019150613e338284613d79565b6020820191508190509392505050565b6000602082019050613e586000830184613708565b92915050565b6000608082019050613e736000830187613708565b613e806020830186613708565b613e8d6040830185613d6a565b8181036060830152613e9f8184613787565b905095945050505050565b6000604082019050613ebf6000830185613708565b613ecc6020830184613d6a565b9392505050565b6000602082019050613ee86000830184613717565b92915050565b60006020820190508181036000830152613f088184613787565b905092915050565b60006020820190508181036000830152613f2a81846138f0565b905092915050565b60006020820190508181036000830152613f4b816139d9565b9050919050565b60006020820190508181036000830152613f6b816139fc565b9050919050565b60006020820190508181036000830152613f8b81613a1f565b9050919050565b60006020820190508181036000830152613fab81613a42565b9050919050565b60006020820190508181036000830152613fcb81613a65565b9050919050565b60006020820190508181036000830152613feb81613a88565b9050919050565b6000602082019050818103600083015261400b81613aab565b9050919050565b6000602082019050818103600083015261402b81613ace565b9050919050565b6000602082019050818103600083015261404b81613af1565b9050919050565b6000602082019050818103600083015261406b81613b14565b9050919050565b6000602082019050818103600083015261408b81613b37565b9050919050565b600060208201905081810360008301526140ab81613b5a565b9050919050565b600060208201905081810360008301526140cb81613b7d565b9050919050565b600060208201905081810360008301526140eb81613ba0565b9050919050565b6000602082019050818103600083015261410b81613bc3565b9050919050565b6000602082019050818103600083015261412b81613be6565b9050919050565b6000602082019050818103600083015261414b81613c09565b9050919050565b6000602082019050818103600083015261416b81613c2c565b9050919050565b6000602082019050818103600083015261418b81613c4f565b9050919050565b600060208201905081810360008301526141ab81613c72565b9050919050565b600060208201905081810360008301526141cb81613c95565b9050919050565b600060208201905081810360008301526141eb81613cb8565b9050919050565b6000602082019050818103600083015261420b81613cdb565b9050919050565b6000602082019050818103600083015261422b81613cfe565b9050919050565b6000602082019050818103600083015261424b81613d21565b9050919050565b600060a0820190506142676000830188613d44565b6142746020830187613708565b81810360408301526142868186613787565b90506142956060830185613717565b81810360808301526142a78184613787565b90509695505050505050565b60006080820190506142c86000830188613d44565b81810360208301526142da8187613787565b90506142e96040830186613d90565b81810360608301526142fc818486613735565b90509695505050505050565b600060808201905061431d6000830187613d44565b818103602083015261432f8186613787565b905061433e6040830185613d90565b81810360608301526143508184613787565b905095945050505050565b600060c0820190506143706000830189613d44565b818103602083015261438281886137f1565b905081810360408301526143968187613787565b90506143a560608301866136f9565b6143b26080830185613708565b81810360a08301526143c48184613787565b9050979650505050505050565b60006020820190506143e66000830184613d6a565b92915050565b60006040820190506144016000830185613d6a565b61440e6020830184613726565b9392505050565b600061441f614430565b905061442b828261475c565b919050565b6000604051905090565b600067ffffffffffffffff821115614455576144546148df565b5b61445e8261492c565b9050602081019050919050565b600067ffffffffffffffff821115614486576144856148df565b5b61448f8261492c565b9050602081019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061451f826146bd565b915061452a836146bd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561455f5761455e614823565b5b828201905092915050565b6000614575826146bd565b9150614580836146bd565b9250826145905761458f614852565b5b828204905092915050565b60006145a6826146bd565b91506145b1836146bd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145ea576145e9614823565b5b828202905092915050565b6000614600826146bd565b915061460b836146bd565b92508282101561461e5761461d614823565b5b828203905092915050565b60006146348261469d565b9050919050565b60006146468261469d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156147155780820151818401526020810190506146fa565b83811115614724576000848401525b50505050565b6000600282049050600182168061474257607f821691505b6020821081141561475657614755614881565b5b50919050565b6147658261492c565b810181811067ffffffffffffffff82111715614784576147836148df565b5b80604052505050565b6000614798826146bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147cb576147ca614823565b5b600182019050919050565b60006147e18261493d565b9050919050565b6000819050919050565b60006147fd826146bd565b9150614808836146bd565b92508261481857614817614852565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160f01b9050919050565b7f6d73672e76616c7565206e6f7420656e6f75676820746f20636f766572206d6560008201527f73736167654665652e2053656e642067617320666f72206d657373616765206660208201527f6565730000000000000000000000000000000000000000000000000000000000604082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f33206f6d6e69206265617273206d6178207065722077616c6c65740000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c6160008201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b7f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000600082015250565b7f496e636f72726563742076616c75652073656e74000000000000000000000000600082015250565b7f596f75206d757374206f776e2074686520746f6b656e20746f2074726176657260008201527f7365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74206578636565647320737570706c7900000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460008201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f7560008201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60008201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b61502681614629565b811461503157600080fd5b50565b61503d8161463b565b811461504857600080fd5b50565b6150548161464d565b811461505f57600080fd5b50565b61506b81614663565b811461507657600080fd5b50565b6150828161468f565b811461508d57600080fd5b50565b615099816146bd565b81146150a457600080fd5b50565b6150b0816146c7565b81146150bb57600080fd5b50565b6150c7816146db565b81146150d257600080fd5b5056fea2646970667358221220655527ac58de88d6f6723137827253528440ce35075ecd3dd6fbae62b87b0b0664736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd6750000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d615844736b4a486f4a41455639314d463331587769474c386d6f397a366e334259566a445971684b7158796a2f00000000000000000000

Deployed Bytecode

0x6080604052600436106102035760003560e01c8063715018a611610118578063c6682862116100a0578063e985e9c51161006f578063e985e9c51461073a578063eb8d72b714610777578063ed88c68e146107a0578063f2fde38b146107aa578063f4a0a528146107d357610203565b8063c66828621461069a578063c87b56dd146106c5578063cf89fa0314610702578063d1deba1f1461071e57610203565b8063943fb872116100e7578063943fb872146105c957806395d89b41146105f2578063a22cb4651461061d578063b2bdfa7b14610646578063b88d4fde1461067157610203565b8063715018a61461050c5780637533d788146105235780638da5cb5b146105605780638ee749121461058b57610203565b806324014f2d1161019b57806355f804b31161016a57806355f804b3146104225780636352211e1461044b5780636817c76c146104885780636ecd2306146104b357806370a08231146104cf57610203565b806324014f2d1461037a5780633ccfd60b146103b757806342842e0e146103ce578063559c6466146103f757610203565b8063095ea7b3116101d7578063095ea7b3146102d6578063197ebd53146102ff5780631c37a8221461032857806323b872dd1461035157610203565b80621d35671461020857806301ffc9a71461023157806306fdde031461026e578063081812fc14610299575b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a9190613580565b6107fc565b005b34801561023d57600080fd5b506102586004803603810190610253919061333d565b610a3e565b6040516102659190613ed3565b60405180910390f35b34801561027a57600080fd5b50610283610b20565b6040516102909190613f10565b60405180910390f35b3480156102a557600080fd5b506102c060048036038101906102bb919061365f565b610bb2565b6040516102cd9190613e43565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f891906132fd565b610c37565b005b34801561030b57600080fd5b506103266004803603810190610321919061365f565b610d4f565b005b34801561033457600080fd5b5061034f600480360381019061034a9190613580565b610e0b565b005b34801561035d57600080fd5b50610378600480360381019061037391906131e7565b610e8b565b005b34801561038657600080fd5b506103a1600480360381019061039c919061313a565b610eeb565b6040516103ae91906143d1565b60405180910390f35b3480156103c357600080fd5b506103cc610f03565b005b3480156103da57600080fd5b506103f560048036038101906103f091906131e7565b610fce565b005b34801561040357600080fd5b5061040c610fee565b60405161041991906143d1565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190613397565b610ff3565b005b34801561045757600080fd5b50610472600480360381019061046d919061365f565b611089565b60405161047f9190613e43565b60405180910390f35b34801561049457600080fd5b5061049d61113b565b6040516104aa91906143d1565b60405180910390f35b6104cd60048036038101906104c891906136cc565b611141565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061313a565b61132f565b60405161050391906143d1565b60405180910390f35b34801561051857600080fd5b506105216113e7565b005b34801561052f57600080fd5b5061054a600480360381019061054591906133e0565b61146f565b6040516105579190613eee565b60405180910390f35b34801561056c57600080fd5b5061057561150f565b6040516105829190613e43565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad919061346d565b611538565b6040516105c09291906143ec565b60405180910390f35b3480156105d557600080fd5b506105f060048036038101906105eb919061365f565b61158c565b005b3480156105fe57600080fd5b50610607611612565b6040516106149190613f10565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f91906132bd565b6116a4565b005b34801561065257600080fd5b5061065b6116ba565b6040516106689190613e43565b60405180910390f35b34801561067d57600080fd5b506106986004803603810190610693919061323a565b6116e0565b005b3480156106a657600080fd5b506106af611742565b6040516106bc9190613f10565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e7919061365f565b6117d0565b6040516106f99190613f10565b60405180910390f35b61071c6004803603810190610717919061361f565b61187a565b005b610738600480360381019061073391906134dc565b611b6d565b005b34801561074657600080fd5b50610761600480360381019061075c91906131a7565b611d0d565b60405161076e9190613ed3565b60405180910390f35b34801561078357600080fd5b5061079e6004803603810190610799919061340d565b611da1565b005b6107a8611e4d565b005b3480156107b657600080fd5b506107d160048036038101906107cc919061313a565b611e4f565b005b3480156107df57600080fd5b506107fa60048036038101906107f5919061365f565b611f47565b005b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461085657600080fd5b600960008561ffff1661ffff168152602001908152602001600020805461087c9061472a565b905083511480156108c25750600960008561ffff1661ffff1681526020019081526020016000206040516108b09190613dcf565b60405180910390208380519060200120145b610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f890614192565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b81526004016109409493929190614308565b600060405180830381600087803b15801561095a57600080fd5b505af192505050801561096b575060015b610a37576040518060400160405280825181526020018280519060200120815250600860008661ffff1661ffff168152602001908152602001600020846040516109b59190613db8565b908152602001604051809103902060008467ffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d84848484604051610a2a9493929190614308565b60405180910390a1610a38565b5b50505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b0957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b195750610b1882611fcd565b5b9050919050565b606060018054610b2f9061472a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5b9061472a565b8015610ba85780601f10610b7d57610100808354040283529160200191610ba8565b820191906000526020600020905b815481529060010190602001808311610b8b57829003601f168201915b5050505050905090565b6000610bbd82612037565b610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390614152565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c4282611089565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caa906141f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cd26120a3565b73ffffffffffffffffffffffffffffffffffffffff161480610d015750610d0081610cfb6120a3565b611d0d565b5b610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d37906140b2565b60405180910390fd5b610d4a83836120ab565b505050565b610d576120a3565b73ffffffffffffffffffffffffffffffffffffffff16610d7561150f565b73ffffffffffffffffffffffffffffffffffffffff1614610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290614172565b60405180910390fd5b60005b81811015610e0757610df433600c60008154610de99061478d565b919050819055612164565b8080610dff9061478d565b915050610dce565b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090614112565b60405180910390fd5b610e8584848484612182565b50505050565b610e9c610e966120a3565b826121af565b610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290614212565b60405180910390fd5b610ee683838361228d565b505050565b60106020528060005260406000206000915090505481565b610f0b6120a3565b73ffffffffffffffffffffffffffffffffffffffff16610f2961150f565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7690614172565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610fca573d6000803e3d6000fd5b5050565b610fe9838383604051806020016040528060008152506116e0565b505050565b600381565b610ffb6120a3565b73ffffffffffffffffffffffffffffffffffffffff1661101961150f565b73ffffffffffffffffffffffffffffffffffffffff161461106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106690614172565b60405180910390fd5b80600b9080519060200190611085929190612e09565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611129906140f2565b60405180910390fd5b80915050919050565b600e5481565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060038260ff16826111969190614514565b11156111d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ce90613f92565b60405180910390fd5b600d548260ff16600c546111eb9190614514565b111561122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390614072565b60405180910390fd5b60648260ff16600c5461123f9190614514565b111561129957348260ff16600e54611257919061459b565b1115611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90614032565b60405180910390fd5b5b60005b8260ff168110156112d8576112c533600c600081546112ba9061478d565b919050819055612164565b80806112d09061478d565b91505061129c565b508160ff16816112e89190614514565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611397906140d2565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef6120a3565b73ffffffffffffffffffffffffffffffffffffffff1661140d61150f565b73ffffffffffffffffffffffffffffffffffffffff1614611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a90614172565b60405180910390fd5b61146d60006124e9565b565b6009602052806000526040600020600091509050805461148e9061472a565b80601f01602080910402602001604051908101604052809291908181526020018280546114ba9061472a565b80156115075780601f106114dc57610100808354040283529160200191611507565b820191906000526020600020905b8154815290600101906020018083116114ea57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528260005260406000208280516020810182018051848252602083016020850120818352809550505050505060205280600052604060002060009250925050508060000154908060010154905082565b6115946120a3565b73ffffffffffffffffffffffffffffffffffffffff166115b261150f565b73ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90614172565b60405180910390fd5b8060118190555050565b6060600280546116219061472a565b80601f016020809104026020016040519081016040528092919081815260200182805461164d9061472a565b801561169a5780601f1061166f5761010080835404028352916020019161169a565b820191906000526020600020905b81548152906001019060200180831161167d57829003601f168201915b5050505050905090565b6116b66116af6120a3565b83836125ad565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116f16116eb6120a3565b836121af565b611730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172790614212565b60405180910390fd5b61173c8484848461271a565b50505050565b600f805461174f9061472a565b80601f016020809104026020016040519081016040528092919081815260200182805461177b9061472a565b80156117c85780601f1061179d576101008083540402835291602001916117c8565b820191906000526020600020905b8154815290600101906020018083116117ab57829003601f168201915b505050505081565b60606117db82612037565b61181a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611811906141d2565b60405180910390fd5b6000611824612776565b905060008151116118445760405180602001604052806000815250611872565b8061184e84612808565b600f60405160200161186293929190613de6565b6040516020818303038152906040525b915050919050565b61188381611089565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790614052565b60405180910390fd5b6000600960008461ffff1661ffff16815260200190815260200160002080546119189061472a565b90501161195a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195190613ff2565b60405180910390fd5b61196381612969565b60003382604051602001611978929190613eaa565b60405160208183030381529060405290506000600190506000816011546040516020016119a6929190613e17565b60405160208183030381529060405290506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730876000876040518663ffffffff1660e01b8152600401611a1d959493929190614252565b604080518083038186803b158015611a3457600080fd5b505afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c919061368c565b50905080341015611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613f32565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c58031003488600960008b61ffff1661ffff16815260200190815260200160002088336000896040518863ffffffff1660e01b8152600401611b339695949392919061435b565b6000604051808303818588803b158015611b4c57600080fd5b505af1158015611b60573d6000803e3d6000fd5b5050505050505050505050565b6000600860008761ffff1661ffff16815260200190815260200160002085604051611b989190613db8565b908152602001604051809103902060008567ffffffffffffffff16815260200190815260200160002090506000801b81600101541415611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490614232565b60405180910390fd5b806000015483839050148015611c3d575080600101548383604051611c33929190613d9f565b6040518091039020145b611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390614012565b60405180910390fd5b600081600001819055506000801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b8152600401611cd39594939291906142b3565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b50505050505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611da96120a3565b73ffffffffffffffffffffffffffffffffffffffff16611dc761150f565b73ffffffffffffffffffffffffffffffffffffffff1614611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1490614172565b60405180910390fd5b8181600960008661ffff1661ffff1681526020019081526020016000209190611e47929190612e8f565b50505050565b565b611e576120a3565b73ffffffffffffffffffffffffffffffffffffffff16611e7561150f565b73ffffffffffffffffffffffffffffffffffffffff1614611ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec290614172565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3290613f72565b60405180910390fd5b611f44816124e9565b50565b611f4f6120a3565b73ffffffffffffffffffffffffffffffffffffffff16611f6d61150f565b73ffffffffffffffffffffffffffffffffffffffff1614611fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fba90614172565b60405180910390fd5b80600e8190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661211e83611089565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61217e828260405180602001604052806000815250612a7a565b5050565b600080828060200190518101906121999190613167565b915091506121a78282612164565b505050505050565b60006121ba82612037565b6121f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f090614092565b60405180910390fd5b600061220483611089565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061227357508373ffffffffffffffffffffffffffffffffffffffff1661225b84610bb2565b73ffffffffffffffffffffffffffffffffffffffff16145b8061228457506122838185611d0d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166122ad82611089565b73ffffffffffffffffffffffffffffffffffffffff1614612303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fa906141b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236a90613fb2565b60405180910390fd5b61237e838383612ad5565b6123896000826120ab565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123d991906145f5565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124309190614514565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561261c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261390613fd2565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161270d9190613ed3565b60405180910390a3505050565b61272584848461228d565b61273184848484612ada565b612770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276790613f52565b60405180910390fd5b50505050565b6060600b80546127859061472a565b80601f01602080910402602001604051908101604052809291908181526020018280546127b19061472a565b80156127fe5780601f106127d3576101008083540402835291602001916127fe565b820191906000526020600020905b8154815290600101906020018083116127e157829003601f168201915b5050505050905090565b60606000821415612850576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612964565b600082905060005b6000821461288257808061286b9061478d565b915050600a8261287b919061456a565b9150612858565b60008167ffffffffffffffff81111561289e5761289d6148df565b5b6040519080825280601f01601f1916602001820160405280156128d05781602001600182028036833780820191505090505b5090505b6000851461295d576001826128e991906145f5565b9150600a856128f891906147f2565b60306129049190614514565b60f81b81838151811061291a576129196148b0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612956919061456a565b94506128d4565b8093505050505b919050565b600061297482611089565b905061298281600084612ad5565b61298d6000836120ab565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129dd91906145f5565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612a848383612c71565b612a916000848484612ada565b612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac790613f52565b60405180910390fd5b505050565b505050565b6000612afb8473ffffffffffffffffffffffffffffffffffffffff16612df6565b15612c64578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b246120a3565b8786866040518563ffffffff1660e01b8152600401612b469493929190613e5e565b602060405180830381600087803b158015612b6057600080fd5b505af1925050508015612b9157506040513d601f19601f82011682018060405250810190612b8e919061336a565b60015b612c14573d8060008114612bc1576040519150601f19603f3d011682016040523d82523d6000602084013e612bc6565b606091505b50600081511415612c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0390613f52565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c69565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890614132565b60405180910390fd5b612ced60008383612ad5565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d3d9190614514565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612e159061472a565b90600052602060002090601f016020900481019282612e375760008555612e7e565b82601f10612e5057805160ff1916838001178555612e7e565b82800160010185558215612e7e579182015b82811115612e7d578251825591602001919060010190612e62565b5b509050612e8b9190612f15565b5090565b828054612e9b9061472a565b90600052602060002090601f016020900481019282612ebd5760008555612f04565b82601f10612ed657803560ff1916838001178555612f04565b82800160010185558215612f04579182015b82811115612f03578235825591602001919060010190612ee8565b5b509050612f119190612f15565b5090565b5b80821115612f2e576000816000905550600101612f16565b5090565b6000612f45612f408461443a565b614415565b905082815260208101848484011115612f6157612f6061491d565b5b612f6c8482856146e8565b509392505050565b6000612f87612f828461446b565b614415565b905082815260208101848484011115612fa357612fa261491d565b5b612fae8482856146e8565b509392505050565b600081359050612fc58161501d565b92915050565b600081519050612fda81615034565b92915050565b600081359050612fef8161504b565b92915050565b60008135905061300481615062565b92915050565b60008151905061301981615062565b92915050565b60008083601f84011261303557613034614913565b5b8235905067ffffffffffffffff8111156130525761305161490e565b5b60208301915083600182028301111561306e5761306d614918565b5b9250929050565b600082601f83011261308a57613089614913565b5b813561309a848260208601612f32565b91505092915050565b600082601f8301126130b8576130b7614913565b5b81356130c8848260208601612f74565b91505092915050565b6000813590506130e081615079565b92915050565b6000813590506130f581615090565b92915050565b60008151905061310a81615090565b92915050565b60008135905061311f816150a7565b92915050565b600081359050613134816150be565b92915050565b6000602082840312156131505761314f614927565b5b600061315e84828501612fb6565b91505092915050565b6000806040838503121561317e5761317d614927565b5b600061318c85828601612fcb565b925050602061319d858286016130fb565b9150509250929050565b600080604083850312156131be576131bd614927565b5b60006131cc85828601612fb6565b92505060206131dd85828601612fb6565b9150509250929050565b600080600060608486031215613200576131ff614927565b5b600061320e86828701612fb6565b935050602061321f86828701612fb6565b9250506040613230868287016130e6565b9150509250925092565b6000806000806080858703121561325457613253614927565b5b600061326287828801612fb6565b945050602061327387828801612fb6565b9350506040613284878288016130e6565b925050606085013567ffffffffffffffff8111156132a5576132a4614922565b5b6132b187828801613075565b91505092959194509250565b600080604083850312156132d4576132d3614927565b5b60006132e285828601612fb6565b92505060206132f385828601612fe0565b9150509250929050565b6000806040838503121561331457613313614927565b5b600061332285828601612fb6565b9250506020613333858286016130e6565b9150509250929050565b60006020828403121561335357613352614927565b5b600061336184828501612ff5565b91505092915050565b6000602082840312156133805761337f614927565b5b600061338e8482850161300a565b91505092915050565b6000602082840312156133ad576133ac614927565b5b600082013567ffffffffffffffff8111156133cb576133ca614922565b5b6133d7848285016130a3565b91505092915050565b6000602082840312156133f6576133f5614927565b5b6000613404848285016130d1565b91505092915050565b60008060006040848603121561342657613425614927565b5b6000613434868287016130d1565b935050602084013567ffffffffffffffff81111561345557613454614922565b5b6134618682870161301f565b92509250509250925092565b60008060006060848603121561348657613485614927565b5b6000613494868287016130d1565b935050602084013567ffffffffffffffff8111156134b5576134b4614922565b5b6134c186828701613075565b92505060406134d2868287016130e6565b9150509250925092565b6000806000806000608086880312156134f8576134f7614927565b5b6000613506888289016130d1565b955050602086013567ffffffffffffffff81111561352757613526614922565b5b61353388828901613075565b945050604061354488828901613110565b935050606086013567ffffffffffffffff81111561356557613564614922565b5b6135718882890161301f565b92509250509295509295909350565b6000806000806080858703121561359a57613599614927565b5b60006135a8878288016130d1565b945050602085013567ffffffffffffffff8111156135c9576135c8614922565b5b6135d587828801613075565b93505060406135e687828801613110565b925050606085013567ffffffffffffffff81111561360757613606614922565b5b61361387828801613075565b91505092959194509250565b6000806040838503121561363657613635614927565b5b6000613644858286016130d1565b9250506020613655858286016130e6565b9150509250929050565b60006020828403121561367557613674614927565b5b6000613683848285016130e6565b91505092915050565b600080604083850312156136a3576136a2614927565b5b60006136b1858286016130fb565b92505060206136c2858286016130fb565b9150509250929050565b6000602082840312156136e2576136e1614927565b5b60006136f084828501613125565b91505092915050565b6137028161463b565b82525050565b61371181614629565b82525050565b6137208161464d565b82525050565b61372f81614659565b82525050565b600061374183856144dc565b935061374e8385846146e8565b6137578361492c565b840190509392505050565b600061376e83856144ed565b935061377b8385846146e8565b82840190509392505050565b6000613792826144c6565b61379c81856144dc565b93506137ac8185602086016146f7565b6137b58161492c565b840191505092915050565b60006137cb826144c6565b6137d581856144ed565b93506137e58185602086016146f7565b80840191505092915050565b600081546137fe8161472a565b61380881866144dc565b94506001821660008114613823576001811461383557613868565b60ff1983168652602086019350613868565b61383e8561449c565b60005b8381101561386057815481890152600182019150602081019050613841565b808801955050505b50505092915050565b6000815461387e8161472a565b61388881866144ed565b945060018216600081146138a357600181146138b4576138e7565b60ff198316865281860193506138e7565b6138bd8561449c565b60005b838110156138df578154818901526001820191506020810190506138c0565b838801955050505b50505092915050565b60006138fb826144d1565b61390581856144f8565b93506139158185602086016146f7565b61391e8161492c565b840191505092915050565b6000613934826144d1565b61393e8185614509565b935061394e8185602086016146f7565b80840191505092915050565b600081546139678161472a565b6139718186614509565b9450600182166000811461398c576001811461399d576139d0565b60ff198316865281860193506139d0565b6139a6856144b1565b60005b838110156139c8578154818901526001820191506020810190506139a9565b838801955050505b50505092915050565b60006139e66043836144f8565b91506139f18261494a565b606082019050919050565b6000613a096032836144f8565b9150613a14826149bf565b604082019050919050565b6000613a2c6026836144f8565b9150613a3782614a0e565b604082019050919050565b6000613a4f601b836144f8565b9150613a5a82614a5d565b602082019050919050565b6000613a726024836144f8565b9150613a7d82614a86565b604082019050919050565b6000613a956019836144f8565b9150613aa082614ad5565b602082019050919050565b6000613ab8602e836144f8565b9150613ac382614afe565b604082019050919050565b6000613adb601a836144f8565b9150613ae682614b4d565b602082019050919050565b6000613afe6014836144f8565b9150613b0982614b76565b602082019050919050565b6000613b216022836144f8565b9150613b2c82614b9f565b604082019050919050565b6000613b446013836144f8565b9150613b4f82614bee565b602082019050919050565b6000613b67602c836144f8565b9150613b7282614c17565b604082019050919050565b6000613b8a6038836144f8565b9150613b9582614c66565b604082019050919050565b6000613bad602a836144f8565b9150613bb882614cb5565b604082019050919050565b6000613bd06029836144f8565b9150613bdb82614d04565b604082019050919050565b6000613bf3602b836144f8565b9150613bfe82614d53565b604082019050919050565b6000613c166020836144f8565b9150613c2182614da2565b602082019050919050565b6000613c39602c836144f8565b9150613c4482614dcb565b604082019050919050565b6000613c5c6020836144f8565b9150613c6782614e1a565b602082019050919050565b6000613c7f6034836144f8565b9150613c8a82614e43565b604082019050919050565b6000613ca26029836144f8565b9150613cad82614e92565b604082019050919050565b6000613cc5602f836144f8565b9150613cd082614ee1565b604082019050919050565b6000613ce86021836144f8565b9150613cf382614f30565b604082019050919050565b6000613d0b6031836144f8565b9150613d1682614f7f565b604082019050919050565b6000613d2e6026836144f8565b9150613d3982614fce565b604082019050919050565b613d4d8161468f565b82525050565b613d64613d5f8261468f565b6147d6565b82525050565b613d73816146bd565b82525050565b613d8a613d85826146bd565b6147e8565b82525050565b613d99816146c7565b82525050565b6000613dac828486613762565b91508190509392505050565b6000613dc482846137c0565b915081905092915050565b6000613ddb8284613871565b915081905092915050565b6000613df28286613929565b9150613dfe8285613929565b9150613e0a828461395a565b9150819050949350505050565b6000613e238285613d53565b600282019150613e338284613d79565b6020820191508190509392505050565b6000602082019050613e586000830184613708565b92915050565b6000608082019050613e736000830187613708565b613e806020830186613708565b613e8d6040830185613d6a565b8181036060830152613e9f8184613787565b905095945050505050565b6000604082019050613ebf6000830185613708565b613ecc6020830184613d6a565b9392505050565b6000602082019050613ee86000830184613717565b92915050565b60006020820190508181036000830152613f088184613787565b905092915050565b60006020820190508181036000830152613f2a81846138f0565b905092915050565b60006020820190508181036000830152613f4b816139d9565b9050919050565b60006020820190508181036000830152613f6b816139fc565b9050919050565b60006020820190508181036000830152613f8b81613a1f565b9050919050565b60006020820190508181036000830152613fab81613a42565b9050919050565b60006020820190508181036000830152613fcb81613a65565b9050919050565b60006020820190508181036000830152613feb81613a88565b9050919050565b6000602082019050818103600083015261400b81613aab565b9050919050565b6000602082019050818103600083015261402b81613ace565b9050919050565b6000602082019050818103600083015261404b81613af1565b9050919050565b6000602082019050818103600083015261406b81613b14565b9050919050565b6000602082019050818103600083015261408b81613b37565b9050919050565b600060208201905081810360008301526140ab81613b5a565b9050919050565b600060208201905081810360008301526140cb81613b7d565b9050919050565b600060208201905081810360008301526140eb81613ba0565b9050919050565b6000602082019050818103600083015261410b81613bc3565b9050919050565b6000602082019050818103600083015261412b81613be6565b9050919050565b6000602082019050818103600083015261414b81613c09565b9050919050565b6000602082019050818103600083015261416b81613c2c565b9050919050565b6000602082019050818103600083015261418b81613c4f565b9050919050565b600060208201905081810360008301526141ab81613c72565b9050919050565b600060208201905081810360008301526141cb81613c95565b9050919050565b600060208201905081810360008301526141eb81613cb8565b9050919050565b6000602082019050818103600083015261420b81613cdb565b9050919050565b6000602082019050818103600083015261422b81613cfe565b9050919050565b6000602082019050818103600083015261424b81613d21565b9050919050565b600060a0820190506142676000830188613d44565b6142746020830187613708565b81810360408301526142868186613787565b90506142956060830185613717565b81810360808301526142a78184613787565b90509695505050505050565b60006080820190506142c86000830188613d44565b81810360208301526142da8187613787565b90506142e96040830186613d90565b81810360608301526142fc818486613735565b90509695505050505050565b600060808201905061431d6000830187613d44565b818103602083015261432f8186613787565b905061433e6040830185613d90565b81810360608301526143508184613787565b905095945050505050565b600060c0820190506143706000830189613d44565b818103602083015261438281886137f1565b905081810360408301526143968187613787565b90506143a560608301866136f9565b6143b26080830185613708565b81810360a08301526143c48184613787565b9050979650505050505050565b60006020820190506143e66000830184613d6a565b92915050565b60006040820190506144016000830185613d6a565b61440e6020830184613726565b9392505050565b600061441f614430565b905061442b828261475c565b919050565b6000604051905090565b600067ffffffffffffffff821115614455576144546148df565b5b61445e8261492c565b9050602081019050919050565b600067ffffffffffffffff821115614486576144856148df565b5b61448f8261492c565b9050602081019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061451f826146bd565b915061452a836146bd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561455f5761455e614823565b5b828201905092915050565b6000614575826146bd565b9150614580836146bd565b9250826145905761458f614852565b5b828204905092915050565b60006145a6826146bd565b91506145b1836146bd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145ea576145e9614823565b5b828202905092915050565b6000614600826146bd565b915061460b836146bd565b92508282101561461e5761461d614823565b5b828203905092915050565b60006146348261469d565b9050919050565b60006146468261469d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156147155780820151818401526020810190506146fa565b83811115614724576000848401525b50505050565b6000600282049050600182168061474257607f821691505b6020821081141561475657614755614881565b5b50919050565b6147658261492c565b810181811067ffffffffffffffff82111715614784576147836148df565b5b80604052505050565b6000614798826146bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147cb576147ca614823565b5b600182019050919050565b60006147e18261493d565b9050919050565b6000819050919050565b60006147fd826146bd565b9150614808836146bd565b92508261481857614817614852565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160f01b9050919050565b7f6d73672e76616c7565206e6f7420656e6f75676820746f20636f766572206d6560008201527f73736167654665652e2053656e642067617320666f72206d657373616765206660208201527f6565730000000000000000000000000000000000000000000000000000000000604082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f33206f6d6e69206265617273206d6178207065722077616c6c65740000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c6160008201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b7f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000600082015250565b7f496e636f72726563742076616c75652073656e74000000000000000000000000600082015250565b7f596f75206d757374206f776e2074686520746f6b656e20746f2074726176657260008201527f7365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74206578636565647320737570706c7900000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460008201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f7560008201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60008201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b61502681614629565b811461503157600080fd5b50565b61503d8161463b565b811461504857600080fd5b50565b6150548161464d565b811461505f57600080fd5b50565b61506b81614663565b811461507657600080fd5b50565b6150828161468f565b811461508d57600080fd5b50565b615099816146bd565b81146150a457600080fd5b50565b6150b0816146c7565b81146150bb57600080fd5b50565b6150c7816146db565b81146150d257600080fd5b5056fea2646970667358221220655527ac58de88d6f6723137827253528440ce35075ecd3dd6fbae62b87b0b0664736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd6750000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d615844736b4a486f4a41455639314d463331587769474c386d6f397a366e334259566a445971684b7158796a2f00000000000000000000

-----Decoded View---------------
Arg [0] : baseURI_ (string): ipfs://QmaXDskJHoJAEV91MF31XwiGL8mo9z6n3BYVjDYqhKqXyj/
Arg [1] : _layerZeroEndpoint (address): 0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [3] : 697066733a2f2f516d615844736b4a486f4a41455639314d463331587769474c
Arg [4] : 386d6f397a366e334259566a445971684b7158796a2f00000000000000000000


Deployed Bytecode Sourcemap

47266:5469:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44515:949;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31588:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32533:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34092:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33615:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51051:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45472:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34842:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47645:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51294:143;;;;;;;;;;;;;:::i;:::-;;35252:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47588:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50853:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32227:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47491:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48171:697;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31957:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12576:103;;;;;;;;;;;;;:::i;:::-;;44357:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11925:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44260:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;51521:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32702:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34385:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47370:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35508:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47542:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52110:622;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49162:1584;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46304:758;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34611:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47070:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48897:43;;;:::i;:::-;;12834:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50951:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44515:949;44677:8;;;;;;;;;;;44655:31;;:10;:31;;;44647:40;;;;;;44798:19;:32;44818:11;44798:32;;;;;;;;;;;;;;;:39;;;;;:::i;:::-;;;44776:11;:18;:61;:134;;;;;44877:19;:32;44897:11;44877:32;;;;;;;;;;;;;;;44867:43;;;;;;:::i;:::-;;;;;;;;44851:11;44841:22;;;;;;:69;44776:134;44768:213;;;;;;;;;;;;:::i;:::-;;;;;;;;;45109:4;:16;;;45126:11;45139;45152:6;45160:8;45109:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45105:352;;45316:52;;;;;;;;45331:8;:15;45316:52;;;;45358:8;45348:19;;;;;;45316:52;;;45265:14;:27;45280:11;45265:27;;;;;;;;;;;;;;;45293:11;45265:40;;;;;;:::i;:::-;;;;;;;;;;;;;:48;45306:6;45265:48;;;;;;;;;;;;;:103;;;;;;;;;;;;;;;;;;;45388:57;45402:11;45415;45428:6;45436:8;45388:57;;;;;;;;;:::i;:::-;;;;;;;;45105:352;;;;44515:949;;;;:::o;31588:305::-;31690:4;31742:25;31727:40;;;:11;:40;;;;:105;;;;31799:33;31784:48;;;:11;:48;;;;31727:105;:158;;;;31849:36;31873:11;31849:23;:36::i;:::-;31727:158;31707:178;;31588:305;;;:::o;32533:100::-;32587:13;32620:5;32613:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32533:100;:::o;34092:221::-;34168:7;34196:16;34204:7;34196;:16::i;:::-;34188:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34281:15;:24;34297:7;34281:24;;;;;;;;;;;;;;;;;;;;;34274:31;;34092:221;;;:::o;33615:411::-;33696:13;33712:23;33727:7;33712:14;:23::i;:::-;33696:39;;33760:5;33754:11;;:2;:11;;;;33746:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;33854:5;33838:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;33863:37;33880:5;33887:12;:10;:12::i;:::-;33863:16;:37::i;:::-;33838:62;33816:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;33997:21;34006:2;34010:7;33997:8;:21::i;:::-;33685:341;33615:411;;:::o;51051:188::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51129:9:::1;51124:108;51148:14;51144:1;:18;51124:108;;;51184:36;51194:10;51208:11;;51206:13;;;;;:::i;:::-;;;;;;;51184:9;:36::i;:::-;51164:3;;;;;:::i;:::-;;;;51124:108;;;;51051:188:::0;:::o;45472:356::-;45663:4;45641:27;;:10;:27;;;45633:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;45765:55;45777:11;45790;45803:6;45811:8;45765:10;:55::i;:::-;45472:356;;;;:::o;34842:339::-;35037:41;35056:12;:10;:12::i;:::-;35070:7;35037:18;:41::i;:::-;35029:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;35145:28;35155:4;35161:2;35165:7;35145:9;:28::i;:::-;34842:339;;;:::o;47645:55::-;;;;;;;;;;;;;;;;;:::o;51294:143::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51342:15:::1;51360:21;51342:39;;51400:10;51392:28;;:37;51421:7;51392:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;51331:106;51294:143::o:0;35252:185::-;35390:39;35407:4;35413:2;35417:7;35390:39;;;;;;;;;;;;:16;:39::i;:::-;35252:185;;;:::o;47588:48::-;47635:1;47588:48;:::o;50853:90::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50932:3:::1;50922:7;:13;;;;;;;;;;;;:::i;:::-;;50853:90:::0;:::o;32227:239::-;32299:7;32319:13;32335:7;:16;32343:7;32335:16;;;;;;;;;;;;;;;;;;;;;32319:32;;32387:1;32370:19;;:5;:19;;;;32362:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;32453:5;32446:12;;;32227:239;;;:::o;47491:38::-;;;;:::o;48171:697::-;48230:24;48257:20;:32;48278:10;48257:32;;;;;;;;;;;;;;;;48230:59;;47635:1;48327:9;48308:28;;:16;:28;;;;:::i;:::-;:52;;48300:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;48438:12;;48425:9;48411:23;;:11;;:23;;;;:::i;:::-;:39;;48403:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;48515:3;48503:9;48489:23;;:11;;:23;;;;:::i;:::-;:29;48485:179;;;48586:9;48573;48561:21;;:9;;:21;;;;:::i;:::-;:34;;48535:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;48485:179;48679:9;48674:103;48698:9;48694:13;;:1;:13;48674:103;;;48729:36;48739:10;48753:11;;48751:13;;;;;:::i;:::-;;;;;;;48729:9;:36::i;:::-;48709:3;;;;;:::i;:::-;;;;48674:103;;;;48841:9;48822:28;;:16;:28;;;;:::i;:::-;48787:20;:32;48808:10;48787:32;;;;;;;;;;;;;;;:63;;;;48219:649;48171:697;:::o;31957:208::-;32029:7;32074:1;32057:19;;:5;:19;;;;32049:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;32141:9;:16;32151:5;32141:16;;;;;;;;;;;;;;;;32134:23;;31957:208;;;:::o;12576:103::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12641:30:::1;12668:1;12641:18;:30::i;:::-;12576:103::o:0;44357:51::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11925:87::-;11971:7;11998:6;;;;;;;;;;;11991:13;;11925:87;:::o;44260:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;51521:125::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51632:6:::1;51603:26;:35;;;;51521:125:::0;:::o;32702:104::-;32758:13;32791:7;32784:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32702:104;:::o;34385:155::-;34480:52;34499:12;:10;:12::i;:::-;34513:8;34523;34480:18;:52::i;:::-;34385:155;;:::o;47370:21::-;;;;;;;;;;;;;:::o;35508:328::-;35683:41;35702:12;:10;:12::i;:::-;35716:7;35683:18;:41::i;:::-;35675:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;35789:39;35803:4;35809:2;35813:7;35822:5;35789:13;:39::i;:::-;35508:328;;;;:::o;47542:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;52110:622::-;52208:13;52261:16;52269:7;52261;:16::i;:::-;52239:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;52365:28;52396:10;:8;:10::i;:::-;52365:41;;52468:1;52443:14;52437:28;:32;:287;;;;;;;;;;;;;;;;;52561:14;52602:18;:7;:16;:18::i;:::-;52647:13;52518:165;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;52437:287;52417:307;;;52110:622;;;:::o;49162:1584::-;49265:16;49273:7;49265;:16::i;:::-;49251:30;;:10;:30;;;49243:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;49378:1;49339:19;:29;49359:8;49339:29;;;;;;;;;;;;;;;:36;;;;;:::i;:::-;;;:40;49331:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;49510:14;49516:7;49510:5;:14::i;:::-;49598:20;49632:10;49644:7;49621:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;49598:54;;49738:14;49755:1;49738:18;;49767:26;49813:7;49822:26;;49796:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;49767:82;;50004:15;50025:8;;;;;;;;;;;:21;;;50047:8;50065:4;50072:7;50081:5;50088:13;50025:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50003:99;;;50144:10;50131:9;:23;;50123:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;50239:8;;;;;;;;;;;:13;;;50260:9;50285:8;50357:19;:29;50377:8;50357:29;;;;;;;;;;;;;;;50445:7;50528:10;50595:3;50675:13;50239:499;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49232:1514;;;;49162:1584;;:::o;46304:758::-;46485:32;46520:14;:27;46535:11;46520:27;;;;;;;;;;;;;;;46548:11;46520:40;;;;;;:::i;:::-;;;;;;;;;;;;;:48;46561:6;46520:48;;;;;;;;;;;;;46485:83;;46620:1;46612:10;;46587:9;:21;;;:35;;46579:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;46703:9;:23;;;46684:8;;:15;;:42;:90;;;;;46753:9;:21;;;46740:8;;46730:19;;;;;;;:::i;:::-;;;;;;;;:44;46684:90;46676:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;46879:1;46853:9;:23;;:27;;;;46923:1;46915:10;;46891:9;:21;;:34;;;;46994:4;:16;;;47011:11;47024;47037:6;47045:8;;46994:60;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46429:633;46304:758;;;;;:::o;34611:164::-;34708:4;34732:18;:25;34751:5;34732:25;;;;;;;;;;;;;;;:35;34758:8;34732:35;;;;;;;;;;;;;;;;;;;;;;;;;34725:42;;34611:164;;;;:::o;47070:158::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47206:14:::1;;47174:19;:29;47194:8;47174:29;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;47070:158:::0;;;:::o;48897:43::-;:::o;12834:201::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12943:1:::1;12923:22;;:8;:22;;;;12915:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12999:28;13018:8;12999:18;:28::i;:::-;12834:201:::0;:::o;50951:94::-;12156:12;:10;:12::i;:::-;12145:23;;:7;:5;:7::i;:::-;:23;;;12137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51031:6:::1;51019:9;:18;;;;50951:94:::0;:::o;24357:157::-;24442:4;24481:25;24466:40;;;:11;:40;;;;24459:47;;24357:157;;;:::o;37346:127::-;37411:4;37463:1;37435:30;;:7;:16;37443:7;37435:16;;;;;;;;;;;;;;;;;;;;;:30;;;;37428:37;;37346:127;;;:::o;10649:98::-;10702:7;10729:10;10722:17;;10649:98;:::o;41259:174::-;41361:2;41334:15;:24;41350:7;41334:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;41417:7;41413:2;41379:46;;41388:23;41403:7;41388:14;:23::i;:::-;41379:46;;;;;;;;;;;;41259:174;;:::o;38330:110::-;38406:26;38416:2;38420:7;38406:26;;;;;;;;;;;;:9;:26::i;:::-;38330:110;;:::o;51654:338::-;51807:14;51823:12;51850:8;51839:37;;;;;;;;;;;;:::i;:::-;51806:70;;;;51958:26;51968:6;51976:7;51958:9;:26::i;:::-;51776:216;;51654:338;;;;:::o;37640:348::-;37733:4;37758:16;37766:7;37758;:16::i;:::-;37750:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37834:13;37850:23;37865:7;37850:14;:23::i;:::-;37834:39;;37903:5;37892:16;;:7;:16;;;:51;;;;37936:7;37912:31;;:20;37924:7;37912:11;:20::i;:::-;:31;;;37892:51;:87;;;;37947:32;37964:5;37971:7;37947:16;:32::i;:::-;37892:87;37884:96;;;37640:348;;;;:::o;40563:578::-;40722:4;40695:31;;:23;40710:7;40695:14;:23::i;:::-;:31;;;40687:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;40805:1;40791:16;;:2;:16;;;;40783:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;40861:39;40882:4;40888:2;40892:7;40861:20;:39::i;:::-;40965:29;40982:1;40986:7;40965:8;:29::i;:::-;41026:1;41007:9;:15;41017:4;41007:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;41055:1;41038:9;:13;41048:2;41038:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;41086:2;41067:7;:16;41075:7;41067:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;41125:7;41121:2;41106:27;;41115:4;41106:27;;;;;;;;;;;;40563:578;;;:::o;13195:191::-;13269:16;13288:6;;;;;;;;;;;13269:25;;13314:8;13305:6;;:17;;;;;;;;;;;;;;;;;;13369:8;13338:40;;13359:8;13338:40;;;;;;;;;;;;13258:128;13195:191;:::o;41575:315::-;41730:8;41721:17;;:5;:17;;;;41713:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;41817:8;41779:18;:25;41798:5;41779:25;;;;;;;;;;;;;;;:35;41805:8;41779:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;41863:8;41841:41;;41856:5;41841:41;;;41873:8;41841:41;;;;;;:::i;:::-;;;;;;;;41575:315;;;:::o;36718:::-;36875:28;36885:4;36891:2;36895:7;36875:9;:28::i;:::-;36922:48;36945:4;36951:2;36955:7;36964:5;36922:22;:48::i;:::-;36914:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;36718:315;;;;:::o;52002:100::-;52054:13;52087:7;52080:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52002:100;:::o;8211:723::-;8267:13;8497:1;8488:5;:10;8484:53;;;8515:10;;;;;;;;;;;;;;;;;;;;;8484:53;8547:12;8562:5;8547:20;;8578:14;8603:78;8618:1;8610:4;:9;8603:78;;8636:8;;;;;:::i;:::-;;;;8667:2;8659:10;;;;;:::i;:::-;;;8603:78;;;8691:19;8723:6;8713:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8691:39;;8741:154;8757:1;8748:5;:10;8741:154;;8785:1;8775:11;;;;;:::i;:::-;;;8852:2;8844:5;:10;;;;:::i;:::-;8831:2;:24;;;;:::i;:::-;8818:39;;8801:6;8808;8801:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;8881:2;8872:11;;;;;:::i;:::-;;;8741:154;;;8919:6;8905:21;;;;;8211:723;;;;:::o;39866:360::-;39926:13;39942:23;39957:7;39942:14;:23::i;:::-;39926:39;;39978:48;39999:5;40014:1;40018:7;39978:20;:48::i;:::-;40067:29;40084:1;40088:7;40067:8;:29::i;:::-;40129:1;40109:9;:16;40119:5;40109:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;40148:7;:16;40156:7;40148:16;;;;;;;;;;;;40141:23;;;;;;;;;;;40210:7;40206:1;40182:36;;40191:5;40182:36;;;;;;;;;;;;39915:311;39866:360;:::o;38667:321::-;38797:18;38803:2;38807:7;38797:5;:18::i;:::-;38848:54;38879:1;38883:2;38887:7;38896:5;38848:22;:54::i;:::-;38826:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;38667:321;;;:::o;43826:126::-;;;;:::o;42455:799::-;42610:4;42631:15;:2;:13;;;:15::i;:::-;42627:620;;;42683:2;42667:36;;;42704:12;:10;:12::i;:::-;42718:4;42724:7;42733:5;42667:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;42663:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42926:1;42909:6;:13;:18;42905:272;;;42952:60;;;;;;;;;;:::i;:::-;;;;;;;;42905:272;43127:6;43121:13;43112:6;43108:2;43104:15;43097:38;42663:529;42800:41;;;42790:51;;;:6;:51;;;;42783:58;;;;;42627:620;43231:4;43224:11;;42455:799;;;;;;;:::o;39324:313::-;39418:1;39404:16;;:2;:16;;;;39396:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;39470:45;39499:1;39503:2;39507:7;39470:20;:45::i;:::-;39545:1;39528:9;:13;39538:2;39528:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;39576:2;39557:7;:16;39565:7;39557:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;39621:7;39617:2;39596:33;;39613:1;39596:33;;;;;;;;;;;;39324:313;;:::o;14213:387::-;14273:4;14481:12;14548:7;14536:20;14528:28;;14591:1;14584:4;:8;14577:15;;;14213:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:159::-;1051:5;1082:6;1076:13;1067:22;;1098:41;1133:5;1098:41;:::i;:::-;986:159;;;;:::o;1151:133::-;1194:5;1232:6;1219:20;1210:29;;1248:30;1272:5;1248:30;:::i;:::-;1151:133;;;;:::o;1290:137::-;1335:5;1373:6;1360:20;1351:29;;1389:32;1415:5;1389:32;:::i;:::-;1290:137;;;;:::o;1433:141::-;1489:5;1520:6;1514:13;1505:22;;1536:32;1562:5;1536:32;:::i;:::-;1433:141;;;;:::o;1593:552::-;1650:8;1660:6;1710:3;1703:4;1695:6;1691:17;1687:27;1677:122;;1718:79;;:::i;:::-;1677:122;1831:6;1818:20;1808:30;;1861:18;1853:6;1850:30;1847:117;;;1883:79;;:::i;:::-;1847:117;1997:4;1989:6;1985:17;1973:29;;2051:3;2043:4;2035:6;2031:17;2021:8;2017:32;2014:41;2011:128;;;2058:79;;:::i;:::-;2011:128;1593:552;;;;;:::o;2164:338::-;2219:5;2268:3;2261:4;2253:6;2249:17;2245:27;2235:122;;2276:79;;:::i;:::-;2235:122;2393:6;2380:20;2418:78;2492:3;2484:6;2477:4;2469:6;2465:17;2418:78;:::i;:::-;2409:87;;2225:277;2164:338;;;;:::o;2522:340::-;2578:5;2627:3;2620:4;2612:6;2608:17;2604:27;2594:122;;2635:79;;:::i;:::-;2594:122;2752:6;2739:20;2777:79;2852:3;2844:6;2837:4;2829:6;2825:17;2777:79;:::i;:::-;2768:88;;2584:278;2522:340;;;;:::o;2868:137::-;2913:5;2951:6;2938:20;2929:29;;2967:32;2993:5;2967:32;:::i;:::-;2868:137;;;;:::o;3011:139::-;3057:5;3095:6;3082:20;3073:29;;3111:33;3138:5;3111:33;:::i;:::-;3011:139;;;;:::o;3156:143::-;3213:5;3244:6;3238:13;3229:22;;3260:33;3287:5;3260:33;:::i;:::-;3156:143;;;;:::o;3305:137::-;3350:5;3388:6;3375:20;3366:29;;3404:32;3430:5;3404:32;:::i;:::-;3305:137;;;;:::o;3448:135::-;3492:5;3530:6;3517:20;3508:29;;3546:31;3571:5;3546:31;:::i;:::-;3448:135;;;;:::o;3589:329::-;3648:6;3697:2;3685:9;3676:7;3672:23;3668:32;3665:119;;;3703:79;;:::i;:::-;3665:119;3823:1;3848:53;3893:7;3884:6;3873:9;3869:22;3848:53;:::i;:::-;3838:63;;3794:117;3589:329;;;;:::o;3924:523::-;4011:6;4019;4068:2;4056:9;4047:7;4043:23;4039:32;4036:119;;;4074:79;;:::i;:::-;4036:119;4194:1;4219:72;4283:7;4274:6;4263:9;4259:22;4219:72;:::i;:::-;4209:82;;4165:136;4340:2;4366:64;4422:7;4413:6;4402:9;4398:22;4366:64;:::i;:::-;4356:74;;4311:129;3924:523;;;;;:::o;4453:474::-;4521:6;4529;4578:2;4566:9;4557:7;4553:23;4549:32;4546:119;;;4584:79;;:::i;:::-;4546:119;4704:1;4729:53;4774:7;4765:6;4754:9;4750:22;4729:53;:::i;:::-;4719:63;;4675:117;4831:2;4857:53;4902:7;4893:6;4882:9;4878:22;4857:53;:::i;:::-;4847:63;;4802:118;4453:474;;;;;:::o;4933:619::-;5010:6;5018;5026;5075:2;5063:9;5054:7;5050:23;5046:32;5043:119;;;5081:79;;:::i;:::-;5043:119;5201:1;5226:53;5271:7;5262:6;5251:9;5247:22;5226:53;:::i;:::-;5216:63;;5172:117;5328:2;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5299:118;5456:2;5482:53;5527:7;5518:6;5507:9;5503:22;5482:53;:::i;:::-;5472:63;;5427:118;4933:619;;;;;:::o;5558:943::-;5653:6;5661;5669;5677;5726:3;5714:9;5705:7;5701:23;5697:33;5694:120;;;5733:79;;:::i;:::-;5694:120;5853:1;5878:53;5923:7;5914:6;5903:9;5899:22;5878:53;:::i;:::-;5868:63;;5824:117;5980:2;6006:53;6051:7;6042:6;6031:9;6027:22;6006:53;:::i;:::-;5996:63;;5951:118;6108:2;6134:53;6179:7;6170:6;6159:9;6155:22;6134:53;:::i;:::-;6124:63;;6079:118;6264:2;6253:9;6249:18;6236:32;6295:18;6287:6;6284:30;6281:117;;;6317:79;;:::i;:::-;6281:117;6422:62;6476:7;6467:6;6456:9;6452:22;6422:62;:::i;:::-;6412:72;;6207:287;5558:943;;;;;;;:::o;6507:468::-;6572:6;6580;6629:2;6617:9;6608:7;6604:23;6600:32;6597:119;;;6635:79;;:::i;:::-;6597:119;6755:1;6780:53;6825:7;6816:6;6805:9;6801:22;6780:53;:::i;:::-;6770:63;;6726:117;6882:2;6908:50;6950:7;6941:6;6930:9;6926:22;6908:50;:::i;:::-;6898:60;;6853:115;6507:468;;;;;:::o;6981:474::-;7049:6;7057;7106:2;7094:9;7085:7;7081:23;7077:32;7074:119;;;7112:79;;:::i;:::-;7074:119;7232:1;7257:53;7302:7;7293:6;7282:9;7278:22;7257:53;:::i;:::-;7247:63;;7203:117;7359:2;7385:53;7430:7;7421:6;7410:9;7406:22;7385:53;:::i;:::-;7375:63;;7330:118;6981:474;;;;;:::o;7461:327::-;7519:6;7568:2;7556:9;7547:7;7543:23;7539:32;7536:119;;;7574:79;;:::i;:::-;7536:119;7694:1;7719:52;7763:7;7754:6;7743:9;7739:22;7719:52;:::i;:::-;7709:62;;7665:116;7461:327;;;;:::o;7794:349::-;7863:6;7912:2;7900:9;7891:7;7887:23;7883:32;7880:119;;;7918:79;;:::i;:::-;7880:119;8038:1;8063:63;8118:7;8109:6;8098:9;8094:22;8063:63;:::i;:::-;8053:73;;8009:127;7794:349;;;;:::o;8149:509::-;8218:6;8267:2;8255:9;8246:7;8242:23;8238:32;8235:119;;;8273:79;;:::i;:::-;8235:119;8421:1;8410:9;8406:17;8393:31;8451:18;8443:6;8440:30;8437:117;;;8473:79;;:::i;:::-;8437:117;8578:63;8633:7;8624:6;8613:9;8609:22;8578:63;:::i;:::-;8568:73;;8364:287;8149:509;;;;:::o;8664:327::-;8722:6;8771:2;8759:9;8750:7;8746:23;8742:32;8739:119;;;8777:79;;:::i;:::-;8739:119;8897:1;8922:52;8966:7;8957:6;8946:9;8942:22;8922:52;:::i;:::-;8912:62;;8868:116;8664:327;;;;:::o;8997:670::-;9075:6;9083;9091;9140:2;9128:9;9119:7;9115:23;9111:32;9108:119;;;9146:79;;:::i;:::-;9108:119;9266:1;9291:52;9335:7;9326:6;9315:9;9311:22;9291:52;:::i;:::-;9281:62;;9237:116;9420:2;9409:9;9405:18;9392:32;9451:18;9443:6;9440:30;9437:117;;;9473:79;;:::i;:::-;9437:117;9586:64;9642:7;9633:6;9622:9;9618:22;9586:64;:::i;:::-;9568:82;;;;9363:297;8997:670;;;;;:::o;9673:795::-;9758:6;9766;9774;9823:2;9811:9;9802:7;9798:23;9794:32;9791:119;;;9829:79;;:::i;:::-;9791:119;9949:1;9974:52;10018:7;10009:6;9998:9;9994:22;9974:52;:::i;:::-;9964:62;;9920:116;10103:2;10092:9;10088:18;10075:32;10134:18;10126:6;10123:30;10120:117;;;10156:79;;:::i;:::-;10120:117;10261:62;10315:7;10306:6;10295:9;10291:22;10261:62;:::i;:::-;10251:72;;10046:287;10372:2;10398:53;10443:7;10434:6;10423:9;10419:22;10398:53;:::i;:::-;10388:63;;10343:118;9673:795;;;;;:::o;10474:1137::-;10578:6;10586;10594;10602;10610;10659:3;10647:9;10638:7;10634:23;10630:33;10627:120;;;10666:79;;:::i;:::-;10627:120;10786:1;10811:52;10855:7;10846:6;10835:9;10831:22;10811:52;:::i;:::-;10801:62;;10757:116;10940:2;10929:9;10925:18;10912:32;10971:18;10963:6;10960:30;10957:117;;;10993:79;;:::i;:::-;10957:117;11098:62;11152:7;11143:6;11132:9;11128:22;11098:62;:::i;:::-;11088:72;;10883:287;11209:2;11235:52;11279:7;11270:6;11259:9;11255:22;11235:52;:::i;:::-;11225:62;;11180:117;11364:2;11353:9;11349:18;11336:32;11395:18;11387:6;11384:30;11381:117;;;11417:79;;:::i;:::-;11381:117;11530:64;11586:7;11577:6;11566:9;11562:22;11530:64;:::i;:::-;11512:82;;;;11307:297;10474:1137;;;;;;;;:::o;11617:1117::-;11719:6;11727;11735;11743;11792:3;11780:9;11771:7;11767:23;11763:33;11760:120;;;11799:79;;:::i;:::-;11760:120;11919:1;11944:52;11988:7;11979:6;11968:9;11964:22;11944:52;:::i;:::-;11934:62;;11890:116;12073:2;12062:9;12058:18;12045:32;12104:18;12096:6;12093:30;12090:117;;;12126:79;;:::i;:::-;12090:117;12231:62;12285:7;12276:6;12265:9;12261:22;12231:62;:::i;:::-;12221:72;;12016:287;12342:2;12368:52;12412:7;12403:6;12392:9;12388:22;12368:52;:::i;:::-;12358:62;;12313:117;12497:2;12486:9;12482:18;12469:32;12528:18;12520:6;12517:30;12514:117;;;12550:79;;:::i;:::-;12514:117;12655:62;12709:7;12700:6;12689:9;12685:22;12655:62;:::i;:::-;12645:72;;12440:287;11617:1117;;;;;;;:::o;12740:472::-;12807:6;12815;12864:2;12852:9;12843:7;12839:23;12835:32;12832:119;;;12870:79;;:::i;:::-;12832:119;12990:1;13015:52;13059:7;13050:6;13039:9;13035:22;13015:52;:::i;:::-;13005:62;;12961:116;13116:2;13142:53;13187:7;13178:6;13167:9;13163:22;13142:53;:::i;:::-;13132:63;;13087:118;12740:472;;;;;:::o;13218:329::-;13277:6;13326:2;13314:9;13305:7;13301:23;13297:32;13294:119;;;13332:79;;:::i;:::-;13294:119;13452:1;13477:53;13522:7;13513:6;13502:9;13498:22;13477:53;:::i;:::-;13467:63;;13423:117;13218:329;;;;:::o;13553:507::-;13632:6;13640;13689:2;13677:9;13668:7;13664:23;13660:32;13657:119;;;13695:79;;:::i;:::-;13657:119;13815:1;13840:64;13896:7;13887:6;13876:9;13872:22;13840:64;:::i;:::-;13830:74;;13786:128;13953:2;13979:64;14035:7;14026:6;14015:9;14011:22;13979:64;:::i;:::-;13969:74;;13924:129;13553:507;;;;;:::o;14066:325::-;14123:6;14172:2;14160:9;14151:7;14147:23;14143:32;14140:119;;;14178:79;;:::i;:::-;14140:119;14298:1;14323:51;14366:7;14357:6;14346:9;14342:22;14323:51;:::i;:::-;14313:61;;14269:115;14066:325;;;;:::o;14397:142::-;14500:32;14526:5;14500:32;:::i;:::-;14495:3;14488:45;14397:142;;:::o;14545:118::-;14632:24;14650:5;14632:24;:::i;:::-;14627:3;14620:37;14545:118;;:::o;14669:109::-;14750:21;14765:5;14750:21;:::i;:::-;14745:3;14738:34;14669:109;;:::o;14784:118::-;14871:24;14889:5;14871:24;:::i;:::-;14866:3;14859:37;14784:118;;:::o;14930:301::-;15026:3;15047:70;15110:6;15105:3;15047:70;:::i;:::-;15040:77;;15127:43;15163:6;15158:3;15151:5;15127:43;:::i;:::-;15195:29;15217:6;15195:29;:::i;:::-;15190:3;15186:39;15179:46;;14930:301;;;;;:::o;15259:314::-;15373:3;15394:88;15475:6;15470:3;15394:88;:::i;:::-;15387:95;;15492:43;15528:6;15523:3;15516:5;15492:43;:::i;:::-;15560:6;15555:3;15551:16;15544:23;;15259:314;;;;;:::o;15579:360::-;15665:3;15693:38;15725:5;15693:38;:::i;:::-;15747:70;15810:6;15805:3;15747:70;:::i;:::-;15740:77;;15826:52;15871:6;15866:3;15859:4;15852:5;15848:16;15826:52;:::i;:::-;15903:29;15925:6;15903:29;:::i;:::-;15898:3;15894:39;15887:46;;15669:270;15579:360;;;;:::o;15945:373::-;16049:3;16077:38;16109:5;16077:38;:::i;:::-;16131:88;16212:6;16207:3;16131:88;:::i;:::-;16124:95;;16228:52;16273:6;16268:3;16261:4;16254:5;16250:16;16228:52;:::i;:::-;16305:6;16300:3;16296:16;16289:23;;16053:265;15945:373;;;;:::o;16346:798::-;16429:3;16466:5;16460:12;16495:36;16521:9;16495:36;:::i;:::-;16547:70;16610:6;16605:3;16547:70;:::i;:::-;16540:77;;16648:1;16637:9;16633:17;16664:1;16659:135;;;;16808:1;16803:335;;;;16626:512;;16659:135;16743:4;16739:9;16728;16724:25;16719:3;16712:38;16779:4;16774:3;16770:14;16763:21;;16659:135;;16803:335;16870:37;16901:5;16870:37;:::i;:::-;16929:1;16943:154;16957:6;16954:1;16951:13;16943:154;;;17031:7;17025:14;17021:1;17016:3;17012:11;17005:35;17081:1;17072:7;17068:15;17057:26;;16979:4;16976:1;16972:12;16967:17;;16943:154;;;17126:1;17121:3;17117:11;17110:18;;16810:328;;16626:512;;16433:711;;16346:798;;;;:::o;17172:841::-;17273:3;17310:5;17304:12;17339:36;17365:9;17339:36;:::i;:::-;17391:88;17472:6;17467:3;17391:88;:::i;:::-;17384:95;;17510:1;17499:9;17495:17;17526:1;17521:137;;;;17672:1;17667:340;;;;17488:519;;17521:137;17605:4;17601:9;17590;17586:25;17581:3;17574:38;17641:6;17636:3;17632:16;17625:23;;17521:137;;17667:340;17734:37;17765:5;17734:37;:::i;:::-;17793:1;17807:154;17821:6;17818:1;17815:13;17807:154;;;17895:7;17889:14;17885:1;17880:3;17876:11;17869:35;17945:1;17936:7;17932:15;17921:26;;17843:4;17840:1;17836:12;17831:17;;17807:154;;;17990:6;17985:3;17981:16;17974:23;;17674:333;;17488:519;;17277:736;;17172:841;;;;:::o;18019:364::-;18107:3;18135:39;18168:5;18135:39;:::i;:::-;18190:71;18254:6;18249:3;18190:71;:::i;:::-;18183:78;;18270:52;18315:6;18310:3;18303:4;18296:5;18292:16;18270:52;:::i;:::-;18347:29;18369:6;18347:29;:::i;:::-;18342:3;18338:39;18331:46;;18111:272;18019:364;;;;:::o;18389:377::-;18495:3;18523:39;18556:5;18523:39;:::i;:::-;18578:89;18660:6;18655:3;18578:89;:::i;:::-;18571:96;;18676:52;18721:6;18716:3;18709:4;18702:5;18698:16;18676:52;:::i;:::-;18753:6;18748:3;18744:16;18737:23;;18499:267;18389:377;;;;:::o;18796:845::-;18899:3;18936:5;18930:12;18965:36;18991:9;18965:36;:::i;:::-;19017:89;19099:6;19094:3;19017:89;:::i;:::-;19010:96;;19137:1;19126:9;19122:17;19153:1;19148:137;;;;19299:1;19294:341;;;;19115:520;;19148:137;19232:4;19228:9;19217;19213:25;19208:3;19201:38;19268:6;19263:3;19259:16;19252:23;;19148:137;;19294:341;19361:38;19393:5;19361:38;:::i;:::-;19421:1;19435:154;19449:6;19446:1;19443:13;19435:154;;;19523:7;19517:14;19513:1;19508:3;19504:11;19497:35;19573:1;19564:7;19560:15;19549:26;;19471:4;19468:1;19464:12;19459:17;;19435:154;;;19618:6;19613:3;19609:16;19602:23;;19301:334;;19115:520;;18903:738;;18796:845;;;;:::o;19647:366::-;19789:3;19810:67;19874:2;19869:3;19810:67;:::i;:::-;19803:74;;19886:93;19975:3;19886:93;:::i;:::-;20004:2;19999:3;19995:12;19988:19;;19647:366;;;:::o;20019:::-;20161:3;20182:67;20246:2;20241:3;20182:67;:::i;:::-;20175:74;;20258:93;20347:3;20258:93;:::i;:::-;20376:2;20371:3;20367:12;20360:19;;20019:366;;;:::o;20391:::-;20533:3;20554:67;20618:2;20613:3;20554:67;:::i;:::-;20547:74;;20630:93;20719:3;20630:93;:::i;:::-;20748:2;20743:3;20739:12;20732:19;;20391:366;;;:::o;20763:::-;20905:3;20926:67;20990:2;20985:3;20926:67;:::i;:::-;20919:74;;21002:93;21091:3;21002:93;:::i;:::-;21120:2;21115:3;21111:12;21104:19;;20763:366;;;:::o;21135:::-;21277:3;21298:67;21362:2;21357:3;21298:67;:::i;:::-;21291:74;;21374:93;21463:3;21374:93;:::i;:::-;21492:2;21487:3;21483:12;21476:19;;21135:366;;;:::o;21507:::-;21649:3;21670:67;21734:2;21729:3;21670:67;:::i;:::-;21663:74;;21746:93;21835:3;21746:93;:::i;:::-;21864:2;21859:3;21855:12;21848:19;;21507:366;;;:::o;21879:::-;22021:3;22042:67;22106:2;22101:3;22042:67;:::i;:::-;22035:74;;22118:93;22207:3;22118:93;:::i;:::-;22236:2;22231:3;22227:12;22220:19;;21879:366;;;:::o;22251:::-;22393:3;22414:67;22478:2;22473:3;22414:67;:::i;:::-;22407:74;;22490:93;22579:3;22490:93;:::i;:::-;22608:2;22603:3;22599:12;22592:19;;22251:366;;;:::o;22623:::-;22765:3;22786:67;22850:2;22845:3;22786:67;:::i;:::-;22779:74;;22862:93;22951:3;22862:93;:::i;:::-;22980:2;22975:3;22971:12;22964:19;;22623:366;;;:::o;22995:::-;23137:3;23158:67;23222:2;23217:3;23158:67;:::i;:::-;23151:74;;23234:93;23323:3;23234:93;:::i;:::-;23352:2;23347:3;23343:12;23336:19;;22995:366;;;:::o;23367:::-;23509:3;23530:67;23594:2;23589:3;23530:67;:::i;:::-;23523:74;;23606:93;23695:3;23606:93;:::i;:::-;23724:2;23719:3;23715:12;23708:19;;23367:366;;;:::o;23739:::-;23881:3;23902:67;23966:2;23961:3;23902:67;:::i;:::-;23895:74;;23978:93;24067:3;23978:93;:::i;:::-;24096:2;24091:3;24087:12;24080:19;;23739:366;;;:::o;24111:::-;24253:3;24274:67;24338:2;24333:3;24274:67;:::i;:::-;24267:74;;24350:93;24439:3;24350:93;:::i;:::-;24468:2;24463:3;24459:12;24452:19;;24111:366;;;:::o;24483:::-;24625:3;24646:67;24710:2;24705:3;24646:67;:::i;:::-;24639:74;;24722:93;24811:3;24722:93;:::i;:::-;24840:2;24835:3;24831:12;24824:19;;24483:366;;;:::o;24855:::-;24997:3;25018:67;25082:2;25077:3;25018:67;:::i;:::-;25011:74;;25094:93;25183:3;25094:93;:::i;:::-;25212:2;25207:3;25203:12;25196:19;;24855:366;;;:::o;25227:::-;25369:3;25390:67;25454:2;25449:3;25390:67;:::i;:::-;25383:74;;25466:93;25555:3;25466:93;:::i;:::-;25584:2;25579:3;25575:12;25568:19;;25227:366;;;:::o;25599:::-;25741:3;25762:67;25826:2;25821:3;25762:67;:::i;:::-;25755:74;;25838:93;25927:3;25838:93;:::i;:::-;25956:2;25951:3;25947:12;25940:19;;25599:366;;;:::o;25971:::-;26113:3;26134:67;26198:2;26193:3;26134:67;:::i;:::-;26127:74;;26210:93;26299:3;26210:93;:::i;:::-;26328:2;26323:3;26319:12;26312:19;;25971:366;;;:::o;26343:::-;26485:3;26506:67;26570:2;26565:3;26506:67;:::i;:::-;26499:74;;26582:93;26671:3;26582:93;:::i;:::-;26700:2;26695:3;26691:12;26684:19;;26343:366;;;:::o;26715:::-;26857:3;26878:67;26942:2;26937:3;26878:67;:::i;:::-;26871:74;;26954:93;27043:3;26954:93;:::i;:::-;27072:2;27067:3;27063:12;27056:19;;26715:366;;;:::o;27087:::-;27229:3;27250:67;27314:2;27309:3;27250:67;:::i;:::-;27243:74;;27326:93;27415:3;27326:93;:::i;:::-;27444:2;27439:3;27435:12;27428:19;;27087:366;;;:::o;27459:::-;27601:3;27622:67;27686:2;27681:3;27622:67;:::i;:::-;27615:74;;27698:93;27787:3;27698:93;:::i;:::-;27816:2;27811:3;27807:12;27800:19;;27459:366;;;:::o;27831:::-;27973:3;27994:67;28058:2;28053:3;27994:67;:::i;:::-;27987:74;;28070:93;28159:3;28070:93;:::i;:::-;28188:2;28183:3;28179:12;28172:19;;27831:366;;;:::o;28203:::-;28345:3;28366:67;28430:2;28425:3;28366:67;:::i;:::-;28359:74;;28442:93;28531:3;28442:93;:::i;:::-;28560:2;28555:3;28551:12;28544:19;;28203:366;;;:::o;28575:::-;28717:3;28738:67;28802:2;28797:3;28738:67;:::i;:::-;28731:74;;28814:93;28903:3;28814:93;:::i;:::-;28932:2;28927:3;28923:12;28916:19;;28575:366;;;:::o;28947:115::-;29032:23;29049:5;29032:23;:::i;:::-;29027:3;29020:36;28947:115;;:::o;29068:153::-;29171:43;29190:23;29207:5;29190:23;:::i;:::-;29171:43;:::i;:::-;29166:3;29159:56;29068:153;;:::o;29227:118::-;29314:24;29332:5;29314:24;:::i;:::-;29309:3;29302:37;29227:118;;:::o;29351:157::-;29456:45;29476:24;29494:5;29476:24;:::i;:::-;29456:45;:::i;:::-;29451:3;29444:58;29351:157;;:::o;29514:115::-;29599:23;29616:5;29599:23;:::i;:::-;29594:3;29587:36;29514:115;;:::o;29635:291::-;29775:3;29797:103;29896:3;29887:6;29879;29797:103;:::i;:::-;29790:110;;29917:3;29910:10;;29635:291;;;;;:::o;29932:271::-;30062:3;30084:93;30173:3;30164:6;30084:93;:::i;:::-;30077:100;;30194:3;30187:10;;29932:271;;;;:::o;30209:265::-;30336:3;30358:90;30444:3;30435:6;30358:90;:::i;:::-;30351:97;;30465:3;30458:10;;30209:265;;;;:::o;30480:589::-;30705:3;30727:95;30818:3;30809:6;30727:95;:::i;:::-;30720:102;;30839:95;30930:3;30921:6;30839:95;:::i;:::-;30832:102;;30951:92;31039:3;31030:6;30951:92;:::i;:::-;30944:99;;31060:3;31053:10;;30480:589;;;;;;:::o;31075:392::-;31213:3;31228:73;31297:3;31288:6;31228:73;:::i;:::-;31326:1;31321:3;31317:11;31310:18;;31338:75;31409:3;31400:6;31338:75;:::i;:::-;31438:2;31433:3;31429:12;31422:19;;31458:3;31451:10;;31075:392;;;;;:::o;31473:222::-;31566:4;31604:2;31593:9;31589:18;31581:26;;31617:71;31685:1;31674:9;31670:17;31661:6;31617:71;:::i;:::-;31473:222;;;;:::o;31701:640::-;31896:4;31934:3;31923:9;31919:19;31911:27;;31948:71;32016:1;32005:9;32001:17;31992:6;31948:71;:::i;:::-;32029:72;32097:2;32086:9;32082:18;32073:6;32029:72;:::i;:::-;32111;32179:2;32168:9;32164:18;32155:6;32111:72;:::i;:::-;32230:9;32224:4;32220:20;32215:2;32204:9;32200:18;32193:48;32258:76;32329:4;32320:6;32258:76;:::i;:::-;32250:84;;31701:640;;;;;;;:::o;32347:332::-;32468:4;32506:2;32495:9;32491:18;32483:26;;32519:71;32587:1;32576:9;32572:17;32563:6;32519:71;:::i;:::-;32600:72;32668:2;32657:9;32653:18;32644:6;32600:72;:::i;:::-;32347:332;;;;;:::o;32685:210::-;32772:4;32810:2;32799:9;32795:18;32787:26;;32823:65;32885:1;32874:9;32870:17;32861:6;32823:65;:::i;:::-;32685:210;;;;:::o;32901:309::-;33012:4;33050:2;33039:9;33035:18;33027:26;;33099:9;33093:4;33089:20;33085:1;33074:9;33070:17;33063:47;33127:76;33198:4;33189:6;33127:76;:::i;:::-;33119:84;;32901:309;;;;:::o;33216:313::-;33329:4;33367:2;33356:9;33352:18;33344:26;;33416:9;33410:4;33406:20;33402:1;33391:9;33387:17;33380:47;33444:78;33517:4;33508:6;33444:78;:::i;:::-;33436:86;;33216:313;;;;:::o;33535:419::-;33701:4;33739:2;33728:9;33724:18;33716:26;;33788:9;33782:4;33778:20;33774:1;33763:9;33759:17;33752:47;33816:131;33942:4;33816:131;:::i;:::-;33808:139;;33535:419;;;:::o;33960:::-;34126:4;34164:2;34153:9;34149:18;34141:26;;34213:9;34207:4;34203:20;34199:1;34188:9;34184:17;34177:47;34241:131;34367:4;34241:131;:::i;:::-;34233:139;;33960:419;;;:::o;34385:::-;34551:4;34589:2;34578:9;34574:18;34566:26;;34638:9;34632:4;34628:20;34624:1;34613:9;34609:17;34602:47;34666:131;34792:4;34666:131;:::i;:::-;34658:139;;34385:419;;;:::o;34810:::-;34976:4;35014:2;35003:9;34999:18;34991:26;;35063:9;35057:4;35053:20;35049:1;35038:9;35034:17;35027:47;35091:131;35217:4;35091:131;:::i;:::-;35083:139;;34810:419;;;:::o;35235:::-;35401:4;35439:2;35428:9;35424:18;35416:26;;35488:9;35482:4;35478:20;35474:1;35463:9;35459:17;35452:47;35516:131;35642:4;35516:131;:::i;:::-;35508:139;;35235:419;;;:::o;35660:::-;35826:4;35864:2;35853:9;35849:18;35841:26;;35913:9;35907:4;35903:20;35899:1;35888:9;35884:17;35877:47;35941:131;36067:4;35941:131;:::i;:::-;35933:139;;35660:419;;;:::o;36085:::-;36251:4;36289:2;36278:9;36274:18;36266:26;;36338:9;36332:4;36328:20;36324:1;36313:9;36309:17;36302:47;36366:131;36492:4;36366:131;:::i;:::-;36358:139;;36085:419;;;:::o;36510:::-;36676:4;36714:2;36703:9;36699:18;36691:26;;36763:9;36757:4;36753:20;36749:1;36738:9;36734:17;36727:47;36791:131;36917:4;36791:131;:::i;:::-;36783:139;;36510:419;;;:::o;36935:::-;37101:4;37139:2;37128:9;37124:18;37116:26;;37188:9;37182:4;37178:20;37174:1;37163:9;37159:17;37152:47;37216:131;37342:4;37216:131;:::i;:::-;37208:139;;36935:419;;;:::o;37360:::-;37526:4;37564:2;37553:9;37549:18;37541:26;;37613:9;37607:4;37603:20;37599:1;37588:9;37584:17;37577:47;37641:131;37767:4;37641:131;:::i;:::-;37633:139;;37360:419;;;:::o;37785:::-;37951:4;37989:2;37978:9;37974:18;37966:26;;38038:9;38032:4;38028:20;38024:1;38013:9;38009:17;38002:47;38066:131;38192:4;38066:131;:::i;:::-;38058:139;;37785:419;;;:::o;38210:::-;38376:4;38414:2;38403:9;38399:18;38391:26;;38463:9;38457:4;38453:20;38449:1;38438:9;38434:17;38427:47;38491:131;38617:4;38491:131;:::i;:::-;38483:139;;38210:419;;;:::o;38635:::-;38801:4;38839:2;38828:9;38824:18;38816:26;;38888:9;38882:4;38878:20;38874:1;38863:9;38859:17;38852:47;38916:131;39042:4;38916:131;:::i;:::-;38908:139;;38635:419;;;:::o;39060:::-;39226:4;39264:2;39253:9;39249:18;39241:26;;39313:9;39307:4;39303:20;39299:1;39288:9;39284:17;39277:47;39341:131;39467:4;39341:131;:::i;:::-;39333:139;;39060:419;;;:::o;39485:::-;39651:4;39689:2;39678:9;39674:18;39666:26;;39738:9;39732:4;39728:20;39724:1;39713:9;39709:17;39702:47;39766:131;39892:4;39766:131;:::i;:::-;39758:139;;39485:419;;;:::o;39910:::-;40076:4;40114:2;40103:9;40099:18;40091:26;;40163:9;40157:4;40153:20;40149:1;40138:9;40134:17;40127:47;40191:131;40317:4;40191:131;:::i;:::-;40183:139;;39910:419;;;:::o;40335:::-;40501:4;40539:2;40528:9;40524:18;40516:26;;40588:9;40582:4;40578:20;40574:1;40563:9;40559:17;40552:47;40616:131;40742:4;40616:131;:::i;:::-;40608:139;;40335:419;;;:::o;40760:::-;40926:4;40964:2;40953:9;40949:18;40941:26;;41013:9;41007:4;41003:20;40999:1;40988:9;40984:17;40977:47;41041:131;41167:4;41041:131;:::i;:::-;41033:139;;40760:419;;;:::o;41185:::-;41351:4;41389:2;41378:9;41374:18;41366:26;;41438:9;41432:4;41428:20;41424:1;41413:9;41409:17;41402:47;41466:131;41592:4;41466:131;:::i;:::-;41458:139;;41185:419;;;:::o;41610:::-;41776:4;41814:2;41803:9;41799:18;41791:26;;41863:9;41857:4;41853:20;41849:1;41838:9;41834:17;41827:47;41891:131;42017:4;41891:131;:::i;:::-;41883:139;;41610:419;;;:::o;42035:::-;42201:4;42239:2;42228:9;42224:18;42216:26;;42288:9;42282:4;42278:20;42274:1;42263:9;42259:17;42252:47;42316:131;42442:4;42316:131;:::i;:::-;42308:139;;42035:419;;;:::o;42460:::-;42626:4;42664:2;42653:9;42649:18;42641:26;;42713:9;42707:4;42703:20;42699:1;42688:9;42684:17;42677:47;42741:131;42867:4;42741:131;:::i;:::-;42733:139;;42460:419;;;:::o;42885:::-;43051:4;43089:2;43078:9;43074:18;43066:26;;43138:9;43132:4;43128:20;43124:1;43113:9;43109:17;43102:47;43166:131;43292:4;43166:131;:::i;:::-;43158:139;;42885:419;;;:::o;43310:::-;43476:4;43514:2;43503:9;43499:18;43491:26;;43563:9;43557:4;43553:20;43549:1;43538:9;43534:17;43527:47;43591:131;43717:4;43591:131;:::i;:::-;43583:139;;43310:419;;;:::o;43735:::-;43901:4;43939:2;43928:9;43924:18;43916:26;;43988:9;43982:4;43978:20;43974:1;43963:9;43959:17;43952:47;44016:131;44142:4;44016:131;:::i;:::-;44008:139;;43735:419;;;:::o;44160:822::-;44393:4;44431:3;44420:9;44416:19;44408:27;;44445:69;44511:1;44500:9;44496:17;44487:6;44445:69;:::i;:::-;44524:72;44592:2;44581:9;44577:18;44568:6;44524:72;:::i;:::-;44643:9;44637:4;44633:20;44628:2;44617:9;44613:18;44606:48;44671:76;44742:4;44733:6;44671:76;:::i;:::-;44663:84;;44757:66;44819:2;44808:9;44804:18;44795:6;44757:66;:::i;:::-;44871:9;44865:4;44861:20;44855:3;44844:9;44840:19;44833:49;44899:76;44970:4;44961:6;44899:76;:::i;:::-;44891:84;;44160:822;;;;;;;;:::o;44988:739::-;45207:4;45245:3;45234:9;45230:19;45222:27;;45259:69;45325:1;45314:9;45310:17;45301:6;45259:69;:::i;:::-;45375:9;45369:4;45365:20;45360:2;45349:9;45345:18;45338:48;45403:76;45474:4;45465:6;45403:76;:::i;:::-;45395:84;;45489:70;45555:2;45544:9;45540:18;45531:6;45489:70;:::i;:::-;45606:9;45600:4;45596:20;45591:2;45580:9;45576:18;45569:48;45634:86;45715:4;45706:6;45698;45634:86;:::i;:::-;45626:94;;44988:739;;;;;;;;:::o;45733:719::-;45942:4;45980:3;45969:9;45965:19;45957:27;;45994:69;46060:1;46049:9;46045:17;46036:6;45994:69;:::i;:::-;46110:9;46104:4;46100:20;46095:2;46084:9;46080:18;46073:48;46138:76;46209:4;46200:6;46138:76;:::i;:::-;46130:84;;46224:70;46290:2;46279:9;46275:18;46266:6;46224:70;:::i;:::-;46341:9;46335:4;46331:20;46326:2;46315:9;46311:18;46304:48;46369:76;46440:4;46431:6;46369:76;:::i;:::-;46361:84;;45733:719;;;;;;;:::o;46458:1058::-;46756:4;46794:3;46783:9;46779:19;46771:27;;46808:69;46874:1;46863:9;46859:17;46850:6;46808:69;:::i;:::-;46924:9;46918:4;46914:20;46909:2;46898:9;46894:18;46887:48;46952:73;47020:4;47011:6;46952:73;:::i;:::-;46944:81;;47072:9;47066:4;47062:20;47057:2;47046:9;47042:18;47035:48;47100:76;47171:4;47162:6;47100:76;:::i;:::-;47092:84;;47186:88;47270:2;47259:9;47255:18;47246:6;47186:88;:::i;:::-;47284:73;47352:3;47341:9;47337:19;47328:6;47284:73;:::i;:::-;47405:9;47399:4;47395:20;47389:3;47378:9;47374:19;47367:49;47433:76;47504:4;47495:6;47433:76;:::i;:::-;47425:84;;46458:1058;;;;;;;;;:::o;47522:222::-;47615:4;47653:2;47642:9;47638:18;47630:26;;47666:71;47734:1;47723:9;47719:17;47710:6;47666:71;:::i;:::-;47522:222;;;;:::o;47750:332::-;47871:4;47909:2;47898:9;47894:18;47886:26;;47922:71;47990:1;47979:9;47975:17;47966:6;47922:71;:::i;:::-;48003:72;48071:2;48060:9;48056:18;48047:6;48003:72;:::i;:::-;47750:332;;;;;:::o;48088:129::-;48122:6;48149:20;;:::i;:::-;48139:30;;48178:33;48206:4;48198:6;48178:33;:::i;:::-;48088:129;;;:::o;48223:75::-;48256:6;48289:2;48283:9;48273:19;;48223:75;:::o;48304:307::-;48365:4;48455:18;48447:6;48444:30;48441:56;;;48477:18;;:::i;:::-;48441:56;48515:29;48537:6;48515:29;:::i;:::-;48507:37;;48599:4;48593;48589:15;48581:23;;48304:307;;;:::o;48617:308::-;48679:4;48769:18;48761:6;48758:30;48755:56;;;48791:18;;:::i;:::-;48755:56;48829:29;48851:6;48829:29;:::i;:::-;48821:37;;48913:4;48907;48903:15;48895:23;;48617:308;;;:::o;48931:140::-;48979:4;49002:3;48994:11;;49025:3;49022:1;49015:14;49059:4;49056:1;49046:18;49038:26;;48931:140;;;:::o;49077:141::-;49126:4;49149:3;49141:11;;49172:3;49169:1;49162:14;49206:4;49203:1;49193:18;49185:26;;49077:141;;;:::o;49224:98::-;49275:6;49309:5;49303:12;49293:22;;49224:98;;;:::o;49328:99::-;49380:6;49414:5;49408:12;49398:22;;49328:99;;;:::o;49433:168::-;49516:11;49550:6;49545:3;49538:19;49590:4;49585:3;49581:14;49566:29;;49433:168;;;;:::o;49607:147::-;49708:11;49745:3;49730:18;;49607:147;;;;:::o;49760:169::-;49844:11;49878:6;49873:3;49866:19;49918:4;49913:3;49909:14;49894:29;;49760:169;;;;:::o;49935:148::-;50037:11;50074:3;50059:18;;49935:148;;;;:::o;50089:305::-;50129:3;50148:20;50166:1;50148:20;:::i;:::-;50143:25;;50182:20;50200:1;50182:20;:::i;:::-;50177:25;;50336:1;50268:66;50264:74;50261:1;50258:81;50255:107;;;50342:18;;:::i;:::-;50255:107;50386:1;50383;50379:9;50372:16;;50089:305;;;;:::o;50400:185::-;50440:1;50457:20;50475:1;50457:20;:::i;:::-;50452:25;;50491:20;50509:1;50491:20;:::i;:::-;50486:25;;50530:1;50520:35;;50535:18;;:::i;:::-;50520:35;50577:1;50574;50570:9;50565:14;;50400:185;;;;:::o;50591:348::-;50631:7;50654:20;50672:1;50654:20;:::i;:::-;50649:25;;50688:20;50706:1;50688:20;:::i;:::-;50683:25;;50876:1;50808:66;50804:74;50801:1;50798:81;50793:1;50786:9;50779:17;50775:105;50772:131;;;50883:18;;:::i;:::-;50772:131;50931:1;50928;50924:9;50913:20;;50591:348;;;;:::o;50945:191::-;50985:4;51005:20;51023:1;51005:20;:::i;:::-;51000:25;;51039:20;51057:1;51039:20;:::i;:::-;51034:25;;51078:1;51075;51072:8;51069:34;;;51083:18;;:::i;:::-;51069:34;51128:1;51125;51121:9;51113:17;;50945:191;;;;:::o;51142:96::-;51179:7;51208:24;51226:5;51208:24;:::i;:::-;51197:35;;51142:96;;;:::o;51244:104::-;51289:7;51318:24;51336:5;51318:24;:::i;:::-;51307:35;;51244:104;;;:::o;51354:90::-;51388:7;51431:5;51424:13;51417:21;51406:32;;51354:90;;;:::o;51450:77::-;51487:7;51516:5;51505:16;;51450:77;;;:::o;51533:149::-;51569:7;51609:66;51602:5;51598:78;51587:89;;51533:149;;;:::o;51688:89::-;51724:7;51764:6;51757:5;51753:18;51742:29;;51688:89;;;:::o;51783:126::-;51820:7;51860:42;51853:5;51849:54;51838:65;;51783:126;;;:::o;51915:77::-;51952:7;51981:5;51970:16;;51915:77;;;:::o;51998:101::-;52034:7;52074:18;52067:5;52063:30;52052:41;;51998:101;;;:::o;52105:86::-;52140:7;52180:4;52173:5;52169:16;52158:27;;52105:86;;;:::o;52197:154::-;52281:6;52276:3;52271;52258:30;52343:1;52334:6;52329:3;52325:16;52318:27;52197:154;;;:::o;52357:307::-;52425:1;52435:113;52449:6;52446:1;52443:13;52435:113;;;52534:1;52529:3;52525:11;52519:18;52515:1;52510:3;52506:11;52499:39;52471:2;52468:1;52464:10;52459:15;;52435:113;;;52566:6;52563:1;52560:13;52557:101;;;52646:1;52637:6;52632:3;52628:16;52621:27;52557:101;52406:258;52357:307;;;:::o;52670:320::-;52714:6;52751:1;52745:4;52741:12;52731:22;;52798:1;52792:4;52788:12;52819:18;52809:81;;52875:4;52867:6;52863:17;52853:27;;52809:81;52937:2;52929:6;52926:14;52906:18;52903:38;52900:84;;;52956:18;;:::i;:::-;52900:84;52721:269;52670:320;;;:::o;52996:281::-;53079:27;53101:4;53079:27;:::i;:::-;53071:6;53067:40;53209:6;53197:10;53194:22;53173:18;53161:10;53158:34;53155:62;53152:88;;;53220:18;;:::i;:::-;53152:88;53260:10;53256:2;53249:22;53039:238;52996:281;;:::o;53283:233::-;53322:3;53345:24;53363:5;53345:24;:::i;:::-;53336:33;;53391:66;53384:5;53381:77;53378:103;;;53461:18;;:::i;:::-;53378:103;53508:1;53501:5;53497:13;53490:20;;53283:233;;;:::o;53522:94::-;53560:7;53589:21;53604:5;53589:21;:::i;:::-;53578:32;;53522:94;;;:::o;53622:79::-;53661:7;53690:5;53679:16;;53622:79;;;:::o;53707:176::-;53739:1;53756:20;53774:1;53756:20;:::i;:::-;53751:25;;53790:20;53808:1;53790:20;:::i;:::-;53785:25;;53829:1;53819:35;;53834:18;;:::i;:::-;53819:35;53875:1;53872;53868:9;53863:14;;53707:176;;;;:::o;53889:180::-;53937:77;53934:1;53927:88;54034:4;54031:1;54024:15;54058:4;54055:1;54048:15;54075:180;54123:77;54120:1;54113:88;54220:4;54217:1;54210:15;54244:4;54241:1;54234:15;54261:180;54309:77;54306:1;54299:88;54406:4;54403:1;54396:15;54430:4;54427:1;54420:15;54447:180;54495:77;54492:1;54485:88;54592:4;54589:1;54582:15;54616:4;54613:1;54606:15;54633:180;54681:77;54678:1;54671:88;54778:4;54775:1;54768:15;54802:4;54799:1;54792:15;54819:117;54928:1;54925;54918:12;54942:117;55051:1;55048;55041:12;55065:117;55174:1;55171;55164:12;55188:117;55297:1;55294;55287:12;55311:117;55420:1;55417;55410:12;55434:117;55543:1;55540;55533:12;55557:102;55598:6;55649:2;55645:7;55640:2;55633:5;55629:14;55625:28;55615:38;;55557:102;;;:::o;55665:96::-;55699:8;55748:5;55743:3;55739:15;55718:36;;55665:96;;;:::o;55767:291::-;55907:34;55903:1;55895:6;55891:14;55884:58;55976:34;55971:2;55963:6;55959:15;55952:59;56045:5;56040:2;56032:6;56028:15;56021:30;55767:291;:::o;56064:237::-;56204:34;56200:1;56192:6;56188:14;56181:58;56273:20;56268:2;56260:6;56256:15;56249:45;56064:237;:::o;56307:225::-;56447:34;56443:1;56435:6;56431:14;56424:58;56516:8;56511:2;56503:6;56499:15;56492:33;56307:225;:::o;56538:177::-;56678:29;56674:1;56666:6;56662:14;56655:53;56538:177;:::o;56721:223::-;56861:34;56857:1;56849:6;56845:14;56838:58;56930:6;56925:2;56917:6;56913:15;56906:31;56721:223;:::o;56950:175::-;57090:27;57086:1;57078:6;57074:14;57067:51;56950:175;:::o;57131:233::-;57271:34;57267:1;57259:6;57255:14;57248:58;57340:16;57335:2;57327:6;57323:15;57316:41;57131:233;:::o;57370:176::-;57510:28;57506:1;57498:6;57494:14;57487:52;57370:176;:::o;57552:170::-;57692:22;57688:1;57680:6;57676:14;57669:46;57552:170;:::o;57728:221::-;57868:34;57864:1;57856:6;57852:14;57845:58;57937:4;57932:2;57924:6;57920:15;57913:29;57728:221;:::o;57955:169::-;58095:21;58091:1;58083:6;58079:14;58072:45;57955:169;:::o;58130:231::-;58270:34;58266:1;58258:6;58254:14;58247:58;58339:14;58334:2;58326:6;58322:15;58315:39;58130:231;:::o;58367:243::-;58507:34;58503:1;58495:6;58491:14;58484:58;58576:26;58571:2;58563:6;58559:15;58552:51;58367:243;:::o;58616:229::-;58756:34;58752:1;58744:6;58740:14;58733:58;58825:12;58820:2;58812:6;58808:15;58801:37;58616:229;:::o;58851:228::-;58991:34;58987:1;58979:6;58975:14;58968:58;59060:11;59055:2;59047:6;59043:15;59036:36;58851:228;:::o;59085:230::-;59225:34;59221:1;59213:6;59209:14;59202:58;59294:13;59289:2;59281:6;59277:15;59270:38;59085:230;:::o;59321:182::-;59461:34;59457:1;59449:6;59445:14;59438:58;59321:182;:::o;59509:231::-;59649:34;59645:1;59637:6;59633:14;59626:58;59718:14;59713:2;59705:6;59701:15;59694:39;59509:231;:::o;59746:182::-;59886:34;59882:1;59874:6;59870:14;59863:58;59746:182;:::o;59934:239::-;60074:34;60070:1;60062:6;60058:14;60051:58;60143:22;60138:2;60130:6;60126:15;60119:47;59934:239;:::o;60179:228::-;60319:34;60315:1;60307:6;60303:14;60296:58;60388:11;60383:2;60375:6;60371:15;60364:36;60179:228;:::o;60413:234::-;60553:34;60549:1;60541:6;60537:14;60530:58;60622:17;60617:2;60609:6;60605:15;60598:42;60413:234;:::o;60653:220::-;60793:34;60789:1;60781:6;60777:14;60770:58;60862:3;60857:2;60849:6;60845:15;60838:28;60653:220;:::o;60879:236::-;61019:34;61015:1;61007:6;61003:14;60996:58;61088:19;61083:2;61075:6;61071:15;61064:44;60879:236;:::o;61121:225::-;61261:34;61257:1;61249:6;61245:14;61238:58;61330:8;61325:2;61317:6;61313:15;61306:33;61121:225;:::o;61352:122::-;61425:24;61443:5;61425:24;:::i;:::-;61418:5;61415:35;61405:63;;61464:1;61461;61454:12;61405:63;61352:122;:::o;61480:138::-;61561:32;61587:5;61561:32;:::i;:::-;61554:5;61551:43;61541:71;;61608:1;61605;61598:12;61541:71;61480:138;:::o;61624:116::-;61694:21;61709:5;61694:21;:::i;:::-;61687:5;61684:32;61674:60;;61730:1;61727;61720:12;61674:60;61624:116;:::o;61746:120::-;61818:23;61835:5;61818:23;:::i;:::-;61811:5;61808:34;61798:62;;61856:1;61853;61846:12;61798:62;61746:120;:::o;61872:::-;61944:23;61961:5;61944:23;:::i;:::-;61937:5;61934:34;61924:62;;61982:1;61979;61972:12;61924:62;61872:120;:::o;61998:122::-;62071:24;62089:5;62071:24;:::i;:::-;62064:5;62061:35;62051:63;;62110:1;62107;62100:12;62051:63;61998:122;:::o;62126:120::-;62198:23;62215:5;62198:23;:::i;:::-;62191:5;62188:34;62178:62;;62236:1;62233;62226:12;62178:62;62126:120;:::o;62252:118::-;62323:22;62339:5;62323:22;:::i;:::-;62316:5;62313:33;62303:61;;62360:1;62357;62350:12;62303:61;62252:118;:::o

Swarm Source

ipfs://655527ac58de88d6f6723137827253528440ce35075ecd3dd6fbae62b87b0b06
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.