Sonic Blaze Testnet
    /

    Altnode (AiT)

    Overview

    TokenID

    1

    Total Transfers

    -

    Market

    Onchain Market Cap

    $0.00

    Circulating Supply Market Cap

    -
    TokenID: 1
    Loading...
    Loading
    Loading...
    Loading
    Loading...
    Loading

    Click here to update the token information / general information

    Contract Source Code Verified (Exact Match)

    Contract Name:
    Altnode

    Compiler Version
    v0.8.24+commit.e11b9ed9

    Optimization Enabled:
    No with 200 runs

    Other Settings:
    paris EvmVersion

    Contract Source Code (Solidity Standard Json-Input format)

    File 1 of 19 : AltNode.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.19;
    import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
    import {ERC721URIStorage} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
    import {Strings} from "@openzeppelin/contracts/utils/Strings.sol";
    // import {AltTokens} from "./AltTokens.sol";
    /**
    * @title Altnode
    * @author Altnode devs
    * @dev Altnode is a contract for managing the Altnode NFTs.
    */
    contract Altnode is ERC721URIStorage {
    /* Custom Errors */
    error Altnode__InvalidAssetId(uint256 assetId);
    error Altnode__SubscriptionExists();
    error Altnode__InsufficientPayment();
    error Altnode__InvalidAccessKey();
    error Altnode__InvalidSubscription();
    error Altnode__OwnerCanNotPurchase();
    error Altnode__OnlyOwner();
    using Strings for uint256;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 19 : draft-IERC6093.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Standard ERC-20 Errors
    * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
    */
    interface IERC20Errors {
    /**
    * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    * @param balance Current balance for the interacting account.
    * @param needed Minimum amount required to perform a transfer.
    */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    /**
    * @dev Indicates a failure with the token `sender`. Used in transfers.
    * @param sender Address whose tokens are being transferred.
    */
    error ERC20InvalidSender(address sender);
    /**
    * @dev Indicates a failure with the token `receiver`. Used in transfers.
    * @param receiver Address to which tokens are being transferred.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 19 : IERC165.sol
    1
    2
    3
    4
    5
    6
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "../utils/introspection/IERC165.sol";
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 19 : IERC4906.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "./IERC165.sol";
    import {IERC721} from "./IERC721.sol";
    /// @title ERC-721 Metadata Update Extension
    interface IERC4906 is IERC165, IERC721 {
    /// @dev This event emits when the metadata of a token is changed.
    /// So that the third-party platforms such as NFT market could
    /// timely update the images and related attributes of the NFT.
    event MetadataUpdate(uint256 _tokenId);
    /// @dev This event emits when the metadata of a range of tokens is changed.
    /// So that the third-party platforms such as NFT market could
    /// timely update the images and related attributes of the NFTs.
    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 19 : IERC721.sol
    1
    2
    3
    4
    5
    6
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "../token/ERC721/IERC721.sol";
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 19 : ERC721.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "./IERC721.sol";
    import {IERC721Metadata} from "./extensions/IERC721Metadata.sol";
    import {ERC721Utils} from "./utils/ERC721Utils.sol";
    import {Context} from "../../utils/Context.sol";
    import {Strings} from "../../utils/Strings.sol";
    import {IERC165, ERC165} from "../../utils/introspection/ERC165.sol";
    import {IERC721Errors} from "../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including
    * the Metadata extension, but not including the Enumerable extension, which is available separately as
    * {ERC721Enumerable}.
    */
    abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {
    using Strings for uint256;
    // Token name
    string private _name;
    // Token symbol
    string private _symbol;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 19 : ERC721URIStorage.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721URIStorage.sol)
    pragma solidity ^0.8.20;
    import {ERC721} from "../ERC721.sol";
    import {Strings} from "../../../utils/Strings.sol";
    import {IERC4906} from "../../../interfaces/IERC4906.sol";
    import {IERC165} from "../../../interfaces/IERC165.sol";
    /**
    * @dev ERC-721 token with storage based token URI management.
    */
    abstract contract ERC721URIStorage is IERC4906, ERC721 {
    using Strings for uint256;
    // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only
    // defines events and does not include any external function.
    bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);
    // Optional mapping for token URIs
    mapping(uint256 tokenId => string) private _tokenURIs;
    /**
    * @dev See {IERC165-supportsInterface}
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 19 : IERC721Metadata.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)
    pragma solidity ^0.8.20;
    import {IERC721} from "../IERC721.sol";
    /**
    * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
    * @dev See https://eips.ethereum.org/EIPS/eip-721
    */
    interface IERC721Metadata is IERC721 {
    /**
    * @dev Returns the token collection name.
    */
    function name() external view returns (string memory);
    /**
    * @dev Returns the token collection symbol.
    */
    function symbol() external view returns (string memory);
    /**
    * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
    */
    function tokenURI(uint256 tokenId) external view returns (string memory);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 19 : IERC721.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "../../utils/introspection/IERC165.sol";
    /**
    * @dev Required interface of an ERC-721 compliant contract.
    */
    interface IERC721 is IERC165 {
    /**
    * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
    */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    /**
    * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
    */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    /**
    * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
    */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 19 : IERC721Receiver.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)
    pragma solidity ^0.8.20;
    /**
    * @title ERC-721 token receiver interface
    * @dev Interface for any contract that wants to support safeTransfers
    * from ERC-721 asset contracts.
    */
    interface IERC721Receiver {
    /**
    * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
    * by `operator` from `from`, this function is called.
    *
    * It must return its Solidity selector to confirm the token transfer.
    * If any other value is returned or the interface is not implemented by the recipient, the transfer will be
    * reverted.
    *
    * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
    */
    function onERC721Received(
    address operator,
    address from,
    uint256 tokenId,
    bytes calldata data
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 19 : ERC721Utils.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/utils/ERC721Utils.sol)
    pragma solidity ^0.8.20;
    import {IERC721Receiver} from "../IERC721Receiver.sol";
    import {IERC721Errors} from "../../../interfaces/draft-IERC6093.sol";
    /**
    * @dev Library that provide common ERC-721 utility functions.
    *
    * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].
    *
    * _Available since v5.1._
    */
    library ERC721Utils {
    /**
    * @dev Performs an acceptance check for the provided `operator` by calling {IERC721-onERC721Received}
    * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).
    *
    * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).
    * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept
    * the transfer.
    */
    function checkOnERC721Received(
    address operator,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 19 : Context.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
    pragma solidity ^0.8.20;
    /**
    * @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;
    }
    function _contextSuffixLength() internal view virtual returns (uint256) {
    return 0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 19 : ERC165.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)
    pragma solidity ^0.8.20;
    import {IERC165} from "./IERC165.sol";
    /**
    * @dev Implementation of the {IERC165} interface.
    *
    * Contracts that want to implement ERC-165 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);
    * }
    * ```
    */
    abstract contract ERC165 is IERC165 {
    /**
    * @dev See {IERC165-supportsInterface}.
    */
    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
    return interfaceId == type(IERC165).interfaceId;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 19 : IERC165.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Interface of the ERC-165 standard, as defined in the
    * https://eips.ethereum.org/EIPS/eip-165[ERC].
    *
    * 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[ERC 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);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 19 : Math.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)
    pragma solidity ^0.8.20;
    import {Panic} from "../Panic.sol";
    import {SafeCast} from "./SafeCast.sol";
    /**
    * @dev Standard math utilities missing in the Solidity language.
    */
    library Math {
    enum Rounding {
    Floor, // Toward negative infinity
    Ceil, // Toward positive infinity
    Trunc, // Toward zero
    Expand // Away from zero
    }
    /**
    * @dev Returns the addition of two unsigned integers, with an success flag (no overflow).
    */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {
    unchecked {
    uint256 c = a + b;
    if (c < a) return (false, 0);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 16 of 19 : SafeCast.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)
    // This file was procedurally generated from scripts/generate/templates/SafeCast.js.
    pragma solidity ^0.8.20;
    /**
    * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow
    * checks.
    *
    * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
    * easily result in undesired exploitation or bugs, since developers usually
    * assume that overflows raise errors. `SafeCast` restores this intuition by
    * reverting the transaction when such an operation overflows.
    *
    * Using this library instead of the unchecked operations eliminates an entire
    * class of bugs, so it's recommended to use it always.
    */
    library SafeCast {
    /**
    * @dev Value doesn't fit in an uint of `bits` size.
    */
    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);
    /**
    * @dev An int value doesn't fit in an uint of `bits` size.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 17 of 19 : SignedMath.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)
    pragma solidity ^0.8.20;
    import {SafeCast} from "./SafeCast.sol";
    /**
    * @dev Standard signed math utilities missing in the Solidity language.
    */
    library SignedMath {
    /**
    * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.
    *
    * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.
    * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute
    * one branch when needed, making this function more expensive.
    */
    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {
    unchecked {
    // branchless ternary works because:
    // b ^ (a ^ b) == a
    // b ^ 0 == b
    return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 18 of 19 : Panic.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)
    pragma solidity ^0.8.20;
    /**
    * @dev Helper library for emitting standardized panic codes.
    *
    * ```solidity
    * contract Example {
    * using Panic for uint256;
    *
    * // Use any of the declared internal constants
    * function foo() { Panic.GENERIC.panic(); }
    *
    * // Alternatively
    * function foo() { Panic.panic(Panic.GENERIC); }
    * }
    * ```
    *
    * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].
    *
    * _Available since v5.1._
    */
    // slither-disable-next-line unused-state
    library Panic {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 19 of 19 : Strings.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v5.2.0) (utils/Strings.sol)
    pragma solidity ^0.8.20;
    import {Math} from "./math/Math.sol";
    import {SafeCast} from "./math/SafeCast.sol";
    import {SignedMath} from "./math/SignedMath.sol";
    /**
    * @dev String operations.
    */
    library Strings {
    using SafeCast for *;
    bytes16 private constant HEX_DIGITS = "0123456789abcdef";
    uint8 private constant ADDRESS_LENGTH = 20;
    /**
    * @dev The `value` string doesn't fit in the specified `length`.
    */
    error StringsInsufficientHexLength(uint256 value, uint256 length);
    /**
    * @dev The string being parsed contains characters that are not in scope of the given base.
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    {
    "evmVersion": "paris",
    "optimizer": {
    "enabled": false,
    "runs": 200
    },
    "outputSelection": {
    "*": {
    "*": [
    "evm.bytecode",
    "evm.deployedBytecode",
    "devdoc",
    "userdoc",
    "metadata",
    "abi"
    ]
    }
    },
    "libraries": {}
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract ABI

    API
    [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Altnode__InsufficientPayment","type":"error"},{"inputs":[],"name":"Altnode__InvalidAccessKey","type":"error"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"}],"name":"Altnode__InvalidAssetId","type":"error"},{"inputs":[],"name":"Altnode__InvalidSubscription","type":"error"},{"inputs":[],"name":"Altnode__OnlyOwner","type":"error"},{"inputs":[],"name":"Altnode__OwnerCanNotPurchase","type":"error"},{"inputs":[],"name":"Altnode__SubscriptionExists","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"subscriber","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"validity","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"accessKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"SubscriptionPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"tokenMetadata","type":"string"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"getAccessKeyByTokenId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"}],"name":"getActiveSubscribers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllAssets","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"accessKey","type":"bytes32"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"getAssetURIByAccessKey","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"}],"name":"getSubscriptions","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"accessKey","type":"bytes32"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"getTokenURIByAccessKey","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"isSubscriptionValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"tokenMetadata","type":"string"},{"internalType":"string","name":"assetURI","type":"string"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"mintAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"purchaseSubscription","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"subscriptionPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"subscriptions","outputs":[{"internalType":"uint256","name":"validity","type":"uint256"},{"internalType":"bytes32","name":"accessKey","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]

    60806040523480156200001157600080fd5b506040518060400160405280600781526020017f416c746e6f6465000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f416954000000000000000000000000000000000000000000000000000000000081525081600090816200008f91906200036d565b508060019081620000a191906200036d565b505050600060078190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000454565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200017557607f821691505b6020821081036200018b576200018a6200012d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001b6565b620002018683620001b6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200024e62000248620002428462000219565b62000223565b62000219565b9050919050565b6000819050919050565b6200026a836200022d565b62000282620002798262000255565b848454620001c3565b825550505050565b600090565b620002996200028a565b620002a68184846200025f565b505050565b5b81811015620002ce57620002c26000826200028f565b600181019050620002ac565b5050565b601f8211156200031d57620002e78162000191565b620002f284620001a6565b8101602085101562000302578190505b6200031a6200031185620001a6565b830182620002ab565b50505b505050565b600082821c905092915050565b6000620003426000198460080262000322565b1980831691505092915050565b60006200035d83836200032f565b9150826002028217905092915050565b6200037882620000f3565b67ffffffffffffffff811115620003945762000393620000fe565b5b620003a082546200015c565b620003ad828285620002d2565b600060209050601f831160018114620003e55760008415620003d0578287015190505b620003dc85826200034f565b8655506200044c565b601f198416620003f58662000191565b60005b828110156200041f57848901518255600182019150602085019450602081019050620003f8565b868310156200043f57848901516200043b601f8916826200032f565b8355505b6001600288020188555050505b505050505050565b6146f980620004646000396000f3fe6080604052600436106101665760003560e01c806370a08231116100d1578063b88d4fde1161008a578063c87b56dd11610064578063c87b56dd146105a0578063cabec0e0146105dd578063e985e9c51461061a578063eab68fd21461065757610166565b8063b88d4fde146104fc578063c337916614610525578063c59997581461056357610166565b806370a08231146103e75780638d1d44a9146104245780638da5cb5b1461044057806394dfc23a1461046b57806395d89b41146104a8578063a22cb465146104d357610166565b806342842e0e1161012357806342842e0e1461028d578063557bcdba146102b6578063595e741c146102f35780635d6a4413146103305780636352211e1461036d578063637836c1146103aa57610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b31461021057806323b872dd146102395780632acada4d14610262575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612fea565b610680565b60405161019f9190613032565b60405180910390f35b3480156101b457600080fd5b506101bd6106e1565b6040516101ca91906130dd565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613135565b610773565b60405161020791906131a3565b60405180910390f35b34801561021c57600080fd5b50610237600480360381019061023291906131ea565b61078f565b005b34801561024557600080fd5b50610260600480360381019061025b919061322a565b6107a5565b005b34801561026e57600080fd5b506102776108a7565b60405161028491906130dd565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af919061322a565b6109e8565b005b3480156102c257600080fd5b506102dd60048036038101906102d8919061327d565b610a08565b6040516102ea9190613032565b60405180910390f35b3480156102ff57600080fd5b5061031a6004803603810190610315919061327d565b610a8d565b60405161032791906132d6565b60405180910390f35b34801561033c57600080fd5b50610357600480360381019061035291906132f1565b610aeb565b60405161036491906130dd565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f9190613135565b610e48565b6040516103a191906131a3565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061334a565b610e5a565b6040516103de91906130dd565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906132f1565b610fe5565b60405161041b9190613399565b60405180910390f35b61043e600480360381019061043991906133b4565b61109f565b005b34801561044c57600080fd5b50610455611567565b60405161046291906131a3565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190613135565b61158d565b60405161049f91906134b2565b60405180910390f35b3480156104b457600080fd5b506104bd611859565b6040516104ca91906130dd565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190613500565b6118eb565b005b34801561050857600080fd5b50610523600480360381019061051e9190613675565b611901565b005b34801561053157600080fd5b5061054c6004803603810190610547919061327d565b611926565b60405161055a9291906136f8565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061334a565b611957565b60405161059791906130dd565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613135565b611a4f565b6040516105d491906130dd565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190613135565b611a61565b6040516106119190613399565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613721565b611a79565b60405161064e9190613032565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906137c1565b611b0d565b005b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106da57506106d982611c1e565b5b9050919050565b6060600080546106f090613897565b80601f016020809104026020016040519081016040528092919081815260200182805461071c90613897565b80156107695780601f1061073e57610100808354040283529160200191610769565b820191906000526020600020905b81548152906001019060200180831161074c57829003601f168201915b5050505050905090565b600061077e82611d00565b5061078882611d88565b9050919050565b6107a1828261079c611dc5565b611dcd565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108175760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161080e91906131a3565b60405180910390fd5b600061082b8383610826611dc5565b611ddf565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a1578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610898939291906138c8565b60405180910390fd5b50505050565b60606000600754905060006040518060400160405280600181526020017f5b00000000000000000000000000000000000000000000000000000000000000815250905060005b828110156109bd57600061090082611ff9565b61090983611a4f565b60405160200161091a929190613a1f565b6040516020818303038152906040529050828160018661093a9190613a93565b8410610955576040518060200160405280600081525061098c565b6040518060400160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152505b60405160200161099e93929190613ac7565b60405160208183030381529060405292505080806001019150506108ed565b50806040516020016109cf9190613b44565b6040516020818303038152906040529050809250505090565b610a0383838360405180602001604052806000815250611901565b505050565b6000806009600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050428160000151101591505092915050565b60006009600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905092915050565b6060600080600754905060008167ffffffffffffffff811115610b1157610b1061354a565b5b604051908082528060200260200182016040528015610b3f5781602001602082028036833780820191505090505b5090506000805b83811015610bf357426009600083815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610be65780838381518110610bbd57610bbc613b66565b5b6020026020010181815250508180610bd490613b95565b9250508480610be290613b95565b9550505b8080600101915050610b46565b5060006040518060400160405280600181526020017f5b0000000000000000000000000000000000000000000000000000000000000081525090506000915060005b85811015610e18576000848281518110610c5257610c51613b66565b5b60200260200101519050426009600083815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610e0a576000841115610ce35782604051602001610cd19190613c29565b60405160208183030381529060405292505b6000610cee82611ff9565b610cf783611a4f565b610d566009600086815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015460001c6120c7565b610db26009600087815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611ff9565b604051602001610dc59493929190613e5f565b60405160208183030381529060405290508381604051602001610de9929190613f00565b60405160208183030381529060405293508480610e0590613b95565b955050505b508080600101915050610c35565b5080604051602001610e2a9190613b44565b60405160208183030381529060405290508095505050505050919050565b6000610e5382611d00565b9050919050565b60606000600b60008581526020019081526020016000205490506000811080610e84575060075481115b80610ec35750600073ffffffffffffffffffffffffffffffffffffffff16610eab82610e48565b73ffffffffffffffffffffffffffffffffffffffff16145b15610efa576040517fe943669800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f048184610a08565b15610fad57600c60008281526020019081526020016000208054610f2790613897565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5390613897565b8015610fa05780601f10610f7557610100808354040283529160200191610fa0565b820191906000526020600020905b815481529060010190602001808311610f8357829003601f168201915b5050505050915050610fdf565b6040517f1ff3797300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110585760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161104f91906131a3565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6007548211156110e657816040517ff3e63fa20000000000000000000000000000000000000000000000000000000081526004016110dd9190613399565b60405180910390fd5b60006110f183610e48565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611158576040517fe931161100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154106111e4576040517fa130c42200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600a600085815260200190815260200160002054905080341015611236576040517fac480a1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff163460405161125c90613f55565b60006040518083038185875af1925050503d8060008114611299576040519150601f19603f3d011682016040523d82523d6000602084013e61129e565b606091505b50509050806112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990613fb6565b60405180910390fd5b6000336112ee87611ff9565b6112f742611ff9565b6040516020016113099392919061406a565b6040516020818303038152906040528051906020012090506040518060400160405280864261133891906140b5565b8152602001828152506009600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155905050600e600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114e857600d6000878152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b85600b6000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fa3573a9c8a94ce4b27b49fa5d413f18db59fe2d5a9efe95569f4a7a86e1dd5b287874261154591906140b5565b848760405161155794939291906140e9565b60405180910390a2505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606007548211156115d657816040517ff3e63fa20000000000000000000000000000000000000000000000000000000081526004016115cd9190613399565b60405180910390fd5b6000600d60008481526020019081526020016000208054905090506000805b828110156116c8576000600d6000878152602001908152602001600020828154811061162457611623613b66565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050426009600088815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154106116ba5782806116b690613b95565b9350505b5080806001019150506115f5565b5060008167ffffffffffffffff8111156116e5576116e461354a565b5b6040519080825280602002602001820160405280156117135781602001602082028036833780820191505090505b5090506000805b848110801561172857508382105b1561184c576000600d6000898152602001908152602001600020828154811061175457611753613b66565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905042600960008a815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541061183857808484815181106117ef576117ee613b66565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828061183490613b95565b9350505b50808061184490613b95565b91505061171a565b5081945050505050919050565b60606001805461186890613897565b80601f016020809104026020016040519081016040528092919081815260200182805461189490613897565b80156118e15780601f106118b6576101008083540402835291602001916118e1565b820191906000526020600020905b8154815290600101906020018083116118c457829003601f168201915b5050505050905090565b6118fd6118f6611dc5565b83836120e5565b5050565b61190c8484846107a5565b611920611917611dc5565b85858585612254565b50505050565b6009602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60606000600b60008581526020019081526020016000205490506000811080611981575060075481115b806119c05750600073ffffffffffffffffffffffffffffffffffffffff166119a882610e48565b73ffffffffffffffffffffffffffffffffffffffff16145b156119f7576040517fe943669800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a018184610a08565b15611a1757611a0f81611a4f565b915050611a49565b6040517f1ff3797300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b6060611a5a82612405565b9050919050565b600a6020528060005260406000206000915090505481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b1986600754612518565b611b6960075486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612536565b8282600c600060075481526020019081526020016000209182611b8d9291906142e5565b5080600a60006007548152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167faaabadf30377b070ea448b56e05e18337b24c16080fd4d7cac341320baa8b65a600754878785604051611bf694939291906143e2565b60405180910390a260076000815480929190611c1190613b95565b9190505550505050505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ce957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611cf95750611cf882612592565b5b9050919050565b600080611d0c836125fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d7f57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611d769190613399565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b611dda8383836001612639565b505050565b600080611deb846125fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e2d57611e2c8184866127fe565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ebe57611e6f600085600080612639565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611f41576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b606060006001612008846128c2565b01905060008167ffffffffffffffff8111156120275761202661354a565b5b6040519080825280601f01601f1916602001820160405280156120595781602001600182028036833780820191505090505b509050600082602001820190505b6001156120bc578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816120b0576120af614422565b5b04945060008503612067575b819350505050919050565b60606120de8260016120d885612a15565b01612ace565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361215657816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161214d91906131a3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122479190613032565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156123fe578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016122b394939291906144a6565b6020604051808303816000875af19250505080156122ef57506040513d601f19601f820116820180604052508101906122ec9190614507565b60015b612373573d806000811461231f576040519150601f19603f3d011682016040523d82523d6000602084013e612324565b606091505b50600081510361236b57836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161236291906131a3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123fc57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016123f391906131a3565b60405180910390fd5b505b5050505050565b606061241082611d00565b50600060066000848152602001908152602001600020805461243190613897565b80601f016020809104026020016040519081016040528092919081815260200182805461245d90613897565b80156124aa5780601f1061247f576101008083540402835291602001916124aa565b820191906000526020600020905b81548152906001019060200180831161248d57829003601f168201915b5050505050905060006124bb612d14565b905060008151036124d0578192505050612513565b6000825111156125055780826040516020016124ed929190613f00565b60405160208183030381529060405292505050612513565b61250e84612d2b565b925050505b919050565b612532828260405180602001604052806000815250612d94565b5050565b806006600084815260200190815260200160002090816125569190614534565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516125869190613399565b60405180910390a15050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806126725750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156127a657600061268284611d00565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ed57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561270057506126fe8184611a79565b155b1561274257826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161273991906131a3565b60405180910390fd5b81156127a457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612809838383612db8565b6128bd57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287e57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016128759190613399565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016128b4929190614606565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612920577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161291657612915614422565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061295d576d04ee2d6d415b85acef8100000000838161295357612952614422565b5b0492506020810190505b662386f26fc10000831061298c57662386f26fc10000838161298257612981614422565b5b0492506010810190505b6305f5e10083106129b5576305f5e10083816129ab576129aa614422565b5b0492506008810190505b61271083106129da5761271083816129d0576129cf614422565b5b0492506004810190505b606483106129fd57606483816129f3576129f2614422565b5b0492506002810190505b600a8310612a0c576001810190505b80915050919050565b600080600090506000612a396fffffffffffffffffffffffffffffffff8511612e79565b90506080810284901c93506010810282019150612a5f67ffffffffffffffff8511612e79565b90506040810284901c93506008810282019150612a8163ffffffff8511612e79565b90506020810284901c93506004810282019150612aa161ffff8511612e79565b90506010810284901c93506002810282019150612ac060ff8511612e79565b820191508192505050919050565b6060600083905060006002846002612ae6919061462f565b612af091906140b5565b67ffffffffffffffff811115612b0957612b0861354a565b5b6040519080825280601f01601f191660200182016040528015612b3b5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612b7357612b72613b66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612bd757612bd6613b66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001856002612c17919061462f565b612c2191906140b5565b90505b6001811115612cc1577f3031323334353637383961626364656600000000000000000000000000000000600f841660108110612c6357612c62613b66565b5b1a60f81b828281518110612c7a57612c79613b66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600483901c925080612cba90614671565b9050612c24565b5060008214612d095784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401612d0092919061469a565b60405180910390fd5b809250505092915050565b606060405180602001604052806000815250905090565b6060612d3682611d00565b506000612d41612d14565b90506000815111612d615760405180602001604052806000815250612d8c565b80612d6b84611ff9565b604051602001612d7c929190613f00565b6040516020818303038152906040525b915050919050565b612d9e8383612e85565b612db3612da9611dc5565b6000858585612254565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e7057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612e315750612e308484611a79565b5b80612e6f57508273ffffffffffffffffffffffffffffffffffffffff16612e5783611d88565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ef75760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612eee91906131a3565b60405180910390fd5b6000612f0583836000611ddf565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612f795760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612f7091906131a3565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612fc781612f92565b8114612fd257600080fd5b50565b600081359050612fe481612fbe565b92915050565b60006020828403121561300057612fff612f88565b5b600061300e84828501612fd5565b91505092915050565b60008115159050919050565b61302c81613017565b82525050565b60006020820190506130476000830184613023565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561308757808201518184015260208101905061306c565b60008484015250505050565b6000601f19601f8301169050919050565b60006130af8261304d565b6130b98185613058565b93506130c9818560208601613069565b6130d281613093565b840191505092915050565b600060208201905081810360008301526130f781846130a4565b905092915050565b6000819050919050565b613112816130ff565b811461311d57600080fd5b50565b60008135905061312f81613109565b92915050565b60006020828403121561314b5761314a612f88565b5b600061315984828501613120565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061318d82613162565b9050919050565b61319d81613182565b82525050565b60006020820190506131b86000830184613194565b92915050565b6131c781613182565b81146131d257600080fd5b50565b6000813590506131e4816131be565b92915050565b6000806040838503121561320157613200612f88565b5b600061320f858286016131d5565b925050602061322085828601613120565b9150509250929050565b60008060006060848603121561324357613242612f88565b5b6000613251868287016131d5565b9350506020613262868287016131d5565b925050604061327386828701613120565b9150509250925092565b6000806040838503121561329457613293612f88565b5b60006132a285828601613120565b92505060206132b3858286016131d5565b9150509250929050565b6000819050919050565b6132d0816132bd565b82525050565b60006020820190506132eb60008301846132c7565b92915050565b60006020828403121561330757613306612f88565b5b6000613315848285016131d5565b91505092915050565b613327816132bd565b811461333257600080fd5b50565b6000813590506133448161331e565b92915050565b6000806040838503121561336157613360612f88565b5b600061336f85828601613335565b9250506020613380858286016131d5565b9150509250929050565b613393816130ff565b82525050565b60006020820190506133ae600083018461338a565b92915050565b600080604083850312156133cb576133ca612f88565b5b60006133d985828601613120565b92505060206133ea85828601613120565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342981613182565b82525050565b600061343b8383613420565b60208301905092915050565b6000602082019050919050565b600061345f826133f4565b61346981856133ff565b935061347483613410565b8060005b838110156134a557815161348c888261342f565b975061349783613447565b925050600181019050613478565b5085935050505092915050565b600060208201905081810360008301526134cc8184613454565b905092915050565b6134dd81613017565b81146134e857600080fd5b50565b6000813590506134fa816134d4565b92915050565b6000806040838503121561351757613516612f88565b5b6000613525858286016131d5565b9250506020613536858286016134eb565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61358282613093565b810181811067ffffffffffffffff821117156135a1576135a061354a565b5b80604052505050565b60006135b4612f7e565b90506135c08282613579565b919050565b600067ffffffffffffffff8211156135e0576135df61354a565b5b6135e982613093565b9050602081019050919050565b82818337600083830152505050565b6000613618613613846135c5565b6135aa565b90508281526020810184848401111561363457613633613545565b5b61363f8482856135f6565b509392505050565b600082601f83011261365c5761365b613540565b5b813561366c848260208601613605565b91505092915050565b6000806000806080858703121561368f5761368e612f88565b5b600061369d878288016131d5565b94505060206136ae878288016131d5565b93505060406136bf87828801613120565b925050606085013567ffffffffffffffff8111156136e0576136df612f8d565b5b6136ec87828801613647565b91505092959194509250565b600060408201905061370d600083018561338a565b61371a60208301846132c7565b9392505050565b6000806040838503121561373857613737612f88565b5b6000613746858286016131d5565b9250506020613757858286016131d5565b9150509250929050565b600080fd5b600080fd5b60008083601f84011261378157613780613540565b5b8235905067ffffffffffffffff81111561379e5761379d613761565b5b6020830191508360018202830111156137ba576137b9613766565b5b9250929050565b600080600080600080608087890312156137de576137dd612f88565b5b60006137ec89828a016131d5565b965050602087013567ffffffffffffffff81111561380d5761380c612f8d565b5b61381989828a0161376b565b9550955050604087013567ffffffffffffffff81111561383c5761383b612f8d565b5b61384889828a0161376b565b9350935050606061385b89828a01613120565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138af57607f821691505b6020821081036138c2576138c1613868565b5b50919050565b60006060820190506138dd6000830186613194565b6138ea602083018561338a565b6138f76040830184613194565b949350505050565b600081905092915050565b7f7b22746f6b656e4964223a200000000000000000000000000000000000000000600082015250565b6000613940600c836138ff565b915061394b8261390a565b600c82019050919050565b60006139618261304d565b61396b81856138ff565b935061397b818560208601613069565b80840191505092915050565b7f2c2022746f6b656e557269223a20220000000000000000000000000000000000600082015250565b60006139bd600f836138ff565b91506139c882613987565b600f82019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000613a096002836138ff565b9150613a14826139d3565b600282019050919050565b6000613a2a82613933565b9150613a368285613956565b9150613a41826139b0565b9150613a4d8284613956565b9150613a58826139fc565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a9e826130ff565b9150613aa9836130ff565b9250828203905081811115613ac157613ac0613a64565b5b92915050565b6000613ad38286613956565b9150613adf8285613956565b9150613aeb8284613956565b9150819050949350505050565b7f5d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613b2e6001836138ff565b9150613b3982613af8565b600182019050919050565b6000613b508284613956565b9150613b5b82613b21565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ba0826130ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bd257613bd1613a64565b5b600182019050919050565b7f2c00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613c136001836138ff565b9150613c1e82613bdd565b600182019050919050565b6000613c358284613956565b9150613c4082613c06565b915081905092915050565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613c816001836138ff565b9150613c8c82613c4b565b600182019050919050565b7f22746f6b656e4964223a00000000000000000000000000000000000000000000600082015250565b6000613ccd600a836138ff565b9150613cd882613c97565b600a82019050919050565b7f22746f6b656e557269223a220000000000000000000000000000000000000000600082015250565b6000613d19600c836138ff565b9150613d2482613ce3565b600c82019050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b6000613d656002836138ff565b9150613d7082613d2f565b600282019050919050565b7f226163636573734b6579223a2200000000000000000000000000000000000000600082015250565b6000613db1600d836138ff565b9150613dbc82613d7b565b600d82019050919050565b7f2276616c6964697479223a000000000000000000000000000000000000000000600082015250565b6000613dfd600b836138ff565b9150613e0882613dc7565b600b82019050919050565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613e496001836138ff565b9150613e5482613e13565b600182019050919050565b6000613e6a82613c74565b9150613e7582613cc0565b9150613e818287613956565b9150613e8c82613c06565b9150613e9782613d0c565b9150613ea38286613956565b9150613eae82613d58565b9150613eb982613da4565b9150613ec58285613956565b9150613ed082613d58565b9150613edb82613df0565b9150613ee78284613956565b9150613ef282613e3c565b915081905095945050505050565b6000613f0c8285613956565b9150613f188284613956565b91508190509392505050565b600081905092915050565b50565b6000613f3f600083613f24565b9150613f4a82613f2f565b600082019050919050565b6000613f6082613f32565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b6000613fa0601083613058565b9150613fab82613f6a565b602082019050919050565b60006020820190508181036000830152613fcf81613f93565b9050919050565b60008160601b9050919050565b6000613fee82613fd6565b9050919050565b600061400082613fe3565b9050919050565b61401861401382613182565b613ff5565b82525050565b7f2d00000000000000000000000000000000000000000000000000000000000000600082015250565b60006140546001836138ff565b915061405f8261401e565b600182019050919050565b60006140768286614007565b60148201915061408582614047565b91506140918285613956565b915061409c82614047565b91506140a88284613956565b9150819050949350505050565b60006140c0826130ff565b91506140cb836130ff565b92508282019050808211156140e3576140e2613a64565b5b92915050565b60006080820190506140fe600083018761338a565b61410b602083018661338a565b61411860408301856132c7565b614125606083018461338a565b95945050505050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261419b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261415e565b6141a5868361415e565b95508019841693508086168417925050509392505050565b6000819050919050565b60006141e26141dd6141d8846130ff565b6141bd565b6130ff565b9050919050565b6000819050919050565b6141fc836141c7565b614210614208826141e9565b84845461416b565b825550505050565b600090565b614225614218565b6142308184846141f3565b505050565b5b818110156142545761424960008261421d565b600181019050614236565b5050565b601f8211156142995761426a81614139565b6142738461414e565b81016020851015614282578190505b61429661428e8561414e565b830182614235565b50505b505050565b600082821c905092915050565b60006142bc6000198460080261429e565b1980831691505092915050565b60006142d583836142ab565b9150826002028217905092915050565b6142ef838361412e565b67ffffffffffffffff8111156143085761430761354a565b5b6143128254613897565b61431d828285614258565b6000601f83116001811461434c576000841561433a578287013590505b61434485826142c9565b8655506143ac565b601f19841661435a86614139565b60005b828110156143825784890135825560018201915060208501945060208101905061435d565b8683101561439f578489013561439b601f8916826142ab565b8355505b6001600288020188555050505b50505050505050565b60006143c18385613058565b93506143ce8385846135f6565b6143d783613093565b840190509392505050565b60006060820190506143f7600083018761338a565b818103602083015261440a8185876143b5565b9050614419604083018461338a565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061447882614451565b614482818561445c565b9350614492818560208601613069565b61449b81613093565b840191505092915050565b60006080820190506144bb6000830187613194565b6144c86020830186613194565b6144d5604083018561338a565b81810360608301526144e7818461446d565b905095945050505050565b60008151905061450181612fbe565b92915050565b60006020828403121561451d5761451c612f88565b5b600061452b848285016144f2565b91505092915050565b61453d8261304d565b67ffffffffffffffff8111156145565761455561354a565b5b6145608254613897565b61456b828285614258565b600060209050601f83116001811461459e576000841561458c578287015190505b61459685826142c9565b8655506145fe565b601f1984166145ac86614139565b60005b828110156145d4578489015182556001820191506020850194506020810190506145af565b868310156145f157848901516145ed601f8916826142ab565b8355505b6001600288020188555050505b505050505050565b600060408201905061461b6000830185613194565b614628602083018461338a565b9392505050565b600061463a826130ff565b9150614645836130ff565b9250828202614653816130ff565b9150828204841483151761466a57614669613a64565b5b5092915050565b600061467c826130ff565b91506000820361468f5761468e613a64565b5b600182039050919050565b60006040820190506146af600083018561338a565b6146bc602083018461338a565b939250505056fea2646970667358221220fcc93b97cef42e89316b4d3c28a6f13b0e0a4053df131ddaaf1cfac73174ebb164736f6c63430008180033

    Deployed Bytecode

    0x6080604052600436106101665760003560e01c806370a08231116100d1578063b88d4fde1161008a578063c87b56dd11610064578063c87b56dd146105a0578063cabec0e0146105dd578063e985e9c51461061a578063eab68fd21461065757610166565b8063b88d4fde146104fc578063c337916614610525578063c59997581461056357610166565b806370a08231146103e75780638d1d44a9146104245780638da5cb5b1461044057806394dfc23a1461046b57806395d89b41146104a8578063a22cb465146104d357610166565b806342842e0e1161012357806342842e0e1461028d578063557bcdba146102b6578063595e741c146102f35780635d6a4413146103305780636352211e1461036d578063637836c1146103aa57610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b31461021057806323b872dd146102395780632acada4d14610262575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612fea565b610680565b60405161019f9190613032565b60405180910390f35b3480156101b457600080fd5b506101bd6106e1565b6040516101ca91906130dd565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613135565b610773565b60405161020791906131a3565b60405180910390f35b34801561021c57600080fd5b50610237600480360381019061023291906131ea565b61078f565b005b34801561024557600080fd5b50610260600480360381019061025b919061322a565b6107a5565b005b34801561026e57600080fd5b506102776108a7565b60405161028491906130dd565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af919061322a565b6109e8565b005b3480156102c257600080fd5b506102dd60048036038101906102d8919061327d565b610a08565b6040516102ea9190613032565b60405180910390f35b3480156102ff57600080fd5b5061031a6004803603810190610315919061327d565b610a8d565b60405161032791906132d6565b60405180910390f35b34801561033c57600080fd5b50610357600480360381019061035291906132f1565b610aeb565b60405161036491906130dd565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f9190613135565b610e48565b6040516103a191906131a3565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061334a565b610e5a565b6040516103de91906130dd565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906132f1565b610fe5565b60405161041b9190613399565b60405180910390f35b61043e600480360381019061043991906133b4565b61109f565b005b34801561044c57600080fd5b50610455611567565b60405161046291906131a3565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190613135565b61158d565b60405161049f91906134b2565b60405180910390f35b3480156104b457600080fd5b506104bd611859565b6040516104ca91906130dd565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f59190613500565b6118eb565b005b34801561050857600080fd5b50610523600480360381019061051e9190613675565b611901565b005b34801561053157600080fd5b5061054c6004803603810190610547919061327d565b611926565b60405161055a9291906136f8565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061334a565b611957565b60405161059791906130dd565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613135565b611a4f565b6040516105d491906130dd565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190613135565b611a61565b6040516106119190613399565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190613721565b611a79565b60405161064e9190613032565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906137c1565b611b0d565b005b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106da57506106d982611c1e565b5b9050919050565b6060600080546106f090613897565b80601f016020809104026020016040519081016040528092919081815260200182805461071c90613897565b80156107695780601f1061073e57610100808354040283529160200191610769565b820191906000526020600020905b81548152906001019060200180831161074c57829003601f168201915b5050505050905090565b600061077e82611d00565b5061078882611d88565b9050919050565b6107a1828261079c611dc5565b611dcd565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108175760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161080e91906131a3565b60405180910390fd5b600061082b8383610826611dc5565b611ddf565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a1578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610898939291906138c8565b60405180910390fd5b50505050565b60606000600754905060006040518060400160405280600181526020017f5b00000000000000000000000000000000000000000000000000000000000000815250905060005b828110156109bd57600061090082611ff9565b61090983611a4f565b60405160200161091a929190613a1f565b6040516020818303038152906040529050828160018661093a9190613a93565b8410610955576040518060200160405280600081525061098c565b6040518060400160405280600181526020017f2c000000000000000000000000000000000000000000000000000000000000008152505b60405160200161099e93929190613ac7565b60405160208183030381529060405292505080806001019150506108ed565b50806040516020016109cf9190613b44565b6040516020818303038152906040529050809250505090565b610a0383838360405180602001604052806000815250611901565b505050565b6000806009600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050428160000151101591505092915050565b60006009600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905092915050565b6060600080600754905060008167ffffffffffffffff811115610b1157610b1061354a565b5b604051908082528060200260200182016040528015610b3f5781602001602082028036833780820191505090505b5090506000805b83811015610bf357426009600083815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610be65780838381518110610bbd57610bbc613b66565b5b6020026020010181815250508180610bd490613b95565b9250508480610be290613b95565b9550505b8080600101915050610b46565b5060006040518060400160405280600181526020017f5b0000000000000000000000000000000000000000000000000000000000000081525090506000915060005b85811015610e18576000848281518110610c5257610c51613b66565b5b60200260200101519050426009600083815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541115610e0a576000841115610ce35782604051602001610cd19190613c29565b60405160208183030381529060405292505b6000610cee82611ff9565b610cf783611a4f565b610d566009600086815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015460001c6120c7565b610db26009600087815260200190815260200160002060008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611ff9565b604051602001610dc59493929190613e5f565b60405160208183030381529060405290508381604051602001610de9929190613f00565b60405160208183030381529060405293508480610e0590613b95565b955050505b508080600101915050610c35565b5080604051602001610e2a9190613b44565b60405160208183030381529060405290508095505050505050919050565b6000610e5382611d00565b9050919050565b60606000600b60008581526020019081526020016000205490506000811080610e84575060075481115b80610ec35750600073ffffffffffffffffffffffffffffffffffffffff16610eab82610e48565b73ffffffffffffffffffffffffffffffffffffffff16145b15610efa576040517fe943669800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f048184610a08565b15610fad57600c60008281526020019081526020016000208054610f2790613897565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5390613897565b8015610fa05780601f10610f7557610100808354040283529160200191610fa0565b820191906000526020600020905b815481529060010190602001808311610f8357829003601f168201915b5050505050915050610fdf565b6040517f1ff3797300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110585760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161104f91906131a3565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6007548211156110e657816040517ff3e63fa20000000000000000000000000000000000000000000000000000000081526004016110dd9190613399565b60405180910390fd5b60006110f183610e48565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611158576040517fe931161100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154106111e4576040517fa130c42200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600a600085815260200190815260200160002054905080341015611236576040517fac480a1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff163460405161125c90613f55565b60006040518083038185875af1925050503d8060008114611299576040519150601f19603f3d011682016040523d82523d6000602084013e61129e565b606091505b50509050806112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990613fb6565b60405180910390fd5b6000336112ee87611ff9565b6112f742611ff9565b6040516020016113099392919061406a565b6040516020818303038152906040528051906020012090506040518060400160405280864261133891906140b5565b8152602001828152506009600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155905050600e600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114e857600d6000878152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b85600b6000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fa3573a9c8a94ce4b27b49fa5d413f18db59fe2d5a9efe95569f4a7a86e1dd5b287874261154591906140b5565b848760405161155794939291906140e9565b60405180910390a2505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606007548211156115d657816040517ff3e63fa20000000000000000000000000000000000000000000000000000000081526004016115cd9190613399565b60405180910390fd5b6000600d60008481526020019081526020016000208054905090506000805b828110156116c8576000600d6000878152602001908152602001600020828154811061162457611623613b66565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050426009600088815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154106116ba5782806116b690613b95565b9350505b5080806001019150506115f5565b5060008167ffffffffffffffff8111156116e5576116e461354a565b5b6040519080825280602002602001820160405280156117135781602001602082028036833780820191505090505b5090506000805b848110801561172857508382105b1561184c576000600d6000898152602001908152602001600020828154811061175457611753613b66565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905042600960008a815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541061183857808484815181106117ef576117ee613b66565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828061183490613b95565b9350505b50808061184490613b95565b91505061171a565b5081945050505050919050565b60606001805461186890613897565b80601f016020809104026020016040519081016040528092919081815260200182805461189490613897565b80156118e15780601f106118b6576101008083540402835291602001916118e1565b820191906000526020600020905b8154815290600101906020018083116118c457829003601f168201915b5050505050905090565b6118fd6118f6611dc5565b83836120e5565b5050565b61190c8484846107a5565b611920611917611dc5565b85858585612254565b50505050565b6009602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60606000600b60008581526020019081526020016000205490506000811080611981575060075481115b806119c05750600073ffffffffffffffffffffffffffffffffffffffff166119a882610e48565b73ffffffffffffffffffffffffffffffffffffffff16145b156119f7576040517fe943669800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a018184610a08565b15611a1757611a0f81611a4f565b915050611a49565b6040517f1ff3797300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b6060611a5a82612405565b9050919050565b600a6020528060005260406000206000915090505481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b1986600754612518565b611b6960075486868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612536565b8282600c600060075481526020019081526020016000209182611b8d9291906142e5565b5080600a60006007548152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167faaabadf30377b070ea448b56e05e18337b24c16080fd4d7cac341320baa8b65a600754878785604051611bf694939291906143e2565b60405180910390a260076000815480929190611c1190613b95565b9190505550505050505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ce957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611cf95750611cf882612592565b5b9050919050565b600080611d0c836125fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d7f57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611d769190613399565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b611dda8383836001612639565b505050565b600080611deb846125fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e2d57611e2c8184866127fe565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ebe57611e6f600085600080612639565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611f41576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b606060006001612008846128c2565b01905060008167ffffffffffffffff8111156120275761202661354a565b5b6040519080825280601f01601f1916602001820160405280156120595781602001600182028036833780820191505090505b509050600082602001820190505b6001156120bc578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816120b0576120af614422565b5b04945060008503612067575b819350505050919050565b60606120de8260016120d885612a15565b01612ace565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361215657816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161214d91906131a3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122479190613032565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156123fe578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016122b394939291906144a6565b6020604051808303816000875af19250505080156122ef57506040513d601f19601f820116820180604052508101906122ec9190614507565b60015b612373573d806000811461231f576040519150601f19603f3d011682016040523d82523d6000602084013e612324565b606091505b50600081510361236b57836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161236291906131a3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123fc57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016123f391906131a3565b60405180910390fd5b505b5050505050565b606061241082611d00565b50600060066000848152602001908152602001600020805461243190613897565b80601f016020809104026020016040519081016040528092919081815260200182805461245d90613897565b80156124aa5780601f1061247f576101008083540402835291602001916124aa565b820191906000526020600020905b81548152906001019060200180831161248d57829003601f168201915b5050505050905060006124bb612d14565b905060008151036124d0578192505050612513565b6000825111156125055780826040516020016124ed929190613f00565b60405160208183030381529060405292505050612513565b61250e84612d2b565b925050505b919050565b612532828260405180602001604052806000815250612d94565b5050565b806006600084815260200190815260200160002090816125569190614534565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516125869190613399565b60405180910390a15050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806126725750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156127a657600061268284611d00565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126ed57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561270057506126fe8184611a79565b155b1561274257826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161273991906131a3565b60405180910390fd5b81156127a457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612809838383612db8565b6128bd57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287e57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016128759190613399565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016128b4929190614606565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612920577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161291657612915614422565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061295d576d04ee2d6d415b85acef8100000000838161295357612952614422565b5b0492506020810190505b662386f26fc10000831061298c57662386f26fc10000838161298257612981614422565b5b0492506010810190505b6305f5e10083106129b5576305f5e10083816129ab576129aa614422565b5b0492506008810190505b61271083106129da5761271083816129d0576129cf614422565b5b0492506004810190505b606483106129fd57606483816129f3576129f2614422565b5b0492506002810190505b600a8310612a0c576001810190505b80915050919050565b600080600090506000612a396fffffffffffffffffffffffffffffffff8511612e79565b90506080810284901c93506010810282019150612a5f67ffffffffffffffff8511612e79565b90506040810284901c93506008810282019150612a8163ffffffff8511612e79565b90506020810284901c93506004810282019150612aa161ffff8511612e79565b90506010810284901c93506002810282019150612ac060ff8511612e79565b820191508192505050919050565b6060600083905060006002846002612ae6919061462f565b612af091906140b5565b67ffffffffffffffff811115612b0957612b0861354a565b5b6040519080825280601f01601f191660200182016040528015612b3b5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612b7357612b72613b66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612bd757612bd6613b66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001856002612c17919061462f565b612c2191906140b5565b90505b6001811115612cc1577f3031323334353637383961626364656600000000000000000000000000000000600f841660108110612c6357612c62613b66565b5b1a60f81b828281518110612c7a57612c79613b66565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600483901c925080612cba90614671565b9050612c24565b5060008214612d095784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401612d0092919061469a565b60405180910390fd5b809250505092915050565b606060405180602001604052806000815250905090565b6060612d3682611d00565b506000612d41612d14565b90506000815111612d615760405180602001604052806000815250612d8c565b80612d6b84611ff9565b604051602001612d7c929190613f00565b6040516020818303038152906040525b915050919050565b612d9e8383612e85565b612db3612da9611dc5565b6000858585612254565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e7057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612e315750612e308484611a79565b5b80612e6f57508273ffffffffffffffffffffffffffffffffffffffff16612e5783611d88565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ef75760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612eee91906131a3565b60405180910390fd5b6000612f0583836000611ddf565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612f795760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612f7091906131a3565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612fc781612f92565b8114612fd257600080fd5b50565b600081359050612fe481612fbe565b92915050565b60006020828403121561300057612fff612f88565b5b600061300e84828501612fd5565b91505092915050565b60008115159050919050565b61302c81613017565b82525050565b60006020820190506130476000830184613023565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561308757808201518184015260208101905061306c565b60008484015250505050565b6000601f19601f8301169050919050565b60006130af8261304d565b6130b98185613058565b93506130c9818560208601613069565b6130d281613093565b840191505092915050565b600060208201905081810360008301526130f781846130a4565b905092915050565b6000819050919050565b613112816130ff565b811461311d57600080fd5b50565b60008135905061312f81613109565b92915050565b60006020828403121561314b5761314a612f88565b5b600061315984828501613120565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061318d82613162565b9050919050565b61319d81613182565b82525050565b60006020820190506131b86000830184613194565b92915050565b6131c781613182565b81146131d257600080fd5b50565b6000813590506131e4816131be565b92915050565b6000806040838503121561320157613200612f88565b5b600061320f858286016131d5565b925050602061322085828601613120565b9150509250929050565b60008060006060848603121561324357613242612f88565b5b6000613251868287016131d5565b9350506020613262868287016131d5565b925050604061327386828701613120565b9150509250925092565b6000806040838503121561329457613293612f88565b5b60006132a285828601613120565b92505060206132b3858286016131d5565b9150509250929050565b6000819050919050565b6132d0816132bd565b82525050565b60006020820190506132eb60008301846132c7565b92915050565b60006020828403121561330757613306612f88565b5b6000613315848285016131d5565b91505092915050565b613327816132bd565b811461333257600080fd5b50565b6000813590506133448161331e565b92915050565b6000806040838503121561336157613360612f88565b5b600061336f85828601613335565b9250506020613380858286016131d5565b9150509250929050565b613393816130ff565b82525050565b60006020820190506133ae600083018461338a565b92915050565b600080604083850312156133cb576133ca612f88565b5b60006133d985828601613120565b92505060206133ea85828601613120565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342981613182565b82525050565b600061343b8383613420565b60208301905092915050565b6000602082019050919050565b600061345f826133f4565b61346981856133ff565b935061347483613410565b8060005b838110156134a557815161348c888261342f565b975061349783613447565b925050600181019050613478565b5085935050505092915050565b600060208201905081810360008301526134cc8184613454565b905092915050565b6134dd81613017565b81146134e857600080fd5b50565b6000813590506134fa816134d4565b92915050565b6000806040838503121561351757613516612f88565b5b6000613525858286016131d5565b9250506020613536858286016134eb565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61358282613093565b810181811067ffffffffffffffff821117156135a1576135a061354a565b5b80604052505050565b60006135b4612f7e565b90506135c08282613579565b919050565b600067ffffffffffffffff8211156135e0576135df61354a565b5b6135e982613093565b9050602081019050919050565b82818337600083830152505050565b6000613618613613846135c5565b6135aa565b90508281526020810184848401111561363457613633613545565b5b61363f8482856135f6565b509392505050565b600082601f83011261365c5761365b613540565b5b813561366c848260208601613605565b91505092915050565b6000806000806080858703121561368f5761368e612f88565b5b600061369d878288016131d5565b94505060206136ae878288016131d5565b93505060406136bf87828801613120565b925050606085013567ffffffffffffffff8111156136e0576136df612f8d565b5b6136ec87828801613647565b91505092959194509250565b600060408201905061370d600083018561338a565b61371a60208301846132c7565b9392505050565b6000806040838503121561373857613737612f88565b5b6000613746858286016131d5565b9250506020613757858286016131d5565b9150509250929050565b600080fd5b600080fd5b60008083601f84011261378157613780613540565b5b8235905067ffffffffffffffff81111561379e5761379d613761565b5b6020830191508360018202830111156137ba576137b9613766565b5b9250929050565b600080600080600080608087890312156137de576137dd612f88565b5b60006137ec89828a016131d5565b965050602087013567ffffffffffffffff81111561380d5761380c612f8d565b5b61381989828a0161376b565b9550955050604087013567ffffffffffffffff81111561383c5761383b612f8d565b5b61384889828a0161376b565b9350935050606061385b89828a01613120565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138af57607f821691505b6020821081036138c2576138c1613868565b5b50919050565b60006060820190506138dd6000830186613194565b6138ea602083018561338a565b6138f76040830184613194565b949350505050565b600081905092915050565b7f7b22746f6b656e4964223a200000000000000000000000000000000000000000600082015250565b6000613940600c836138ff565b915061394b8261390a565b600c82019050919050565b60006139618261304d565b61396b81856138ff565b935061397b818560208601613069565b80840191505092915050565b7f2c2022746f6b656e557269223a20220000000000000000000000000000000000600082015250565b60006139bd600f836138ff565b91506139c882613987565b600f82019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000613a096002836138ff565b9150613a14826139d3565b600282019050919050565b6000613a2a82613933565b9150613a368285613956565b9150613a41826139b0565b9150613a4d8284613956565b9150613a58826139fc565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a9e826130ff565b9150613aa9836130ff565b9250828203905081811115613ac157613ac0613a64565b5b92915050565b6000613ad38286613956565b9150613adf8285613956565b9150613aeb8284613956565b9150819050949350505050565b7f5d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613b2e6001836138ff565b9150613b3982613af8565b600182019050919050565b6000613b508284613956565b9150613b5b82613b21565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ba0826130ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bd257613bd1613a64565b5b600182019050919050565b7f2c00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613c136001836138ff565b9150613c1e82613bdd565b600182019050919050565b6000613c358284613956565b9150613c4082613c06565b915081905092915050565b7f7b00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613c816001836138ff565b9150613c8c82613c4b565b600182019050919050565b7f22746f6b656e4964223a00000000000000000000000000000000000000000000600082015250565b6000613ccd600a836138ff565b9150613cd882613c97565b600a82019050919050565b7f22746f6b656e557269223a220000000000000000000000000000000000000000600082015250565b6000613d19600c836138ff565b9150613d2482613ce3565b600c82019050919050565b7f222c000000000000000000000000000000000000000000000000000000000000600082015250565b6000613d656002836138ff565b9150613d7082613d2f565b600282019050919050565b7f226163636573734b6579223a2200000000000000000000000000000000000000600082015250565b6000613db1600d836138ff565b9150613dbc82613d7b565b600d82019050919050565b7f2276616c6964697479223a000000000000000000000000000000000000000000600082015250565b6000613dfd600b836138ff565b9150613e0882613dc7565b600b82019050919050565b7f7d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613e496001836138ff565b9150613e5482613e13565b600182019050919050565b6000613e6a82613c74565b9150613e7582613cc0565b9150613e818287613956565b9150613e8c82613c06565b9150613e9782613d0c565b9150613ea38286613956565b9150613eae82613d58565b9150613eb982613da4565b9150613ec58285613956565b9150613ed082613d58565b9150613edb82613df0565b9150613ee78284613956565b9150613ef282613e3c565b915081905095945050505050565b6000613f0c8285613956565b9150613f188284613956565b91508190509392505050565b600081905092915050565b50565b6000613f3f600083613f24565b9150613f4a82613f2f565b600082019050919050565b6000613f6082613f32565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b6000613fa0601083613058565b9150613fab82613f6a565b602082019050919050565b60006020820190508181036000830152613fcf81613f93565b9050919050565b60008160601b9050919050565b6000613fee82613fd6565b9050919050565b600061400082613fe3565b9050919050565b61401861401382613182565b613ff5565b82525050565b7f2d00000000000000000000000000000000000000000000000000000000000000600082015250565b60006140546001836138ff565b915061405f8261401e565b600182019050919050565b60006140768286614007565b60148201915061408582614047565b91506140918285613956565b915061409c82614047565b91506140a88284613956565b9150819050949350505050565b60006140c0826130ff565b91506140cb836130ff565b92508282019050808211156140e3576140e2613a64565b5b92915050565b60006080820190506140fe600083018761338a565b61410b602083018661338a565b61411860408301856132c7565b614125606083018461338a565b95945050505050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261419b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261415e565b6141a5868361415e565b95508019841693508086168417925050509392505050565b6000819050919050565b60006141e26141dd6141d8846130ff565b6141bd565b6130ff565b9050919050565b6000819050919050565b6141fc836141c7565b614210614208826141e9565b84845461416b565b825550505050565b600090565b614225614218565b6142308184846141f3565b505050565b5b818110156142545761424960008261421d565b600181019050614236565b5050565b601f8211156142995761426a81614139565b6142738461414e565b81016020851015614282578190505b61429661428e8561414e565b830182614235565b50505b505050565b600082821c905092915050565b60006142bc6000198460080261429e565b1980831691505092915050565b60006142d583836142ab565b9150826002028217905092915050565b6142ef838361412e565b67ffffffffffffffff8111156143085761430761354a565b5b6143128254613897565b61431d828285614258565b6000601f83116001811461434c576000841561433a578287013590505b61434485826142c9565b8655506143ac565b601f19841661435a86614139565b60005b828110156143825784890135825560018201915060208501945060208101905061435d565b8683101561439f578489013561439b601f8916826142ab565b8355505b6001600288020188555050505b50505050505050565b60006143c18385613058565b93506143ce8385846135f6565b6143d783613093565b840190509392505050565b60006060820190506143f7600083018761338a565b818103602083015261440a8185876143b5565b9050614419604083018461338a565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061447882614451565b614482818561445c565b9350614492818560208601613069565b61449b81613093565b840191505092915050565b60006080820190506144bb6000830187613194565b6144c86020830186613194565b6144d5604083018561338a565b81810360608301526144e7818461446d565b905095945050505050565b60008151905061450181612fbe565b92915050565b60006020828403121561451d5761451c612f88565b5b600061452b848285016144f2565b91505092915050565b61453d8261304d565b67ffffffffffffffff8111156145565761455561354a565b5b6145608254613897565b61456b828285614258565b600060209050601f83116001811461459e576000841561458c578287015190505b61459685826142c9565b8655506145fe565b601f1984166145ac86614139565b60005b828110156145d4578489015182556001820191506020850194506020810190506145af565b868310156145f157848901516145ed601f8916826142ab565b8355505b6001600288020188555050505b505050505050565b600060408201905061461b6000830185613194565b614628602083018461338a565b9392505050565b600061463a826130ff565b9150614645836130ff565b9250828202614653816130ff565b9150828204841483151761466a57614669613a64565b5b5092915050565b600061467c826130ff565b91506000820361468f5761468e613a64565b5b600182039050919050565b60006040820190506146af600083018561338a565b6146bc602083018461338a565b939250505056fea2646970667358221220fcc93b97cef42e89316b4d3c28a6f13b0e0a4053df131ddaaf1cfac73174ebb164736f6c63430008180033

    [ Download: CSV Export  ]

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