Contract 0xe97bf54cc139b88c533759dfb16b2bd73dca8264 10

Contract Overview

Balance:
0 MATIC
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x5d74831bb0dfe54ce24038a558345d7977e885091adc67e3fc2360c0c91dcc77Safe Transfer Fr...393974942023-08-25 21:49:2929 days 19 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0x398d8b40d7973e7c90781550c52b0079ee079ad7a3f9f9dfce415960d052646eSafe Transfer Fr...393971212023-08-25 21:30:1529 days 20 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0x2696bc33d4f6429d3087803274d385ea49eab39ea9bec54c2340b7e7ffb7958fSafe Transfer Fr...393955882023-08-25 20:12:5729 days 21 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0x1827c4616ecef57be2fdda11e62e838ec5301e66b2d2ae069962adaaa4d3e2eaSafe Transfer Fr...391528212023-08-19 5:09:4536 days 12 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0x99181c881479a65e2170c2a546348e5f80c0559205cf456273a13525860dc8bfSafe Transfer Fr...383412122023-07-27 12:09:3559 days 5 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0xd3c883d4e880fa1fb17153224474bf2f8a13cb8d9a95a5963abc61dd97c96174Safe Transfer Fr...383392532023-07-27 10:21:1059 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000820383
0xd69b36cd615b4ad29d7bc30544774dcf4efbd5190e4085973181c235e6961d71Safe Transfer Fr...383392462023-07-27 10:20:5259 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000820383
0xac96f8cccd24bf8cc736e56ede6ae835f791fb03779e0aa04d39134e65331e3aSafe Transfer Fr...383378512023-07-27 9:00:5959 days 8 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0x546c59a3083eda7459632b2b951263644567c65874b08d79c706b1f136dec1a2Safe Transfer Fr...382891442023-07-25 14:33:4861 days 3 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0x9f4548bf63056e611ea319357a74ef2a4071c145f6dfc5da1e16eb2c91c1b257Safe Transfer Fr...382889092023-07-25 14:21:4361 days 3 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0xccf3c90c878bef74ce7c67532a4a68d66a24654220cf57bee96bac86d1684f34Safe Transfer Fr...382889062023-07-25 14:21:3161 days 3 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0xccf53f144b5de85a2fa76cbee2cf0fbdd13a93aab0f3c06dafbd418f9d1f02b2Safe Transfer Fr...382888702023-07-25 14:19:3161 days 3 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0x7e38feb8f03ddfb036faf1688592df9eb1556c2b35ccf4399c0e507aa45c61b2Safe Transfer Fr...382888292023-07-25 14:17:1461 days 3 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0001302753
0x85fdb587f77ae21d748f06ad2b7f6e659ab63f4fe20578d740415c543fe58a8aSafe Transfer Fr...382885562023-07-25 14:03:2661 days 3 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0x7dac50d1baadfa7b8cb3fbfd4c8d53f5379e09bb8f7d69310202438087ddebcfSafe Transfer Fr...382885492023-07-25 14:02:5861 days 3 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0xc1bc15e4b0862f0b0c5c95a12653ddc94bcacbe2fbd0f30200db9b552e5928f7Safe Transfer Fr...382879972023-07-25 13:34:0961 days 4 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0x73f55bdfd82e46a8dcb199904d60ec15f3ceb70282e1b4ec4734e83e93bbb76eSafe Transfer Fr...382879762023-07-25 13:32:5761 days 4 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0xd19309e6d5abeb3fe48070ddbf74e036d12a4aa681df507994a822c5e8c9af89Safe Transfer Fr...382879692023-07-25 13:32:4361 days 4 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
0x33c6e541f6a6c0d684269b1a9ca46a93a643ea37cdd0c9a142563abf8127f26fSafe Transfer Fr...382840772023-07-25 10:16:0461 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.000123033
0x1bec386fa402dec580b2659e5915c389a3176039b9a390a4c79f9c6175d9dc56Safe Transfer Fr...382840182023-07-25 10:13:2161 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.000123033
0xd3d166e1988e67b811ecf4aa0b3bbc8f81e257cc9a06bd2a38d0f893ec576946Safe Transfer Fr...382838912023-07-25 10:07:3961 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.000123033
0x00f07299f2cbbf58f8262f5f1efe5b521d41321ad5bafb0e8368f7920550157eSafe Transfer Fr...382837902023-07-25 10:02:3261 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.000123033
0xfccb79d39940c37a85d85b1c3c51403c00bc26c369dbd596982f152c12efef39Safe Transfer Fr...381339742023-07-20 9:35:3466 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.000123033
0x07c3543e5da62bc130495e4b52875e71eba4f74102f98702405a8a01fb83f83eSafe Transfer Fr...380715142023-07-18 9:46:2168 days 7 hrs ago0x2897f0dfa661e62c0047dacce6f88b9a47f19b36 IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0029937373
0xf8b4bee181dfe8d5e9a34ac060b3da7839af5f16386ae5f390d2e69f21ac1c33Safe Transfer Fr...375458092023-07-04 10:50:5582 days 6 hrs ago0x68e5ec03892085f442f7fb5a12bb845f9ea78f8a IN 0xe97bf54cc139b88c533759dfb16b2bd73dca82640 MATIC0.0000892473
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DNXI

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at PolygonScan.com on 2022-02-21
*/

/**
 *Submitted for verification at polygonscan.com on 2021-08-14
*/

// File: @openzeppelin/[email protected]/access/Ownable.sol

// SPDX-License-Identifier: MIT

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


/**
 * @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);
}



/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

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

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

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

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

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

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

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

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

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





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

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

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

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

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

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

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

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

/**
 * @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;
    }
}

/**
 * @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);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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



/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}



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

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





/**
 * @dev Implementation of the basic standard multi-token.
 * See https://eips.ethereum.org/EIPS/eip-1155
 * Originally based on code by Enjin: https://github.com/enjin/erc-1155
 *
 * _Available since v3.1._
 */
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

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

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

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

    /**
     * @dev See {_setURI}.
     */
    constructor(string memory uri_) {
        _setURI(uri_);
    }

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


    bytes16 private constant alphabet = "0123456789abcdef";

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

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

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
  function uri(
    uint256 id
  ) public view override returns (string memory) {
        string memory base = _uri;
        return bytes(base).length > 0
            ? string(abi.encodePacked(base, toString(id)))
            : '';
  }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

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

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

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(_msgSender() != operator, "ERC1155: setting approval status for self");

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

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

    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

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

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

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

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(account != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][account] += amount;
        emit TransferSingle(operator, address(0), account, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `account`
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address account,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 accountBalance = _balances[id][account];
        require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][account] = accountBalance - amount;
        }

        emit TransferSingle(operator, account, address(0), id, amount);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(
        address account,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 accountBalance = _balances[id][account];
            require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][account] = accountBalance - amount;
            }
        }

        emit TransferBatch(operator, account, address(0), ids, amounts);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

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

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

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

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


contract DNXI is ERC1155, Ownable {
    constructor() ERC1155("https://api.dinox.io/dnxi/") {}

    function setURI(string memory newuri) public onlyOwner {
        _setURI(newuri);
    }

    function mint(address account, uint256 id, uint256 amount, bytes memory data)
        public
        onlyOwner
    {
        _mint(account, id, amount, data);
    }

    function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
        public
        onlyOwner
    {
        _mintBatch(to, ids, amounts, data);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newuri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280601a81526020017f68747470733a2f2f6170692e64696e6f782e696f2f646e78692f00000000000081525062000059816200008060201b60201c565b506200007a6200006e6200009c60201b60201c565b620000a460201b60201c565b6200027f565b8060029080519060200190620000989291906200016a565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b82805462000178906200021a565b90600052602060002090601f0160209004810192826200019c5760008555620001e8565b82601f10620001b757805160ff1916838001178555620001e8565b82800160010185558215620001e8579182015b82811115620001e7578251825591602001919060010190620001ca565b5b509050620001f79190620001fb565b5090565b5b8082111562000216576000816000905550600101620001fc565b5090565b600060028204905060018216806200023357607f821691505b602082108114156200024a576200024962000250565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6136c7806200028f6000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c8063715018a611610097578063e8a3d48511610066578063e8a3d4851461026d578063e985e9c51461028b578063f242432a146102bb578063f2fde38b146102d7576100f4565b8063715018a61461020d578063731133e9146102175780638da5cb5b14610233578063a22cb46514610251576100f4565b80630e89341c116100d35780630e89341c146101755780631f7fdffa146101a55780632eb2c2d6146101c15780634e1273f4146101dd576100f4565b8062fdd58e146100f957806301ffc9a71461012957806302fe530514610159575b600080fd5b610113600480360381019061010e919061256c565b6102f3565b60405161012091906130df565b60405180910390f35b610143600480360381019061013e919061268f565b6103bc565b6040516101509190612f02565b60405180910390f35b610173600480360381019061016e91906126e1565b61049e565b005b61018f600480360381019061018a9190612722565b610526565b60405161019c9190612f1d565b60405180910390f35b6101bf60048036038101906101ba9190612485565b610608565b005b6101db60048036038101906101d69190612337565b610696565b005b6101f760048036038101906101f29190612623565b610737565b6040516102049190612ea9565b60405180910390f35b6102156108e8565b005b610231600480360381019061022c91906125a8565b610970565b005b61023b6109fe565b6040516102489190612dcc565b60405180910390f35b61026b60048036038101906102669190612530565b610a28565b005b610275610ba9565b6040516102829190612f1d565b60405180910390f35b6102a560048036038101906102a091906122fb565b610c3b565b6040516102b29190612f02565b60405180910390f35b6102d560048036038101906102d091906123f6565b610ccf565b005b6102f160048036038101906102ec91906122d2565b610d70565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035b90612f7f565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048757507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610497575061049682610e68565b5b9050919050565b6104a6610ed2565b73ffffffffffffffffffffffffffffffffffffffff166104c46109fe565b73ffffffffffffffffffffffffffffffffffffffff161461051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105119061303f565b60405180910390fd5b61052381610eda565b50565b6060600060028054610537906133f9565b80601f0160208091040260200160405190810160405280929190818152602001828054610563906133f9565b80156105b05780601f10610585576101008083540402835291602001916105b0565b820191906000526020600020905b81548152906001019060200180831161059357829003601f168201915b5050505050905060008151116105d55760405180602001604052806000815250610600565b806105df84610ef4565b6040516020016105f0929190612da8565b6040516020818303038152906040525b915050919050565b610610610ed2565b73ffffffffffffffffffffffffffffffffffffffff1661062e6109fe565b73ffffffffffffffffffffffffffffffffffffffff1614610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067b9061303f565b60405180910390fd5b610690848484846110a1565b50505050565b61069e610ed2565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106e457506106e3856106de610ed2565b610c3b565b5b610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90612fff565b60405180910390fd5b610730858585858561130b565b5050505050565b6060815183511461077d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107749061307f565b60405180910390fd5b6000835167ffffffffffffffff8111156107c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156107ee5781602001602082028036833780820191505090505b50905060005b84518110156108dd57610887858281518110610839577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015185838151811061087a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516102f3565b8282815181106108c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001018181525050806108d69061342b565b90506107f4565b508091505092915050565b6108f0610ed2565b73ffffffffffffffffffffffffffffffffffffffff1661090e6109fe565b73ffffffffffffffffffffffffffffffffffffffff1614610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b9061303f565b60405180910390fd5b61096e600061166b565b565b610978610ed2565b73ffffffffffffffffffffffffffffffffffffffff166109966109fe565b73ffffffffffffffffffffffffffffffffffffffff16146109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e39061303f565b60405180910390fd5b6109f884848484611731565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8173ffffffffffffffffffffffffffffffffffffffff16610a47610ed2565b73ffffffffffffffffffffffffffffffffffffffff161415610a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a959061305f565b60405180910390fd5b8060016000610aab610ed2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610b58610ed2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610b9d9190612f02565b60405180910390a35050565b606060028054610bb8906133f9565b80601f0160208091040260200160405190810160405280929190818152602001828054610be4906133f9565b8015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b5050505050905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610cd7610ed2565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610d1d5750610d1c85610d17610ed2565b610c3b565b5b610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5390612fbf565b60405180910390fd5b610d6985858585856118c7565b5050505050565b610d78610ed2565b73ffffffffffffffffffffffffffffffffffffffff16610d966109fe565b73ffffffffffffffffffffffffffffffffffffffff1614610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de39061303f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5390612f9f565b60405180910390fd5b610e658161166b565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190610ef0929190611fca565b5050565b60606000821415610f3c576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061109c565b600082905060005b60008214610f6e578080610f579061342b565b915050600a82610f6791906132de565b9150610f44565b60008167ffffffffffffffff811115610fb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610fe25781602001600182028036833780820191505090505b5090505b6000851461109557600182610ffb919061330f565b9150600a8561100a9190613474565b60306110169190613288565b60f81b818381518110611052577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561108e91906132de565b9450610fe6565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611111576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611108906130bf565b60405180910390fd5b8151835114611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c9061309f565b60405180910390fd5b600061115f610ed2565b905061117081600087878787611b49565b60005b8451811015611275578381815181106111b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000808784815181106111f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461125b9190613288565b92505081905550808061126d9061342b565b915050611173565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112ed929190612ecb565b60405180910390a461130481600087878787611b51565b5050505050565b815183511461134f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113469061309f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b690612fdf565b60405180910390fd5b60006113c9610ed2565b90506113d9818787878787611b49565b60005b84518110156115d6576000858281518110611420577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110611465577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd9061301f565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115bb9190613288565b92505081905550505050806115cf9061342b565b90506113dc565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161164d929190612ecb565b60405180910390a4611663818787878787611b51565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156117a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611798906130bf565b60405180910390fd5b60006117ab610ed2565b90506117cc816000876117bd88611d21565b6117c688611d21565b87611b49565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461182b9190613288565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516118a99291906130fa565b60405180910390a46118c081600087878787611de7565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90612fdf565b60405180910390fd5b6000611941610ed2565b905061196181878761195288611d21565b61195b88611d21565b87611b49565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef9061301f565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611aad9190613288565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611b2a9291906130fa565b60405180910390a4611b40828888888888611de7565b50505050505050565b505050505050565b611b708473ffffffffffffffffffffffffffffffffffffffff16611fb7565b15611d19578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611bb6959493929190612de7565b602060405180830381600087803b158015611bd057600080fd5b505af1925050508015611c0157506040513d601f19601f82011682018060405250810190611bfe91906126b8565b60015b611c9057611c0d61357f565b80611c185750611c55565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c9190612f1d565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8790612f3f565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e90612f5f565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611d66577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611d945781602001602082028036833780820191505090505b5090508281600081518110611dd2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b611e068473ffffffffffffffffffffffffffffffffffffffff16611fb7565b15611faf578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611e4c959493929190612e4f565b602060405180830381600087803b158015611e6657600080fd5b505af1925050508015611e9757506040513d601f19601f82011682018060405250810190611e9491906126b8565b60015b611f2657611ea361357f565b80611eae5750611eeb565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee29190612f1d565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d90612f3f565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa490612f5f565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054611fd6906133f9565b90600052602060002090601f016020900481019282611ff8576000855561203f565b82601f1061201157805160ff191683800117855561203f565b8280016001018555821561203f579182015b8281111561203e578251825591602001919060010190612023565b5b50905061204c9190612050565b5090565b5b80821115612069576000816000905550600101612051565b5090565b600061208061207b84613154565b613123565b9050808382526020820190508285602086028201111561209f57600080fd5b60005b858110156120cf57816120b588826121c1565b8452602084019350602083019250506001810190506120a2565b5050509392505050565b60006120ec6120e784613180565b613123565b9050808382526020820190508285602086028201111561210b57600080fd5b60005b8581101561213b578161212188826122bd565b84526020840193506020830192505060018101905061210e565b5050509392505050565b6000612158612153846131ac565b613123565b90508281526020810184848401111561217057600080fd5b61217b8482856133b7565b509392505050565b6000612196612191846131dc565b613123565b9050828152602081018484840111156121ae57600080fd5b6121b98482856133b7565b509392505050565b6000813590506121d081613635565b92915050565b600082601f8301126121e757600080fd5b81356121f784826020860161206d565b91505092915050565b600082601f83011261221157600080fd5b81356122218482602086016120d9565b91505092915050565b6000813590506122398161364c565b92915050565b60008135905061224e81613663565b92915050565b60008151905061226381613663565b92915050565b600082601f83011261227a57600080fd5b813561228a848260208601612145565b91505092915050565b600082601f8301126122a457600080fd5b81356122b4848260208601612183565b91505092915050565b6000813590506122cc8161367a565b92915050565b6000602082840312156122e457600080fd5b60006122f2848285016121c1565b91505092915050565b6000806040838503121561230e57600080fd5b600061231c858286016121c1565b925050602061232d858286016121c1565b9150509250929050565b600080600080600060a0868803121561234f57600080fd5b600061235d888289016121c1565b955050602061236e888289016121c1565b945050604086013567ffffffffffffffff81111561238b57600080fd5b61239788828901612200565b935050606086013567ffffffffffffffff8111156123b457600080fd5b6123c088828901612200565b925050608086013567ffffffffffffffff8111156123dd57600080fd5b6123e988828901612269565b9150509295509295909350565b600080600080600060a0868803121561240e57600080fd5b600061241c888289016121c1565b955050602061242d888289016121c1565b945050604061243e888289016122bd565b935050606061244f888289016122bd565b925050608086013567ffffffffffffffff81111561246c57600080fd5b61247888828901612269565b9150509295509295909350565b6000806000806080858703121561249b57600080fd5b60006124a9878288016121c1565b945050602085013567ffffffffffffffff8111156124c657600080fd5b6124d287828801612200565b935050604085013567ffffffffffffffff8111156124ef57600080fd5b6124fb87828801612200565b925050606085013567ffffffffffffffff81111561251857600080fd5b61252487828801612269565b91505092959194509250565b6000806040838503121561254357600080fd5b6000612551858286016121c1565b92505060206125628582860161222a565b9150509250929050565b6000806040838503121561257f57600080fd5b600061258d858286016121c1565b925050602061259e858286016122bd565b9150509250929050565b600080600080608085870312156125be57600080fd5b60006125cc878288016121c1565b94505060206125dd878288016122bd565b93505060406125ee878288016122bd565b925050606085013567ffffffffffffffff81111561260b57600080fd5b61261787828801612269565b91505092959194509250565b6000806040838503121561263657600080fd5b600083013567ffffffffffffffff81111561265057600080fd5b61265c858286016121d6565b925050602083013567ffffffffffffffff81111561267957600080fd5b61268585828601612200565b9150509250929050565b6000602082840312156126a157600080fd5b60006126af8482850161223f565b91505092915050565b6000602082840312156126ca57600080fd5b60006126d884828501612254565b91505092915050565b6000602082840312156126f357600080fd5b600082013567ffffffffffffffff81111561270d57600080fd5b61271984828501612293565b91505092915050565b60006020828403121561273457600080fd5b6000612742848285016122bd565b91505092915050565b60006127578383612d8a565b60208301905092915050565b61276c81613343565b82525050565b600061277d8261321c565b612787818561324a565b93506127928361320c565b8060005b838110156127c35781516127aa888261274b565b97506127b58361323d565b925050600181019050612796565b5085935050505092915050565b6127d981613355565b82525050565b60006127ea82613227565b6127f4818561325b565b93506128048185602086016133c6565b61280d81613561565b840191505092915050565b600061282382613232565b61282d818561326c565b935061283d8185602086016133c6565b61284681613561565b840191505092915050565b600061285c82613232565b612866818561327d565b93506128768185602086016133c6565b80840191505092915050565b600061288f60348361326c565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b60006128f560288361326c565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b600061295b602b8361326c565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b60006129c160268361326c565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a2760298361326c565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a8d60258361326c565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612af360328361326c565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b6000612b59602a8361326c565b91507f455243313135353a20696e73756666696369656e742062616c616e636520666f60008301527f72207472616e73666572000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bbf60208361326c565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612bff60298361326c565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c6560298361326c565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ccb60288361326c565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d3160218361326c565b91507f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b612d93816133ad565b82525050565b612da2816133ad565b82525050565b6000612db48285612851565b9150612dc08284612851565b91508190509392505050565b6000602082019050612de16000830184612763565b92915050565b600060a082019050612dfc6000830188612763565b612e096020830187612763565b8181036040830152612e1b8186612772565b90508181036060830152612e2f8185612772565b90508181036080830152612e4381846127df565b90509695505050505050565b600060a082019050612e646000830188612763565b612e716020830187612763565b612e7e6040830186612d99565b612e8b6060830185612d99565b8181036080830152612e9d81846127df565b90509695505050505050565b60006020820190508181036000830152612ec38184612772565b905092915050565b60006040820190508181036000830152612ee58185612772565b90508181036020830152612ef98184612772565b90509392505050565b6000602082019050612f1760008301846127d0565b92915050565b60006020820190508181036000830152612f378184612818565b905092915050565b60006020820190508181036000830152612f5881612882565b9050919050565b60006020820190508181036000830152612f78816128e8565b9050919050565b60006020820190508181036000830152612f988161294e565b9050919050565b60006020820190508181036000830152612fb8816129b4565b9050919050565b60006020820190508181036000830152612fd881612a1a565b9050919050565b60006020820190508181036000830152612ff881612a80565b9050919050565b6000602082019050818103600083015261301881612ae6565b9050919050565b6000602082019050818103600083015261303881612b4c565b9050919050565b6000602082019050818103600083015261305881612bb2565b9050919050565b6000602082019050818103600083015261307881612bf2565b9050919050565b6000602082019050818103600083015261309881612c58565b9050919050565b600060208201905081810360008301526130b881612cbe565b9050919050565b600060208201905081810360008301526130d881612d24565b9050919050565b60006020820190506130f46000830184612d99565b92915050565b600060408201905061310f6000830185612d99565b61311c6020830184612d99565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561314a57613149613532565b5b8060405250919050565b600067ffffffffffffffff82111561316f5761316e613532565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561319b5761319a613532565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156131c7576131c6613532565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156131f7576131f6613532565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613293826133ad565b915061329e836133ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132d3576132d26134a5565b5b828201905092915050565b60006132e9826133ad565b91506132f4836133ad565b925082613304576133036134d4565b5b828204905092915050565b600061331a826133ad565b9150613325836133ad565b925082821015613338576133376134a5565b5b828203905092915050565b600061334e8261338d565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156133e45780820151818401526020810190506133c9565b838111156133f3576000848401525b50505050565b6000600282049050600182168061341157607f821691505b6020821081141561342557613424613503565b5b50919050565b6000613436826133ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613469576134686134a5565b5b600182019050919050565b600061347f826133ad565b915061348a836133ad565b92508261349a576134996134d4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d101561358f57613632565b60046000803e6135a0600051613572565b6308c379a081146135b15750613632565b60405160043d036004823e80513d602482011167ffffffffffffffff821117156135dd57505050613632565b808201805167ffffffffffffffff8111156135fc575050505050613632565b8060208301013d850181111561361757505050505050613632565b61362082613561565b60208401016040528296505050505050505b90565b61363e81613343565b811461364957600080fd5b50565b61365581613355565b811461366057600080fd5b50565b61366c81613361565b811461367757600080fd5b50565b613683816133ad565b811461368e57600080fd5b5056fea264697066735822122038eb7c60244a47da54d8fe6aec707476b3bb0973cdb955a778ef12d4e1d0660564736f6c63430008000033

Deployed ByteCode Sourcemap

36794:571:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23385:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20358:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36897:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22994:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37171:191;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25480:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23782:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7292:94;;;:::i;:::-;;36994:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6641:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24379:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36692:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24762:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25002:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7541:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23385:231;23471:7;23518:1;23499:21;;:7;:21;;;;23491:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23586:9;:13;23596:2;23586:13;;;;;;;;;;;:22;23600:7;23586:22;;;;;;;;;;;;;;;;23579:29;;23385:231;;;;:::o;20358:310::-;20460:4;20512:26;20497:41;;;:11;:41;;;;:110;;;;20570:37;20555:52;;;:11;:52;;;;20497:110;:163;;;;20624:36;20648:11;20624:23;:36::i;:::-;20497:163;20477:183;;20358:310;;;:::o;36897:89::-;6872:12;:10;:12::i;:::-;6861:23;;:7;:5;:7::i;:::-;:23;;;6853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36963:15:::1;36971:6;36963:7;:15::i;:::-;36897:89:::0;:::o;22994:240::-;23059:13;23085:18;23106:4;23085:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23149:1;23134:4;23128:18;:22;:100;;;;;;;;;;;;;;;;;23190:4;23196:12;23205:2;23196:8;:12::i;:::-;23173:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23128:100;23121:107;;;22994:240;;;:::o;37171:191::-;6872:12;:10;:12::i;:::-;6861:23;;:7;:5;:7::i;:::-;:23;;;6853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37320:34:::1;37331:2;37335:3;37340:7;37349:4;37320:10;:34::i;:::-;37171:191:::0;;;;:::o;25480:442::-;25721:12;:10;:12::i;:::-;25713:20;;:4;:20;;;:60;;;;25737:36;25754:4;25760:12;:10;:12::i;:::-;25737:16;:36::i;:::-;25713:60;25691:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25862:52;25885:4;25891:2;25895:3;25900:7;25909:4;25862:22;:52::i;:::-;25480:442;;;;;:::o;23782:524::-;23938:16;23999:3;:10;23980:8;:15;:29;23972:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;24068:30;24115:8;:15;24101:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24068:63;;24149:9;24144:122;24168:8;:15;24164:1;:19;24144:122;;;24224:30;24234:8;24243:1;24234:11;;;;;;;;;;;;;;;;;;;;;;24247:3;24251:1;24247:6;;;;;;;;;;;;;;;;;;;;;;24224:9;:30::i;:::-;24205:13;24219:1;24205:16;;;;;;;;;;;;;;;;;;;;;:49;;;;;24185:3;;;;:::i;:::-;;;24144:122;;;;24285:13;24278:20;;;23782:524;;;;:::o;7292:94::-;6872:12;:10;:12::i;:::-;6861:23;;:7;:5;:7::i;:::-;:23;;;6853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7357:21:::1;7375:1;7357:9;:21::i;:::-;7292:94::o:0;36994:169::-;6872:12;:10;:12::i;:::-;6861:23;;:7;:5;:7::i;:::-;:23;;;6853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37123:32:::1;37129:7;37138:2;37142:6;37150:4;37123:5;:32::i;:::-;36994:169:::0;;;;:::o;6641:87::-;6687:7;6714:6;;;;;;;;;;;6707:13;;6641:87;:::o;24379:311::-;24498:8;24482:24;;:12;:10;:12::i;:::-;:24;;;;24474:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;24610:8;24565:18;:32;24584:12;:10;:12::i;:::-;24565:32;;;;;;;;;;;;;;;:42;24598:8;24565:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;24663:8;24634:48;;24649:12;:10;:12::i;:::-;24634:48;;;24673:8;24634:48;;;;;;:::i;:::-;;;;;;;;24379:311;;:::o;36692:89::-;36736:13;36769:4;36762:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36692:89;:::o;24762:168::-;24861:4;24885:18;:27;24904:7;24885:27;;;;;;;;;;;;;;;:37;24913:8;24885:37;;;;;;;;;;;;;;;;;;;;;;;;;24878:44;;24762:168;;;;:::o;25002:401::-;25218:12;:10;:12::i;:::-;25210:20;;:4;:20;;;:60;;;;25234:36;25251:4;25257:12;:10;:12::i;:::-;25234:16;:36::i;:::-;25210:60;25188:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;25350:45;25368:4;25374:2;25378;25382:6;25390:4;25350:17;:45::i;:::-;25002:401;;;;;:::o;7541:192::-;6872:12;:10;:12::i;:::-;6861:23;;:7;:5;:7::i;:::-;:23;;;6853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7650:1:::1;7630:22;;:8;:22;;;;7622:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7706:19;7716:8;7706:9;:19::i;:::-;7541:192:::0;:::o;8619:157::-;8704:4;8743:25;8728:40;;;:11;:40;;;;8721:47;;8619:157;;;:::o;740:98::-;793:7;820:10;813:17;;740:98;:::o;29482:88::-;29556:6;29549:4;:13;;;;;;;;;;;;:::i;:::-;;29482:88;:::o;20839:723::-;20895:13;21125:1;21116:5;:10;21112:53;;;21143:10;;;;;;;;;;;;;;;;;;;;;21112:53;21175:12;21190:5;21175:20;;21206:14;21231:78;21246:1;21238:4;:9;21231:78;;21264:8;;;;;:::i;:::-;;;;21295:2;21287:10;;;;;:::i;:::-;;;21231:78;;;21319:19;21351:6;21341:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21319:39;;21369:154;21385:1;21376:5;:10;21369:154;;21413:1;21403:11;;;;;:::i;:::-;;;21480:2;21472:5;:10;;;;:::i;:::-;21459:2;:24;;;;:::i;:::-;21446:39;;21429:6;21436;21429:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;21509:2;21500:11;;;;;:::i;:::-;;;21369:154;;;21547:6;21533:21;;;;;20839:723;;;;:::o;30926:735::-;31118:1;31104:16;;:2;:16;;;;31096:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;31191:7;:14;31177:3;:10;:28;31169:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31263:16;31282:12;:10;:12::i;:::-;31263:31;;31307:66;31328:8;31346:1;31350:2;31354:3;31359:7;31368:4;31307:20;:66::i;:::-;31391:9;31386:103;31410:3;:10;31406:1;:14;31386:103;;;31467:7;31475:1;31467:10;;;;;;;;;;;;;;;;;;;;;;31442:9;:17;31452:3;31456:1;31452:6;;;;;;;;;;;;;;;;;;;;;;31442:17;;;;;;;;;;;:21;31460:2;31442:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;31422:3;;;;;:::i;:::-;;;;31386:103;;;;31542:2;31506:53;;31538:1;31506:53;;31520:8;31506:53;;;31546:3;31551:7;31506:53;;;;;;;:::i;:::-;;;;;;;;31572:81;31608:8;31626:1;31630:2;31634:3;31639:7;31648:4;31572:35;:81::i;:::-;30926:735;;;;;:::o;27564:1074::-;27791:7;:14;27777:3;:10;:28;27769:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;27883:1;27869:16;;:2;:16;;;;27861:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27940:16;27959:12;:10;:12::i;:::-;27940:31;;27984:60;28005:8;28015:4;28021:2;28025:3;28030:7;28039:4;27984:20;:60::i;:::-;28062:9;28057:421;28081:3;:10;28077:1;:14;28057:421;;;28113:10;28126:3;28130:1;28126:6;;;;;;;;;;;;;;;;;;;;;;28113:19;;28147:14;28164:7;28172:1;28164:10;;;;;;;;;;;;;;;;;;;;;;28147:27;;28191:19;28213:9;:13;28223:2;28213:13;;;;;;;;;;;:19;28227:4;28213:19;;;;;;;;;;;;;;;;28191:41;;28270:6;28255:11;:21;;28247:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;28403:6;28389:11;:20;28367:9;:13;28377:2;28367:13;;;;;;;;;;;:19;28381:4;28367:19;;;;;;;;;;;;;;;:42;;;;28460:6;28439:9;:13;28449:2;28439:13;;;;;;;;;;;:17;28453:2;28439:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28057:421;;;28093:3;;;;:::i;:::-;;;28057:421;;;;28525:2;28495:47;;28519:4;28495:47;;28509:8;28495:47;;;28529:3;28534:7;28495:47;;;;;;;:::i;:::-;;;;;;;;28555:75;28591:8;28601:4;28607:2;28611:3;28616:7;28625:4;28555:35;:75::i;:::-;27564:1074;;;;;;:::o;7741:173::-;7797:16;7816:6;;;;;;;;;;;7797:25;;7842:8;7833:6;;:17;;;;;;;;;;;;;;;;;;7897:8;7866:40;;7887:8;7866:40;;;;;;;;;;;;7741:173;;:::o;29971:599::-;30148:1;30129:21;;:7;:21;;;;30121:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30201:16;30220:12;:10;:12::i;:::-;30201:31;;30245:107;30266:8;30284:1;30288:7;30297:21;30315:2;30297:17;:21::i;:::-;30320:25;30338:6;30320:17;:25::i;:::-;30347:4;30245:20;:107::i;:::-;30391:6;30365:9;:13;30375:2;30365:13;;;;;;;;;;;:22;30379:7;30365:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;30450:7;30413:57;;30446:1;30413:57;;30428:8;30413:57;;;30459:2;30463:6;30413:57;;;;;;;:::i;:::-;;;;;;;;30483:79;30514:8;30532:1;30536:7;30545:2;30549:6;30557:4;30483:30;:79::i;:::-;29971:599;;;;;:::o;26386:820::-;26588:1;26574:16;;:2;:16;;;;26566:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26645:16;26664:12;:10;:12::i;:::-;26645:31;;26689:96;26710:8;26720:4;26726:2;26730:21;26748:2;26730:17;:21::i;:::-;26753:25;26771:6;26753:17;:25::i;:::-;26780:4;26689:20;:96::i;:::-;26798:19;26820:9;:13;26830:2;26820:13;;;;;;;;;;;:19;26834:4;26820:19;;;;;;;;;;;;;;;;26798:41;;26873:6;26858:11;:21;;26850:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26998:6;26984:11;:20;26962:9;:13;26972:2;26962:13;;;;;;;;;;;:19;26976:4;26962:19;;;;;;;;;;;;;;;:42;;;;27047:6;27026:9;:13;27036:2;27026:13;;;;;;;;;;;:17;27040:2;27026:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27102:2;27071:46;;27096:4;27071:46;;27086:8;27071:46;;;27106:2;27110:6;27071:46;;;;;;;:::i;:::-;;;;;;;;27130:68;27161:8;27171:4;27177:2;27181;27185:6;27193:4;27130:30;:68::i;:::-;26386:820;;;;;;;:::o;34672:221::-;;;;;;;:::o;35657:817::-;35897:15;:2;:13;;;:15::i;:::-;35893:574;;;35950:2;35933:43;;;35977:8;35987:4;35993:3;35998:7;36007:4;35933:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35929:527;;;;:::i;:::-;;;;;;;;36329:6;36322:14;;;;;;;;;;;:::i;:::-;;;;;;;;35929:527;36378:62;;;;;;;;;;:::i;:::-;;;;;;;;35929:527;36106:52;;;36094:64;;;:8;:64;;;;36090:163;;36183:50;;;;;;;;;;:::i;:::-;;;;;;;;36090:163;36013:255;35893:574;35657:817;;;;;;:::o;36482:198::-;36548:16;36577:22;36616:1;36602:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36577:41;;36640:7;36629:5;36635:1;36629:8;;;;;;;;;;;;;;;;;;;;;:18;;;;;36667:5;36660:12;;;36482:198;;;:::o;34901:748::-;35116:15;:2;:13;;;:15::i;:::-;35112:530;;;35169:2;35152:38;;;35191:8;35201:4;35207:2;35211:6;35219:4;35152:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35148:483;;;;:::i;:::-;;;;;;;;35504:6;35497:14;;;;;;;;;;;:::i;:::-;;;;;;;;35148:483;35553:62;;;;;;;;;;:::i;:::-;;;;;;;;35148:483;35286:47;;;35274:59;;;:8;:59;;;;35270:158;;35358:50;;;;;;;;;;:::i;:::-;;;;;;;;35270:158;35225:218;35112:530;34901:748;;;;;;:::o;9464:387::-;9524:4;9732:12;9799:7;9787:20;9779:28;;9842:1;9835:4;:8;9828:15;;;9464:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:342::-;;1399:64;1414:48;1455:6;1414:48;:::i;:::-;1399:64;:::i;:::-;1390:73;;1486:6;1479:5;1472:21;1524:4;1517:5;1513:16;1562:3;1553:6;1548:3;1544:16;1541:25;1538:2;;;1579:1;1576;1569:12;1538:2;1592:41;1626:6;1621:3;1616;1592:41;:::i;:::-;1380:259;;;;;;:::o;1645:344::-;;1748:65;1763:49;1805:6;1763:49;:::i;:::-;1748:65;:::i;:::-;1739:74;;1836:6;1829:5;1822:21;1874:4;1867:5;1863:16;1912:3;1903:6;1898:3;1894:16;1891:25;1888:2;;;1929:1;1926;1919:12;1888:2;1942:41;1976:6;1971:3;1966;1942:41;:::i;:::-;1729:260;;;;;;:::o;1995:139::-;;2079:6;2066:20;2057:29;;2095:33;2122:5;2095:33;:::i;:::-;2047:87;;;;:::o;2157:303::-;;2277:3;2270:4;2262:6;2258:17;2254:27;2244:2;;2295:1;2292;2285:12;2244:2;2335:6;2322:20;2360:94;2450:3;2442:6;2435:4;2427:6;2423:17;2360:94;:::i;:::-;2351:103;;2234:226;;;;;:::o;2483:303::-;;2603:3;2596:4;2588:6;2584:17;2580:27;2570:2;;2621:1;2618;2611:12;2570:2;2661:6;2648:20;2686:94;2776:3;2768:6;2761:4;2753:6;2749:17;2686:94;:::i;:::-;2677:103;;2560:226;;;;;:::o;2792:133::-;;2873:6;2860:20;2851:29;;2889:30;2913:5;2889:30;:::i;:::-;2841:84;;;;:::o;2931:137::-;;3014:6;3001:20;2992:29;;3030:32;3056:5;3030:32;:::i;:::-;2982:86;;;;:::o;3074:141::-;;3161:6;3155:13;3146:22;;3177:32;3203:5;3177:32;:::i;:::-;3136:79;;;;:::o;3234:271::-;;3338:3;3331:4;3323:6;3319:17;3315:27;3305:2;;3356:1;3353;3346:12;3305:2;3396:6;3383:20;3421:78;3495:3;3487:6;3480:4;3472:6;3468:17;3421:78;:::i;:::-;3412:87;;3295:210;;;;;:::o;3525:273::-;;3630:3;3623:4;3615:6;3611:17;3607:27;3597:2;;3648:1;3645;3638:12;3597:2;3688:6;3675:20;3713:79;3788:3;3780:6;3773:4;3765:6;3761:17;3713:79;:::i;:::-;3704:88;;3587:211;;;;;:::o;3804:139::-;;3888:6;3875:20;3866:29;;3904:33;3931:5;3904:33;:::i;:::-;3856:87;;;;:::o;3949:262::-;;4057:2;4045:9;4036:7;4032:23;4028:32;4025:2;;;4073:1;4070;4063:12;4025:2;4116:1;4141:53;4186:7;4177:6;4166:9;4162:22;4141:53;:::i;:::-;4131:63;;4087:117;4015:196;;;;:::o;4217:407::-;;;4342:2;4330:9;4321:7;4317:23;4313:32;4310:2;;;4358:1;4355;4348:12;4310:2;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4300:324;;;;;:::o;4630:1241::-;;;;;;4865:3;4853:9;4844:7;4840:23;4836:33;4833:2;;;4882:1;4879;4872:12;4833:2;4925:1;4950:53;4995:7;4986:6;4975:9;4971:22;4950:53;:::i;:::-;4940:63;;4896:117;5052:2;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;:::i;:::-;5068:63;;5023:118;5208:2;5197:9;5193:18;5180:32;5239:18;5231:6;5228:30;5225:2;;;5271:1;5268;5261:12;5225:2;5299:78;5369:7;5360:6;5349:9;5345:22;5299:78;:::i;:::-;5289:88;;5151:236;5454:2;5443:9;5439:18;5426:32;5485:18;5477:6;5474:30;5471:2;;;5517:1;5514;5507:12;5471:2;5545:78;5615:7;5606:6;5595:9;5591:22;5545:78;:::i;:::-;5535:88;;5397:236;5700:3;5689:9;5685:19;5672:33;5732:18;5724:6;5721:30;5718:2;;;5764:1;5761;5754:12;5718:2;5792:62;5846:7;5837:6;5826:9;5822:22;5792:62;:::i;:::-;5782:72;;5643:221;4823:1048;;;;;;;;:::o;5877:955::-;;;;;;6062:3;6050:9;6041:7;6037:23;6033:33;6030:2;;;6079:1;6076;6069:12;6030:2;6122:1;6147:53;6192:7;6183:6;6172:9;6168:22;6147:53;:::i;:::-;6137:63;;6093:117;6249:2;6275:53;6320:7;6311:6;6300:9;6296:22;6275:53;:::i;:::-;6265:63;;6220:118;6377:2;6403:53;6448:7;6439:6;6428:9;6424:22;6403:53;:::i;:::-;6393:63;;6348:118;6505:2;6531:53;6576:7;6567:6;6556:9;6552:22;6531:53;:::i;:::-;6521:63;;6476:118;6661:3;6650:9;6646:19;6633:33;6693:18;6685:6;6682:30;6679:2;;;6725:1;6722;6715:12;6679:2;6753:62;6807:7;6798:6;6787:9;6783:22;6753:62;:::i;:::-;6743:72;;6604:221;6020:812;;;;;;;;:::o;6838:1095::-;;;;;7056:3;7044:9;7035:7;7031:23;7027:33;7024:2;;;7073:1;7070;7063:12;7024:2;7116:1;7141:53;7186:7;7177:6;7166:9;7162:22;7141:53;:::i;:::-;7131:63;;7087:117;7271:2;7260:9;7256:18;7243:32;7302:18;7294:6;7291:30;7288:2;;;7334:1;7331;7324:12;7288:2;7362:78;7432:7;7423:6;7412:9;7408:22;7362:78;:::i;:::-;7352:88;;7214:236;7517:2;7506:9;7502:18;7489:32;7548:18;7540:6;7537:30;7534:2;;;7580:1;7577;7570:12;7534:2;7608:78;7678:7;7669:6;7658:9;7654:22;7608:78;:::i;:::-;7598:88;;7460:236;7763:2;7752:9;7748:18;7735:32;7794:18;7786:6;7783:30;7780:2;;;7826:1;7823;7816:12;7780:2;7854:62;7908:7;7899:6;7888:9;7884:22;7854:62;:::i;:::-;7844:72;;7706:220;7014:919;;;;;;;:::o;7939:401::-;;;8061:2;8049:9;8040:7;8036:23;8032:32;8029:2;;;8077:1;8074;8067:12;8029:2;8120:1;8145:53;8190:7;8181:6;8170:9;8166:22;8145:53;:::i;:::-;8135:63;;8091:117;8247:2;8273:50;8315:7;8306:6;8295:9;8291:22;8273:50;:::i;:::-;8263:60;;8218:115;8019:321;;;;;:::o;8346:407::-;;;8471:2;8459:9;8450:7;8446:23;8442:32;8439:2;;;8487:1;8484;8477:12;8439:2;8530:1;8555:53;8600:7;8591:6;8580:9;8576:22;8555:53;:::i;:::-;8545:63;;8501:117;8657:2;8683:53;8728:7;8719:6;8708:9;8704:22;8683:53;:::i;:::-;8673:63;;8628:118;8429:324;;;;;:::o;8759:809::-;;;;;8927:3;8915:9;8906:7;8902:23;8898:33;8895:2;;;8944:1;8941;8934:12;8895:2;8987:1;9012:53;9057:7;9048:6;9037:9;9033:22;9012:53;:::i;:::-;9002:63;;8958:117;9114:2;9140:53;9185:7;9176:6;9165:9;9161:22;9140:53;:::i;:::-;9130:63;;9085:118;9242:2;9268:53;9313:7;9304:6;9293:9;9289:22;9268:53;:::i;:::-;9258:63;;9213:118;9398:2;9387:9;9383:18;9370:32;9429:18;9421:6;9418:30;9415:2;;;9461:1;9458;9451:12;9415:2;9489:62;9543:7;9534:6;9523:9;9519:22;9489:62;:::i;:::-;9479:72;;9341:220;8885:683;;;;;;;:::o;9574:693::-;;;9749:2;9737:9;9728:7;9724:23;9720:32;9717:2;;;9765:1;9762;9755:12;9717:2;9836:1;9825:9;9821:17;9808:31;9866:18;9858:6;9855:30;9852:2;;;9898:1;9895;9888:12;9852:2;9926:78;9996:7;9987:6;9976:9;9972:22;9926:78;:::i;:::-;9916:88;;9779:235;10081:2;10070:9;10066:18;10053:32;10112:18;10104:6;10101:30;10098:2;;;10144:1;10141;10134:12;10098:2;10172:78;10242:7;10233:6;10222:9;10218:22;10172:78;:::i;:::-;10162:88;;10024:236;9707:560;;;;;:::o;10273:260::-;;10380:2;10368:9;10359:7;10355:23;10351:32;10348:2;;;10396:1;10393;10386:12;10348:2;10439:1;10464:52;10508:7;10499:6;10488:9;10484:22;10464:52;:::i;:::-;10454:62;;10410:116;10338:195;;;;:::o;10539:282::-;;10657:2;10645:9;10636:7;10632:23;10628:32;10625:2;;;10673:1;10670;10663:12;10625:2;10716:1;10741:63;10796:7;10787:6;10776:9;10772:22;10741:63;:::i;:::-;10731:73;;10687:127;10615:206;;;;:::o;10827:375::-;;10945:2;10933:9;10924:7;10920:23;10916:32;10913:2;;;10961:1;10958;10951:12;10913:2;11032:1;11021:9;11017:17;11004:31;11062:18;11054:6;11051:30;11048:2;;;11094:1;11091;11084:12;11048:2;11122:63;11177:7;11168:6;11157:9;11153:22;11122:63;:::i;:::-;11112:73;;10975:220;10903:299;;;;:::o;11208:262::-;;11316:2;11304:9;11295:7;11291:23;11287:32;11284:2;;;11332:1;11329;11322:12;11284:2;11375:1;11400:53;11445:7;11436:6;11425:9;11421:22;11400:53;:::i;:::-;11390:63;;11346:117;11274:196;;;;:::o;11476:179::-;;11566:46;11608:3;11600:6;11566:46;:::i;:::-;11644:4;11639:3;11635:14;11621:28;;11556:99;;;;:::o;11661:118::-;11748:24;11766:5;11748:24;:::i;:::-;11743:3;11736:37;11726:53;;:::o;11815:732::-;;11963:54;12011:5;11963:54;:::i;:::-;12033:86;12112:6;12107:3;12033:86;:::i;:::-;12026:93;;12143:56;12193:5;12143:56;:::i;:::-;12222:7;12253:1;12238:284;12263:6;12260:1;12257:13;12238:284;;;12339:6;12333:13;12366:63;12425:3;12410:13;12366:63;:::i;:::-;12359:70;;12452:60;12505:6;12452:60;:::i;:::-;12442:70;;12298:224;12285:1;12282;12278:9;12273:14;;12238:284;;;12242:14;12538:3;12531:10;;11939:608;;;;;;;:::o;12553:109::-;12634:21;12649:5;12634:21;:::i;:::-;12629:3;12622:34;12612:50;;:::o;12668:360::-;;12782:38;12814:5;12782:38;:::i;:::-;12836:70;12899:6;12894:3;12836:70;:::i;:::-;12829:77;;12915:52;12960:6;12955:3;12948:4;12941:5;12937:16;12915:52;:::i;:::-;12992:29;13014:6;12992:29;:::i;:::-;12987:3;12983:39;12976:46;;12758:270;;;;;:::o;13034:364::-;;13150:39;13183:5;13150:39;:::i;:::-;13205:71;13269:6;13264:3;13205:71;:::i;:::-;13198:78;;13285:52;13330:6;13325:3;13318:4;13311:5;13307:16;13285:52;:::i;:::-;13362:29;13384:6;13362:29;:::i;:::-;13357:3;13353:39;13346:46;;13126:272;;;;;:::o;13404:377::-;;13538:39;13571:5;13538:39;:::i;:::-;13593:89;13675:6;13670:3;13593:89;:::i;:::-;13586:96;;13691:52;13736:6;13731:3;13724:4;13717:5;13713:16;13691:52;:::i;:::-;13768:6;13763:3;13759:16;13752:23;;13514:267;;;;;:::o;13787:384::-;;13950:67;14014:2;14009:3;13950:67;:::i;:::-;13943:74;;14047:34;14043:1;14038:3;14034:11;14027:55;14113:22;14108:2;14103:3;14099:12;14092:44;14162:2;14157:3;14153:12;14146:19;;13933:238;;;:::o;14177:372::-;;14340:67;14404:2;14399:3;14340:67;:::i;:::-;14333:74;;14437:34;14433:1;14428:3;14424:11;14417:55;14503:10;14498:2;14493:3;14489:12;14482:32;14540:2;14535:3;14531:12;14524:19;;14323:226;;;:::o;14555:375::-;;14718:67;14782:2;14777:3;14718:67;:::i;:::-;14711:74;;14815:34;14811:1;14806:3;14802:11;14795:55;14881:13;14876:2;14871:3;14867:12;14860:35;14921:2;14916:3;14912:12;14905:19;;14701:229;;;:::o;14936:370::-;;15099:67;15163:2;15158:3;15099:67;:::i;:::-;15092:74;;15196:34;15192:1;15187:3;15183:11;15176:55;15262:8;15257:2;15252:3;15248:12;15241:30;15297:2;15292:3;15288:12;15281:19;;15082:224;;;:::o;15312:373::-;;15475:67;15539:2;15534:3;15475:67;:::i;:::-;15468:74;;15572:34;15568:1;15563:3;15559:11;15552:55;15638:11;15633:2;15628:3;15624:12;15617:33;15676:2;15671:3;15667:12;15660:19;;15458:227;;;:::o;15691:369::-;;15854:67;15918:2;15913:3;15854:67;:::i;:::-;15847:74;;15951:34;15947:1;15942:3;15938:11;15931:55;16017:7;16012:2;16007:3;16003:12;15996:29;16051:2;16046:3;16042:12;16035:19;;15837:223;;;:::o;16066:382::-;;16229:67;16293:2;16288:3;16229:67;:::i;:::-;16222:74;;16326:34;16322:1;16317:3;16313:11;16306:55;16392:20;16387:2;16382:3;16378:12;16371:42;16439:2;16434:3;16430:12;16423:19;;16212:236;;;:::o;16454:374::-;;16617:67;16681:2;16676:3;16617:67;:::i;:::-;16610:74;;16714:34;16710:1;16705:3;16701:11;16694:55;16780:12;16775:2;16770:3;16766:12;16759:34;16819:2;16814:3;16810:12;16803:19;;16600:228;;;:::o;16834:330::-;;16997:67;17061:2;17056:3;16997:67;:::i;:::-;16990:74;;17094:34;17090:1;17085:3;17081:11;17074:55;17155:2;17150:3;17146:12;17139:19;;16980:184;;;:::o;17170:373::-;;17333:67;17397:2;17392:3;17333:67;:::i;:::-;17326:74;;17430:34;17426:1;17421:3;17417:11;17410:55;17496:11;17491:2;17486:3;17482:12;17475:33;17534:2;17529:3;17525:12;17518:19;;17316:227;;;:::o;17549:373::-;;17712:67;17776:2;17771:3;17712:67;:::i;:::-;17705:74;;17809:34;17805:1;17800:3;17796:11;17789:55;17875:11;17870:2;17865:3;17861:12;17854:33;17913:2;17908:3;17904:12;17897:19;;17695:227;;;:::o;17928:372::-;;18091:67;18155:2;18150:3;18091:67;:::i;:::-;18084:74;;18188:34;18184:1;18179:3;18175:11;18168:55;18254:10;18249:2;18244:3;18240:12;18233:32;18291:2;18286:3;18282:12;18275:19;;18074:226;;;:::o;18306:365::-;;18469:67;18533:2;18528:3;18469:67;:::i;:::-;18462:74;;18566:34;18562:1;18557:3;18553:11;18546:55;18632:3;18627:2;18622:3;18618:12;18611:25;18662:2;18657:3;18653:12;18646:19;;18452:219;;;:::o;18677:108::-;18754:24;18772:5;18754:24;:::i;:::-;18749:3;18742:37;18732:53;;:::o;18791:118::-;18878:24;18896:5;18878:24;:::i;:::-;18873:3;18866:37;18856:53;;:::o;18915:435::-;;19117:95;19208:3;19199:6;19117:95;:::i;:::-;19110:102;;19229:95;19320:3;19311:6;19229:95;:::i;:::-;19222:102;;19341:3;19334:10;;19099:251;;;;;:::o;19356:222::-;;19487:2;19476:9;19472:18;19464:26;;19500:71;19568:1;19557:9;19553:17;19544:6;19500:71;:::i;:::-;19454:124;;;;:::o;19584:1053::-;;19945:3;19934:9;19930:19;19922:27;;19959:71;20027:1;20016:9;20012:17;20003:6;19959:71;:::i;:::-;20040:72;20108:2;20097:9;20093:18;20084:6;20040:72;:::i;:::-;20159:9;20153:4;20149:20;20144:2;20133:9;20129:18;20122:48;20187:108;20290:4;20281:6;20187:108;:::i;:::-;20179:116;;20342:9;20336:4;20332:20;20327:2;20316:9;20312:18;20305:48;20370:108;20473:4;20464:6;20370:108;:::i;:::-;20362:116;;20526:9;20520:4;20516:20;20510:3;20499:9;20495:19;20488:49;20554:76;20625:4;20616:6;20554:76;:::i;:::-;20546:84;;19912:725;;;;;;;;:::o;20643:751::-;;20904:3;20893:9;20889:19;20881:27;;20918:71;20986:1;20975:9;20971:17;20962:6;20918:71;:::i;:::-;20999:72;21067:2;21056:9;21052:18;21043:6;20999:72;:::i;:::-;21081;21149:2;21138:9;21134:18;21125:6;21081:72;:::i;:::-;21163;21231:2;21220:9;21216:18;21207:6;21163:72;:::i;:::-;21283:9;21277:4;21273:20;21267:3;21256:9;21252:19;21245:49;21311:76;21382:4;21373:6;21311:76;:::i;:::-;21303:84;;20871:523;;;;;;;;:::o;21400:373::-;;21581:2;21570:9;21566:18;21558:26;;21630:9;21624:4;21620:20;21616:1;21605:9;21601:17;21594:47;21658:108;21761:4;21752:6;21658:108;:::i;:::-;21650:116;;21548:225;;;;:::o;21779:634::-;;22038:2;22027:9;22023:18;22015:26;;22087:9;22081:4;22077:20;22073:1;22062:9;22058:17;22051:47;22115:108;22218:4;22209:6;22115:108;:::i;:::-;22107:116;;22270:9;22264:4;22260:20;22255:2;22244:9;22240:18;22233:48;22298:108;22401:4;22392:6;22298:108;:::i;:::-;22290:116;;22005:408;;;;;:::o;22419:210::-;;22544:2;22533:9;22529:18;22521:26;;22557:65;22619:1;22608:9;22604:17;22595:6;22557:65;:::i;:::-;22511:118;;;;:::o;22635:313::-;;22786:2;22775:9;22771:18;22763:26;;22835:9;22829:4;22825:20;22821:1;22810:9;22806:17;22799:47;22863:78;22936:4;22927:6;22863:78;:::i;:::-;22855:86;;22753:195;;;;:::o;22954:419::-;;23158:2;23147:9;23143:18;23135:26;;23207:9;23201:4;23197:20;23193:1;23182:9;23178:17;23171:47;23235:131;23361:4;23235:131;:::i;:::-;23227:139;;23125:248;;;:::o;23379:419::-;;23583:2;23572:9;23568:18;23560:26;;23632:9;23626:4;23622:20;23618:1;23607:9;23603:17;23596:47;23660:131;23786:4;23660:131;:::i;:::-;23652:139;;23550:248;;;:::o;23804:419::-;;24008:2;23997:9;23993:18;23985:26;;24057:9;24051:4;24047:20;24043:1;24032:9;24028:17;24021:47;24085:131;24211:4;24085:131;:::i;:::-;24077:139;;23975:248;;;:::o;24229:419::-;;24433:2;24422:9;24418:18;24410:26;;24482:9;24476:4;24472:20;24468:1;24457:9;24453:17;24446:47;24510:131;24636:4;24510:131;:::i;:::-;24502:139;;24400:248;;;:::o;24654:419::-;;24858:2;24847:9;24843:18;24835:26;;24907:9;24901:4;24897:20;24893:1;24882:9;24878:17;24871:47;24935:131;25061:4;24935:131;:::i;:::-;24927:139;;24825:248;;;:::o;25079:419::-;;25283:2;25272:9;25268:18;25260:26;;25332:9;25326:4;25322:20;25318:1;25307:9;25303:17;25296:47;25360:131;25486:4;25360:131;:::i;:::-;25352:139;;25250:248;;;:::o;25504:419::-;;25708:2;25697:9;25693:18;25685:26;;25757:9;25751:4;25747:20;25743:1;25732:9;25728:17;25721:47;25785:131;25911:4;25785:131;:::i;:::-;25777:139;;25675:248;;;:::o;25929:419::-;;26133:2;26122:9;26118:18;26110:26;;26182:9;26176:4;26172:20;26168:1;26157:9;26153:17;26146:47;26210:131;26336:4;26210:131;:::i;:::-;26202:139;;26100:248;;;:::o;26354:419::-;;26558:2;26547:9;26543:18;26535:26;;26607:9;26601:4;26597:20;26593:1;26582:9;26578:17;26571:47;26635:131;26761:4;26635:131;:::i;:::-;26627:139;;26525:248;;;:::o;26779:419::-;;26983:2;26972:9;26968:18;26960:26;;27032:9;27026:4;27022:20;27018:1;27007:9;27003:17;26996:47;27060:131;27186:4;27060:131;:::i;:::-;27052:139;;26950:248;;;:::o;27204:419::-;;27408:2;27397:9;27393:18;27385:26;;27457:9;27451:4;27447:20;27443:1;27432:9;27428:17;27421:47;27485:131;27611:4;27485:131;:::i;:::-;27477:139;;27375:248;;;:::o;27629:419::-;;27833:2;27822:9;27818:18;27810:26;;27882:9;27876:4;27872:20;27868:1;27857:9;27853:17;27846:47;27910:131;28036:4;27910:131;:::i;:::-;27902:139;;27800:248;;;:::o;28054:419::-;;28258:2;28247:9;28243:18;28235:26;;28307:9;28301:4;28297:20;28293:1;28282:9;28278:17;28271:47;28335:131;28461:4;28335:131;:::i;:::-;28327:139;;28225:248;;;:::o;28479:222::-;;28610:2;28599:9;28595:18;28587:26;;28623:71;28691:1;28680:9;28676:17;28667:6;28623:71;:::i;:::-;28577:124;;;;:::o;28707:332::-;;28866:2;28855:9;28851:18;28843:26;;28879:71;28947:1;28936:9;28932:17;28923:6;28879:71;:::i;:::-;28960:72;29028:2;29017:9;29013:18;29004:6;28960:72;:::i;:::-;28833:206;;;;;:::o;29045:283::-;;29111:2;29105:9;29095:19;;29153:4;29145:6;29141:17;29260:6;29248:10;29245:22;29224:18;29212:10;29209:34;29206:62;29203:2;;;29271:18;;:::i;:::-;29203:2;29311:10;29307:2;29300:22;29085:243;;;;:::o;29334:311::-;;29501:18;29493:6;29490:30;29487:2;;;29523:18;;:::i;:::-;29487:2;29573:4;29565:6;29561:17;29553:25;;29633:4;29627;29623:15;29615:23;;29416:229;;;:::o;29651:311::-;;29818:18;29810:6;29807:30;29804:2;;;29840:18;;:::i;:::-;29804:2;29890:4;29882:6;29878:17;29870:25;;29950:4;29944;29940:15;29932:23;;29733:229;;;:::o;29968:331::-;;30119:18;30111:6;30108:30;30105:2;;;30141:18;;:::i;:::-;30105:2;30226:4;30222:9;30215:4;30207:6;30203:17;30199:33;30191:41;;30287:4;30281;30277:15;30269:23;;30034:265;;;:::o;30305:332::-;;30457:18;30449:6;30446:30;30443:2;;;30479:18;;:::i;:::-;30443:2;30564:4;30560:9;30553:4;30545:6;30541:17;30537:33;30529:41;;30625:4;30619;30615:15;30607:23;;30372:265;;;:::o;30643:132::-;;30733:3;30725:11;;30763:4;30758:3;30754:14;30746:22;;30715:60;;;:::o;30781:114::-;;30882:5;30876:12;30866:22;;30855:40;;;:::o;30901:98::-;;30986:5;30980:12;30970:22;;30959:40;;;:::o;31005:99::-;;31091:5;31085:12;31075:22;;31064:40;;;:::o;31110:113::-;;31212:4;31207:3;31203:14;31195:22;;31185:38;;;:::o;31229:184::-;;31362:6;31357:3;31350:19;31402:4;31397:3;31393:14;31378:29;;31340:73;;;;:::o;31419:168::-;;31536:6;31531:3;31524:19;31576:4;31571:3;31567:14;31552:29;;31514:73;;;;:::o;31593:169::-;;31711:6;31706:3;31699:19;31751:4;31746:3;31742:14;31727:29;;31689:73;;;;:::o;31768:148::-;;31907:3;31892:18;;31882:34;;;;:::o;31922:305::-;;31981:20;31999:1;31981:20;:::i;:::-;31976:25;;32015:20;32033:1;32015:20;:::i;:::-;32010:25;;32169:1;32101:66;32097:74;32094:1;32091:81;32088:2;;;32175:18;;:::i;:::-;32088:2;32219:1;32216;32212:9;32205:16;;31966:261;;;;:::o;32233:185::-;;32290:20;32308:1;32290:20;:::i;:::-;32285:25;;32324:20;32342:1;32324:20;:::i;:::-;32319:25;;32363:1;32353:2;;32368:18;;:::i;:::-;32353:2;32410:1;32407;32403:9;32398:14;;32275:143;;;;:::o;32424:191::-;;32484:20;32502:1;32484:20;:::i;:::-;32479:25;;32518:20;32536:1;32518:20;:::i;:::-;32513:25;;32557:1;32554;32551:8;32548:2;;;32562:18;;:::i;:::-;32548:2;32607:1;32604;32600:9;32592:17;;32469:146;;;;:::o;32621:96::-;;32687:24;32705:5;32687:24;:::i;:::-;32676:35;;32666:51;;;:::o;32723:90::-;;32800:5;32793:13;32786:21;32775:32;;32765:48;;;:::o;32819:149::-;;32895:66;32888:5;32884:78;32873:89;;32863:105;;;:::o;32974:126::-;;33051:42;33044:5;33040:54;33029:65;;33019:81;;;:::o;33106:77::-;;33172:5;33161:16;;33151:32;;;:::o;33189:154::-;33273:6;33268:3;33263;33250:30;33335:1;33326:6;33321:3;33317:16;33310:27;33240:103;;;:::o;33349:307::-;33417:1;33427:113;33441:6;33438:1;33435:13;33427:113;;;33526:1;33521:3;33517:11;33511:18;33507:1;33502:3;33498:11;33491:39;33463:2;33460:1;33456:10;33451:15;;33427:113;;;33558:6;33555:1;33552:13;33549:2;;;33638:1;33629:6;33624:3;33620:16;33613:27;33549:2;33398:258;;;;:::o;33662:320::-;;33743:1;33737:4;33733:12;33723:22;;33790:1;33784:4;33780:12;33811:18;33801:2;;33867:4;33859:6;33855:17;33845:27;;33801:2;33929;33921:6;33918:14;33898:18;33895:38;33892:2;;;33948:18;;:::i;:::-;33892:2;33713:269;;;;:::o;33988:233::-;;34050:24;34068:5;34050:24;:::i;:::-;34041:33;;34096:66;34089:5;34086:77;34083:2;;;34166:18;;:::i;:::-;34083:2;34213:1;34206:5;34202:13;34195:20;;34031:190;;;:::o;34227:176::-;;34276:20;34294:1;34276:20;:::i;:::-;34271:25;;34310:20;34328:1;34310:20;:::i;:::-;34305:25;;34349:1;34339:2;;34354:18;;:::i;:::-;34339:2;34395:1;34392;34388:9;34383:14;;34261:142;;;;:::o;34409:180::-;34457:77;34454:1;34447:88;34554:4;34551:1;34544:15;34578:4;34575:1;34568:15;34595:180;34643:77;34640:1;34633:88;34740:4;34737:1;34730:15;34764:4;34761:1;34754:15;34781:180;34829:77;34826:1;34819:88;34926:4;34923:1;34916:15;34950:4;34947:1;34940:15;34967:180;35015:77;35012:1;35005:88;35112:4;35109:1;35102:15;35136:4;35133:1;35126:15;35153:102;;35245:2;35241:7;35236:2;35229:5;35225:14;35221:28;35211:38;;35201:54;;;:::o;35261:106::-;;35354:5;35349:3;35345:15;35324:36;;35314:53;;;:::o;35373:833::-;;35450:4;35432:16;35429:26;35426:2;;;35458:5;;35426:2;35496:1;35493;35490;35475:23;35518:34;35549:1;35543:8;35518:34;:::i;:::-;35579:10;35574:3;35571:19;35561:2;;35594:5;;;35561:2;35629;35623:9;35687:1;35669:16;35665:24;35662:1;35656:4;35641:49;35720:4;35714:11;35819:16;35812:4;35804:6;35800:17;35797:39;35764:18;35756:6;35753:30;35737:113;35734:2;;;35865:5;;;;;35734:2;35911:6;35905:4;35901:17;35947:3;35941:10;35974:18;35966:6;35963:30;35960:2;;;35996:5;;;;;;;35960:2;36044:6;36037:4;36032:3;36028:14;36024:27;36081:16;36075:4;36071:27;36066:3;36063:36;36060:2;;;36102:5;;;;;;;;36060:2;36150:29;36172:6;36150:29;:::i;:::-;36143:4;36138:3;36134:14;36130:50;36126:2;36119:62;36197:3;36190:10;;35416:790;;;;;;;;:::o;36212:122::-;36285:24;36303:5;36285:24;:::i;:::-;36278:5;36275:35;36265:2;;36324:1;36321;36314:12;36265:2;36255:79;:::o;36340:116::-;36410:21;36425:5;36410:21;:::i;:::-;36403:5;36400:32;36390:2;;36446:1;36443;36436:12;36390:2;36380:76;:::o;36462:120::-;36534:23;36551:5;36534:23;:::i;:::-;36527:5;36524:34;36514:2;;36572:1;36569;36562:12;36514:2;36504:78;:::o;36588:122::-;36661:24;36679:5;36661:24;:::i;:::-;36654:5;36651:35;36641:2;;36700:1;36697;36690:12;36641:2;36631:79;:::o

Swarm Source

ipfs://38eb7c60244a47da54d8fe6aec707476b3bb0973cdb955a778ef12d4e1d06605
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading