ETH Price: $2,679.52 (+1.60%)

Token

Weedy (420L&W)
 

Overview

Max Total Supply

5,460 420L&W

Holders

413

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 420L&W
0xf7b5ecc67d36d5836cf62b6e4376d2fe842e4706
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
WEEDY

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// File: contracts/IERC2981Royalties.sol


pragma solidity ^0.8.0;

/// @title IERC2981Royalties
/// @dev Interface for the ERC2981 - Token Royalty standard
interface IERC2981Royalties {
    /// @notice Called with the sale price to determine how much royalty
    //          is owed and to whom.
    /// @param _tokenId - the NFT asset queried for royalty information
    /// @param _value - the sale price of the NFT asset specified by _tokenId
    /// @return _receiver - address of who should be sent the royalty payment
    /// @return _royaltyAmount - the royalty payment amount for value sale price
    function royaltyInfo(uint256 _tokenId, uint256 _value)
        external
        view
        returns (address _receiver, uint256 _royaltyAmount);
}
// File: @openzeppelin/contracts/utils/Strings.sol


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

pragma solidity ^0.8.0;

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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


// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;


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

// File: contracts/ERC2981Base.sol


pragma solidity ^0.8.0;



/// @dev This is a contract used to add ERC2981 support to ERC721 and 1155
abstract contract ERC2981Base is ERC165, IERC2981Royalties {
    struct RoyaltyInfo {
        address recipient;
        uint24 amount;
    }

    /// @inheritdoc ERC165
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return
            interfaceId == type(IERC2981Royalties).interfaceId ||
            super.supportsInterface(interfaceId);
    }
}
// File: contracts/ERC2981ContractWideRoyalties.sol


pragma solidity ^0.8.0;



/// @dev This is a contract used to add ERC2981 support to ERC721 and 1155
/// @dev This implementation has the same royalties for each and every tokens
abstract contract ERC2981ContractWideRoyalties is ERC2981Base {
    RoyaltyInfo private _royalties;

    /// @dev Sets token royalties
    /// @param recipient recipient of the royalties
    /// @param value percentage (using 2 decimals - 10000 = 100, 0 = 0)
    function _setRoyalties(address recipient, uint256 value) internal {
        require(value <= 10000, 'ERC2981Royalties: Too high');
        _royalties = RoyaltyInfo(recipient, uint24(value));
    }

    /// @inheritdoc IERC2981Royalties
    function royaltyInfo(uint256, uint256 value)
        external
        view
        override
        returns (address receiver, uint256 royaltyAmount)
    {
        RoyaltyInfo memory royalties = _royalties;
        receiver = royalties.recipient;
        royaltyAmount = (value * royalties.amount) / 10000;
    }
}
// File: @openzeppelin/contracts/token/ERC721/IERC721.sol


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

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol)

pragma solidity ^0.8.0;








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

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _approve(to, tokenId);
    }

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

        return _tokenApprovals[tokenId];
    }

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

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

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

        _transfer(from, to, tokenId);
    }

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

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

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

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

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

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

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

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

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

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

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

        _afterTokenTransfer(address(0), to, tokenId);
    }

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

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

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

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

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

        _afterTokenTransfer(owner, address(0), tokenId);
    }

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

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

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

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

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

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

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

// File: contracts/Weedy.sol


pragma solidity >=0.8.4;




//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%#::::=%%%:=:=-%%%======-:==::-%%*=+-=++++++++*%%*+**=%%%%%%%%%%%%=++*+++++++++%%*************%%%++******++*%%%%%%%%
//%%%%%#=**=--%%:=++--%%:::-+=:-=-=:-=%*=--++++++++-+*%*+=*+%%%%%%%%%%%%**+#*+*****+++%++++++++++++=*%%+=********=*%%%%%%%
//%%%%%#++=---%%:=++--%%==-====-=-=:--=*=++========--+%*+++++%%%%%%%%%%%**+******+=+++%+++++++++*++++*%+==++++++++=*%%%%%%
//%%%%%#=-=---%%:=++--%%:++++==---=:--=*=+-+*******+-*%*+*+++%%%%%%%%%%%*++******+=+++%+*#########+++*%+=++*****#**+#%%%%%
//%%%%%#=#+=--%%:=++--%%#---------=:--=*=**----%=*+*-*%*+++++%%%%%%%%%%%***##+++++=+++%+*##+######+++*%+=++++++***#+##%%%%
//%%%%%#+-*=====:==+--%%=-::::::--=:--=*=+=--=+%+=+*-*%*++*++%%%%%%%%%%%*+*#+#**++=+++%+==+++++#*++++*%+==+*++***++++#%%%%
//%%%%%#=*:=-::::::+--%%++==::::--=:--=*=++--+%%+=+*-*%*++*++%%%%%%%%%%%*+*#+*%%*+=+++%+==*++*##*++++*%+=++*+*%#*++++#%%%%
//%%%%%#=#++-=--:-+:--%%+++=*--:===---=*=++--+%%+=+*-*%*++*++%%%%%%%%%%%*+*#+*%%*+=+++%+=++++#%%*++++*%+=++*+*%#*++++#%%%%
//%%%%%#+=======:=++--%%++---==-====--=*=++--+%%+=+*-*%*++*++%%%%%%%%%%%*+*#++++++=+++%+==*++#%%*++++*%+=++*+*%#*++++#%%%%
//%%%%%#++++++++:=++--%%+++=-++++++++-=*=++--*%%+=+*-*%*=+*++%%%%%%%%%%%*+*+****++=+++%+==*++#%%*++++*%+=++*+*%#+++++#%%%%
//%%%%%%=-------:=++--%%+++=*--------+=*=++--*%%+=+*-*%*=+*++%%%%%%%%%%%*+*#=++++==+++%+==*++#%%*++++*%+=++*+*%#+++++#%%%%
//%%%%%%%-------:=++--%%++==-=########%*--:--*%%+=+*-*%*=+*++%%%%%%%%%%%++*******==+++%+==*++#%%*++++*%+=++*+*%#===++#%%%%
//%%%%%%%%%%%%%%:=++--%%+::=--:::::=-#%*::::::::==+*-*%*=+*+======+=#%%%*#+**+++++=+++%+==*++#%%*++++*%+========+==++#%%%%
//%%%%%%%%%%%%%%:=++--%%+========-=:--#*=========++*-*%*=+*+==****+*+#%%*=*=+***+***++%+==*++#%%*++++*%+=++******=+++#%%%%
//%%%%%%%%%%%%%%:=+=--%%-********-=:--=*=+++++++++++-*%*=+*==+*****+++%%*+*#+*%%*+=+++%+==*++#%%*++++*%+=+*******==++#%%%%
//%%%%%%%%%%%%%%=++=--%%=+*********:--=*=++++++++++--*%*=**********+++%%*++++*%%*+**++%+==+++#%%*+*++*%+=*******+=+++#%%%%
//%%%%%%%%%%%%%%----*=%%*=-=-------=++=%+------------*%%**++++++++++*+%%*+++#*%%#*++**%#*+++*#%%+++++*%#*++++++++#*+#%%%%%
//%%%%%%%%%%%%%%%----*%%%+----------=++%%=-----------*%%%*+++++++++++*%%#*+++#%%%#+++#%%#*+++#%%%++++*%%#*++++++++##%%%%%%
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

interface MultisigContract {
    function getOwners() external view returns (address[] memory);
}

contract WEEDY is ERC721, Ownable, ERC2981ContractWideRoyalties {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC721, ERC2981Base)
        returns (bool)
    {
        return super.supportsInterface(interfaceId);
    }


    /// @notice Allows to set the royalties on the contract
    /// @dev This function should be protected with a onlyAdmins, onlyMultisig (or equivalent) modifier
    /// @param recipient the royalties recipient
    /// @param value royalties value
    function setRoyalties(address recipient, uint256 value)
        public
        onlyAdmins
    {
        _setRoyalties(recipient, value);
    }

    MultisigContract multisigContract;

    bool public saleActive = false;
    bool public presaleActive = true;
    bool public promoSaleActive = true;
    string internal baseTokenURI;

    uint256 public price = 0.042 ether;

    //////////
    //LIMITS//
    //////////
    uint256 public totalSupply = 5460;
    uint256 public dropLimit = 2000;
    uint256 public maxNFTPerAddress = 10;
    uint256 public maxTx = 8;

    uint256 public nonce = 1;
    uint256 public discount = 50;

    event Mint(address owner, uint256 qty);
    event FreeMint(address to, uint256 qty);
    event DiscountMint(address to, uint256 qty);
    event Withdraw(uint256 amount);
    event Received(address, uint);
   

    address public admin;
    address public MultisigWallet;
    address[] public MultisigOwners;

    uint256[] public OwnersPercentage = [60, 7, 5, 5, 5, 5, 5, 5, 3];

    //////////////
    ///MODIFIERS//
    //////////////

    modifier onlyMultisig() {
        require(msg.sender == MultisigWallet, "Use the MultisigWallet");
        _;
    }

    modifier onlyAdmins() {
        require(
            msg.sender == owner() || msg.sender == admin,
            "Use the Admins wallets"
        );
        _;
    }

    ////////////
    //MAPPINGS//
    ////////////
    mapping(address => uint256) public presaleWallets;
    mapping(address => uint256) public FreeMintsWallets;
    mapping(address => uint256) public DiscoutWallets;

    constructor(address _multisigWallet, address _admin)
        ERC721("Weedy", "420L&W")
    {
        MultisigWallet = _multisigWallet;
        admin = _admin;
        multisigContract = MultisigContract(_multisigWallet);
    }

    function setPrice(uint256 newPrice) external onlyAdmins {
        price = newPrice;
    }

    function setDropLimit(uint256 _dropLimit) external onlyAdmins {
        dropLimit = _dropLimit;
    }

    function setBaseTokenURI(string calldata _uri) external onlyAdmins {
        baseTokenURI = _uri;
    }

    function setPresaleActive(bool val) public onlyAdmins {
        presaleActive = val;
    }

    function setSaleActive(bool val) public onlyAdmins {
        saleActive = val;
    }

    function setPromoSaleActive(bool val) public onlyAdmins {
        promoSaleActive = val;
    }

    ////////////////
    //WALLET LISTS//
    ////////////////
    function setPresaleWallets(address[] memory _a, uint256[] memory _amount)
        public
        onlyAdmins
    {
        for (uint256 i = 0; i < _a.length; i++) {
            presaleWallets[_a[i]] = _amount[i];
        }
    }

    function setFreeMintsWallets(address[] memory _a, uint256[] memory _amount)
        public
        onlyAdmins
    {
        for (uint256 i = 0; i < _a.length; i++) {
            FreeMintsWallets[_a[i]] = _amount[i];
        }
    }

    function setDiscoutWallets(address[] memory _a, uint256[] memory _amount)
        public
        onlyAdmins
    {
        for (uint256 i = 0; i < _a.length; i++) {
            DiscoutWallets[_a[i]] = _amount[i];
        }
    }

    function setMaxTx(uint256 newMax) external onlyAdmins {
        maxTx = newMax;
    }

    function setDiscount(uint256 _discount) external onlyAdmins {
        discount = _discount;
    }

    function getAssetsByOwner(address _owner)
        public
        view
        returns (uint256[] memory)
    {
        uint256[] memory result = new uint256[](balanceOf(_owner));
        uint256 counter = 0;
        for (uint256 i = 0; i < nonce; i++) {
            if (ownerOf(i) == _owner) {
                result[counter] = i;
                counter++;
            }
        }
        return result;
    }

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

     receive() external payable {
        emit Received(msg.sender, msg.value);
    }

    /////////////////////
    //MINTING FUNCTIONS//
    /////////////////////
    function freeMint(uint256 qty) external payable {
        uint256 mintAllowance = FreeMintsWallets[msg.sender];
        require(qty <= mintAllowance, "You are not allowed to mint for free");
        require(
           qty + nonce <= dropLimit,
            "SUPPLY: Value exceeds dropLimit"
        );

        FreeMintsWallets[msg.sender] = FreeMintsWallets[msg.sender] - qty;
        for (uint256 i = 0; i < qty; i++) {
            uint256 tokenId = nonce;
            _safeMint(msg.sender, tokenId);
            nonce++;
        }
        emit FreeMint(msg.sender, qty);
    }

    function discountMint(uint256 qty) external payable {
        uint256 mintAllowance = DiscoutWallets[msg.sender];
        require(promoSaleActive, "DiscountMint is not active");
        require(qty <= mintAllowance, "You are not allowed to mint discounted");
        require(
            qty + nonce <= dropLimit,
            "SUPPLY: Value exceeds dropLimit"
        );
        require(
            msg.value >= (price * qty * discount) / 100,
            "PAYMENT: invalid value"
        );

        DiscoutWallets[msg.sender] = DiscoutWallets[msg.sender] - qty;
        for (uint256 i = 0; i < qty; i++) {
            uint256 tokenId = nonce;
            _safeMint(msg.sender, tokenId);
            nonce++;
        }
        emit DiscountMint(msg.sender, qty);
    }

    function buyPresale() external payable {
        uint256 mintAllowance = presaleWallets[msg.sender];

        require(presaleActive, "Presale is not active");
        require(mintAllowance>1, "You are not on Presale");
        require(
           nonce + 2 <= dropLimit,
            "SUPPLY: Value exceeds dropLimit"
        );
        require(
            balanceOf(msg.sender) + 2 <= maxNFTPerAddress,
            "SUPPLY: qty exeeding wallet limit"
        );
        require(msg.value >= price, "PAYMENT: invalid value");
        presaleWallets[msg.sender] = presaleWallets[msg.sender] - 2;

        _safeMint(msg.sender, nonce);
        nonce++;
        _safeMint(msg.sender, nonce);
        nonce++;

        emit Mint(msg.sender, 2);
    }

    function buy(uint256 qty) external payable {
        require(saleActive, "sale is not active");
        require(qty <= maxTx && qty > 0, "qty of mints not allowed");
        require(
            qty + nonce <= dropLimit,
            "SUPPLY: Value exceeds dropLimit"
        );
        require(msg.value >= price * qty, "PAYMENT: invalid value");
        for (uint256 i = 0; i < qty; i++) {
            uint256 tokenId = nonce;
            _safeMint(msg.sender, tokenId);
            nonce++;
        }
        emit Mint(msg.sender, qty);
    }

    ////////////
    //WITHDRAW//
    ////////////
    function withdraw() public onlyAdmins {
        MultisigOwners = multisigContract.getOwners();
        uint256 amount = address(this).balance;

        for (uint256 i = 0; i < MultisigOwners.length; i++) {
            payable(MultisigOwners[i]).transfer(
                (amount * OwnersPercentage[i]) / 100
            );
        }
    }

    function ChangeOwnersPercentage(uint256[] calldata _newPercentages)
        public
        onlyMultisig
    {
        OwnersPercentage = _newPercentages;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_multisigWallet","type":"address"},{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"qty","type":"uint256"}],"name":"DiscountMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"qty","type":"uint256"}],"name":"FreeMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"qty","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Received","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"_newPercentages","type":"uint256[]"}],"name":"ChangeOwnersPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"DiscoutWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"FreeMintsWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"MultisigOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MultisigWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"OwnersPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"discount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"discountMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dropLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getAssetsByOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"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":[],"name":"maxNFTPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"promoSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_discount","type":"uint256"}],"name":"setDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"setDiscoutWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dropLimit","type":"uint256"}],"name":"setDropLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"setFreeMintsWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setPresaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"setPresaleWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setPromoSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6008805462ffffff60a01b191661010160a81b178155669536c708910000600a908155611554600b556107d0600c55600d55600e556001600f5560326010556101a0604052603c6080908152600760a052600560c081905260e08190526101008190526101208190526101408190526101605260036101805262000088906014906009620001d1565b503480156200009657600080fd5b50604051620035dc380380620035dc833981016040819052620000b991620002d7565b6040805180820182526005815264576565647960d81b6020808301918252835180850190945260068452653432304c265760d01b908401528151919291620001049160009162000226565b5080516200011a90600190602084019062000226565b50505062000137620001316200017b60201b60201c565b6200017f565b601280546001600160a01b039384166001600160a01b031991821681179092556011805493909416928116929092179092556008805490911690911790556200034c565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805482825590600052602060002090810192821562000214579160200282015b8281111562000214578251829060ff16905591602001919060010190620001f2565b5062000222929150620002a3565b5090565b82805462000234906200030f565b90600052602060002090601f01602090048101928262000258576000855562000214565b82601f106200027357805160ff191683800117855562000214565b8280016001018555821562000214579182015b828111156200021457825182559160200191906001019062000286565b5b80821115620002225760008155600101620002a4565b80516001600160a01b0381168114620002d257600080fd5b919050565b60008060408385031215620002eb57600080fd5b620002f683620002ba565b91506200030660208401620002ba565b90509250929050565b600181811c908216806200032457607f821691505b602082108114156200034657634e487b7160e01b600052602260045260246000fd5b50919050565b613280806200035c6000396000f3fe60806040526004361061031e5760003560e01c80637437681e116101ab578063affed0e0116100f7578063d96a094a11610095578063e18c78171161006f578063e18c78171461096f578063e985e9c51461098f578063f2fde38b146109d8578063f851a440146109f857600080fd5b8063d96a094a1461090f578063dabd271914610922578063daeba6221461094257600080fd5b8063bc337182116100d1578063bc33718214610881578063c87b56dd146108a1578063cea70a92146108c1578063d2825a65146108ee57600080fd5b8063affed0e014610835578063b443ba0c1461084b578063b88d4fde1461086157600080fd5b80638da5cb5b116101645780639fcdec611161013e5780639fcdec61146107d7578063a035b1fe146107df578063a1862b4c146107f5578063a22cb4651461081557600080fd5b80638da5cb5b1461078457806391b7f5ed146107a257806395d89b41146107c257600080fd5b80637437681e146106e55780637be2dcfc146106fb5780637c928fe91461071b578063837aea6c1461072e578063841718a6146107445780638c7ea24b1461076457600080fd5b806330b2264e1161026a5780635a737f35116102235780636b6f4a9d116101fd5780636b6f4a9d1461067a5780636fa3961e1461069057806370a08231146106b0578063715018a6146106d057600080fd5b80635a737f35146106195780636352211e1461063957806368428a1b1461065957600080fd5b806330b2264e146105635780633ccfd60b146105905780633f8121a2146105a557806341de890e146105c557806342842e0e146105d857806353135ca0146105f857600080fd5b80630fa1f5b8116102d7578063276f0934116102b1578063276f0934146104b75780632a55205a146104e45780632e6b106c1461052357806330176e131461054357600080fd5b80630fa1f5b81461046157806318160ddd1461048157806323b872dd1461049757600080fd5b8063017e66f41461036257806301ffc9a71461039557806306fdde03146103c5578063081812fc146103e7578063095ea7b31461041f5780630f2d6ddf1461044157600080fd5b3661035d57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561036e57600080fd5b5061038261037d366004612e16565b610a18565b6040519081526020015b60405180910390f35b3480156103a157600080fd5b506103b56103b0366004612d7c565b610a39565b604051901515815260200161038c565b3480156103d157600080fd5b506103da610a4a565b60405161038c9190612f2d565b3480156103f357600080fd5b50610407610402366004612e16565b610adc565b6040516001600160a01b03909116815260200161038c565b34801561042b57600080fd5b5061043f61043a366004612b60565b610b76565b005b34801561044d57600080fd5b5061043f61045c366004612e16565b610c8c565b34801561046d57600080fd5b5061043f61047c366004612cec565b610cd0565b34801561048d57600080fd5b50610382600b5481565b3480156104a357600080fd5b5061043f6104b2366004612a26565b610d2f565b3480156104c357600080fd5b506104d76104d23660046129d0565b610d60565b60405161038c9190612ee9565b3480156104f057600080fd5b506105046104ff366004612e2f565b610e28565b604080516001600160a01b03909316835260208301919091520161038c565b34801561052f57600080fd5b5061043f61053e366004612c2d565b610e7d565b34801561054f57600080fd5b5061043f61055e366004612db6565b610f37565b34801561056f57600080fd5b5061038261057e3660046129d0565b60156020526000908152604090205481565b34801561059c57600080fd5b5061043f610f82565b3480156105b157600080fd5b5061043f6105c0366004612d61565b611113565b61043f6105d3366004612e16565b611170565b3480156105e457600080fd5b5061043f6105f3366004612a26565b611358565b34801561060457600080fd5b506008546103b590600160a81b900460ff1681565b34801561062557600080fd5b5061043f610634366004612c2d565b611373565b34801561064557600080fd5b50610407610654366004612e16565b61142d565b34801561066557600080fd5b506008546103b590600160a01b900460ff1681565b34801561068657600080fd5b5061038260105481565b34801561069c57600080fd5b506104076106ab366004612e16565b6114a4565b3480156106bc57600080fd5b506103826106cb3660046129d0565b6114ce565b3480156106dc57600080fd5b5061043f611555565b3480156106f157600080fd5b50610382600e5481565b34801561070757600080fd5b5061043f610716366004612c2d565b6115bb565b61043f610729366004612e16565b611675565b34801561073a57600080fd5b50610382600d5481565b34801561075057600080fd5b5061043f61075f366004612d61565b6117b3565b34801561077057600080fd5b5061043f61077f366004612b60565b611810565b34801561079057600080fd5b506006546001600160a01b0316610407565b3480156107ae57600080fd5b5061043f6107bd366004612e16565b611859565b3480156107ce57600080fd5b506103da61189d565b61043f6118ac565b3480156107eb57600080fd5b50610382600a5481565b34801561080157600080fd5b50601254610407906001600160a01b031681565b34801561082157600080fd5b5061043f610830366004612b2b565b611ac5565b34801561084157600080fd5b50610382600f5481565b34801561085757600080fd5b50610382600c5481565b34801561086d57600080fd5b5061043f61087c366004612a67565b611ad0565b34801561088d57600080fd5b5061043f61089c366004612e16565b611b08565b3480156108ad57600080fd5b506103da6108bc366004612e16565b611b4c565b3480156108cd57600080fd5b506103826108dc3660046129d0565b60166020526000908152604090205481565b3480156108fa57600080fd5b506008546103b590600160b01b900460ff1681565b61043f61091d366004612e16565b611c27565b34801561092e57600080fd5b5061043f61093d366004612e16565b611da6565b34801561094e57600080fd5b5061038261095d3660046129d0565b60176020526000908152604090205481565b34801561097b57600080fd5b5061043f61098a366004612d61565b611dea565b34801561099b57600080fd5b506103b56109aa3660046129ed565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109e457600080fd5b5061043f6109f33660046129d0565b611e47565b348015610a0457600080fd5b50601154610407906001600160a01b031681565b60148181548110610a2857600080fd5b600091825260209091200154905081565b6000610a4482611f12565b92915050565b606060008054610a599061315d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a859061315d565b8015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610b5a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610b818261142d565b9050806001600160a01b0316836001600160a01b03161415610bef5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b51565b336001600160a01b0382161480610c0b5750610c0b81336109aa565b610c7d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b51565b610c878383611f37565b505050565b6006546001600160a01b0316331480610caf57506011546001600160a01b031633145b610ccb5760405162461bcd60e51b8152600401610b5190612ff9565b600c55565b6012546001600160a01b03163314610d235760405162461bcd60e51b8152602060048201526016602482015275155cd9481d1a1948135d5b1d1a5cda59d5d85b1b195d60521b6044820152606401610b51565b610c8760148383612821565b610d393382611fa5565b610d555760405162461bcd60e51b8152600401610b5190613029565b610c8783838361209c565b60606000610d6d836114ce565b67ffffffffffffffff811115610d8557610d85613209565b604051908082528060200260200182016040528015610dae578160200160208202803683370190505b5090506000805b600f54811015610e1f57846001600160a01b0316610dd28261142d565b6001600160a01b03161415610e0d5780838381518110610df457610df46131f3565b602090810291909101015281610e0981613198565b9250505b80610e1781613198565b915050610db5565b50909392505050565b604080518082019091526007546001600160a01b038116808352600160a01b90910462ffffff1660208301819052909160009161271090610e6990866130fb565b610e7391906130e7565b9150509250929050565b6006546001600160a01b0316331480610ea057506011546001600160a01b031633145b610ebc5760405162461bcd60e51b8152600401610b5190612ff9565b60005b8251811015610c8757818181518110610eda57610eda6131f3565b602002602001015160156000858481518110610ef857610ef86131f3565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610f2f90613198565b915050610ebf565b6006546001600160a01b0316331480610f5a57506011546001600160a01b031633145b610f765760405162461bcd60e51b8152600401610b5190612ff9565b610c876009838361286c565b6006546001600160a01b0316331480610fa557506011546001600160a01b031633145b610fc15760405162461bcd60e51b8152600401610b5190612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663a0e67e2b6040518163ffffffff1660e01b815260040160006040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261104b9190810190612b8c565b805161105f916013916020909101906128df565b504760005b60135481101561110f5760138181548110611081576110816131f3565b600091825260209091200154601480546001600160a01b03909216916108fc91606491859081106110b4576110b46131f3565b9060005260206000200154856110ca91906130fb565b6110d491906130e7565b6040518115909202916000818181858888f193505050501580156110fc573d6000803e3d6000fd5b508061110781613198565b915050611064565b5050565b6006546001600160a01b031633148061113657506011546001600160a01b031633145b6111525760405162461bcd60e51b8152600401610b5190612ff9565b60088054911515600160a81b0260ff60a81b19909216919091179055565b33600090815260176020526040902054600854600160b01b900460ff166111d95760405162461bcd60e51b815260206004820152601a60248201527f446973636f756e744d696e74206973206e6f74206163746976650000000000006044820152606401610b51565b808211156112385760405162461bcd60e51b815260206004820152602660248201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420646973636044820152651bdd5b9d195960d21b6064820152608401610b51565b600c54600f5461124890846130cf565b11156112665760405162461bcd60e51b8152600401610b5190612fc2565b606460105483600a5461127991906130fb565b61128391906130fb565b61128d91906130e7565b3410156112ac5760405162461bcd60e51b8152600401610b5190612f92565b336000908152601760205260409020546112c790839061311a565b336000908152601760205260408120919091555b8281101561131957600f546112f03382612238565b600f805490600061130083613198565b919050555050808061131190613198565b9150506112db565b5060408051338152602081018490527f87473919a0c76fcaf9c6bafe5a3df3555f37db2458fa7b45161543fd9e1ec4b891015b60405180910390a15050565b610c8783838360405180602001604052806000815250611ad0565b6006546001600160a01b031633148061139657506011546001600160a01b031633145b6113b25760405162461bcd60e51b8152600401610b5190612ff9565b60005b8251811015610c87578181815181106113d0576113d06131f3565b6020026020010151601660008584815181106113ee576113ee6131f3565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550808061142590613198565b9150506113b5565b6000818152600260205260408120546001600160a01b031680610a445760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b51565b601381815481106114b457600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001600160a01b0382166115395760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b51565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146115af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b51565b6115b96000612252565b565b6006546001600160a01b03163314806115de57506011546001600160a01b031633145b6115fa5760405162461bcd60e51b8152600401610b5190612ff9565b60005b8251811015610c8757818181518110611618576116186131f3565b602002602001015160176000858481518110611636576116366131f3565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550808061166d90613198565b9150506115fd565b33600090815260166020526040902054808211156116e15760405162461bcd60e51b8152602060048201526024808201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420666f72206044820152636672656560e01b6064820152608401610b51565b600c54600f546116f190846130cf565b111561170f5760405162461bcd60e51b8152600401610b5190612fc2565b3360009081526016602052604090205461172a90839061311a565b336000908152601660205260408120919091555b8281101561177c57600f546117533382612238565b600f805490600061176383613198565b919050555050808061177490613198565b91505061173e565b5060408051338152602081018490527f1a75c98f3caa5c596c30e5e4c83e0802685273950677d98a322c514a03b05b57910161134c565b6006546001600160a01b03163314806117d657506011546001600160a01b031633145b6117f25760405162461bcd60e51b8152600401610b5190612ff9565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b031633148061183357506011546001600160a01b031633145b61184f5760405162461bcd60e51b8152600401610b5190612ff9565b61110f82826122a4565b6006546001600160a01b031633148061187c57506011546001600160a01b031633145b6118985760405162461bcd60e51b8152600401610b5190612ff9565b600a55565b606060018054610a599061315d565b33600090815260156020526040902054600854600160a81b900460ff1661190d5760405162461bcd60e51b815260206004820152601560248201527450726573616c65206973206e6f742061637469766560581b6044820152606401610b51565b600181116119565760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f74206f6e2050726573616c6560501b6044820152606401610b51565b600c54600f546119679060026130cf565b11156119855760405162461bcd60e51b8152600401610b5190612fc2565b600d54611991336114ce565b61199c9060026130cf565b11156119f45760405162461bcd60e51b815260206004820152602160248201527f535550504c593a20717479206578656564696e672077616c6c6574206c696d696044820152601d60fa1b6064820152608401610b51565b600a54341015611a165760405162461bcd60e51b8152600401610b5190612f92565b33600090815260156020526040902054611a329060029061311a565b33600081815260156020526040902091909155600f54611a529190612238565b600f8054906000611a6283613198565b9190505550611a7333600f54612238565b600f8054906000611a8383613198565b909155505060408051338152600260208201527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688591015b60405180910390a150565b61110f338383612340565b611ada3383611fa5565b611af65760405162461bcd60e51b8152600401610b5190613029565b611b028484848461240f565b50505050565b6006546001600160a01b0316331480611b2b57506011546001600160a01b031633145b611b475760405162461bcd60e51b8152600401610b5190612ff9565b600e55565b6000818152600260205260409020546060906001600160a01b0316611bcb5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b51565b6000611bd5612442565b90506000815111611bf55760405180602001604052806000815250611c20565b80611bff84612451565b604051602001611c10929190612e7d565b6040516020818303038152906040525b9392505050565b600854600160a01b900460ff16611c755760405162461bcd60e51b815260206004820152601260248201527173616c65206973206e6f742061637469766560701b6044820152606401610b51565b600e548111158015611c875750600081115b611cd35760405162461bcd60e51b815260206004820152601860248201527f717479206f66206d696e7473206e6f7420616c6c6f77656400000000000000006044820152606401610b51565b600c54600f54611ce390836130cf565b1115611d015760405162461bcd60e51b8152600401610b5190612fc2565b80600a54611d0f91906130fb565b341015611d2e5760405162461bcd60e51b8152600401610b5190612f92565b60005b81811015611d6f57600f54611d463382612238565b600f8054906000611d5683613198565b9190505550508080611d6790613198565b915050611d31565b5060408051338152602081018390527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859101611aba565b6006546001600160a01b0316331480611dc957506011546001600160a01b031633145b611de55760405162461bcd60e51b8152600401610b5190612ff9565b601055565b6006546001600160a01b0316331480611e0d57506011546001600160a01b031633145b611e295760405162461bcd60e51b8152600401610b5190612ff9565b60088054911515600160b01b0260ff60b01b19909216919091179055565b6006546001600160a01b03163314611ea15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b51565b6001600160a01b038116611f065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b51565b611f0f81612252565b50565b60006001600160e01b0319821663152a902d60e11b1480610a445750610a448261254f565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f6c8261142d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661201e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b51565b60006120298361142d565b9050806001600160a01b0316846001600160a01b031614806120645750836001600160a01b031661205984610adc565b6001600160a01b0316145b8061209457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166120af8261142d565b6001600160a01b0316146121135760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b51565b6001600160a01b0382166121755760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b51565b612180600082611f37565b6001600160a01b03831660009081526003602052604081208054600192906121a990849061311a565b90915550506001600160a01b03821660009081526003602052604081208054600192906121d79084906130cf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61110f82826040518060200160405280600081525061259f565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127108111156122f65760405162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f20686967680000000000006044820152606401610b51565b604080518082019091526001600160a01b0390921680835262ffffff909116602090920182905260078054600160a01b9093026001600160b81b0319909316909117919091179055565b816001600160a01b0316836001600160a01b031614156123a25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b51565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61241a84848461209c565b612426848484846125d2565b611b025760405162461bcd60e51b8152600401610b5190612f40565b606060098054610a599061315d565b6060816124755750506040805180820190915260018152600360fc1b602082015290565b8160005b811561249f578061248981613198565b91506124989050600a836130e7565b9150612479565b60008167ffffffffffffffff8111156124ba576124ba613209565b6040519080825280601f01601f1916602001820160405280156124e4576020820181803683370190505b5090505b8415612094576124f960018361311a565b9150612506600a866131b3565b6125119060306130cf565b60f81b818381518110612526576125266131f3565b60200101906001600160f81b031916908160001a905350612548600a866130e7565b94506124e8565b60006001600160e01b031982166380ac58cd60e01b148061258057506001600160e01b03198216635b5e139f60e01b145b80610a4457506301ffc9a760e01b6001600160e01b0319831614610a44565b6125a983836126df565b6125b660008484846125d2565b610c875760405162461bcd60e51b8152600401610b5190612f40565b60006001600160a01b0384163b156126d457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612616903390899088908890600401612eac565b602060405180830381600087803b15801561263057600080fd5b505af1925050508015612660575060408051601f3d908101601f1916820190925261265d91810190612d99565b60015b6126ba573d80801561268e576040519150601f19603f3d011682016040523d82523d6000602084013e612693565b606091505b5080516126b25760405162461bcd60e51b8152600401610b5190612f40565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612094565b506001949350505050565b6001600160a01b0382166127355760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b51565b6000818152600260205260409020546001600160a01b03161561279a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b51565b6001600160a01b03821660009081526003602052604081208054600192906127c39084906130cf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805482825590600052602060002090810192821561285c579160200282015b8281111561285c578235825591602001919060010190612841565b50612868929150612934565b5090565b8280546128789061315d565b90600052602060002090601f01602090048101928261289a576000855561285c565b82601f106128b35782800160ff1982351617855561285c565b8280016001018555821561285c579182018281111561285c578235825591602001919060010190612841565b82805482825590600052602060002090810192821561285c579160200282015b8281111561285c57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906128ff565b5b808211156128685760008155600101612935565b600082601f83011261295a57600080fd5b8135602061296f61296a836130ab565b61307a565b80838252828201915082860187848660051b890101111561298f57600080fd5b60005b858110156129ae57813584529284019290840190600101612992565b5090979650505050505050565b803580151581146129cb57600080fd5b919050565b6000602082840312156129e257600080fd5b8135611c208161321f565b60008060408385031215612a0057600080fd5b8235612a0b8161321f565b91506020830135612a1b8161321f565b809150509250929050565b600080600060608486031215612a3b57600080fd5b8335612a468161321f565b92506020840135612a568161321f565b929592945050506040919091013590565b60008060008060808587031215612a7d57600080fd5b8435612a888161321f565b9350602085810135612a998161321f565b935060408601359250606086013567ffffffffffffffff80821115612abd57600080fd5b818801915088601f830112612ad157600080fd5b813581811115612ae357612ae3613209565b612af5601f8201601f1916850161307a565b91508082528984828501011115612b0b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060408385031215612b3e57600080fd5b8235612b498161321f565b9150612b57602084016129bb565b90509250929050565b60008060408385031215612b7357600080fd5b8235612b7e8161321f565b946020939093013593505050565b60006020808385031215612b9f57600080fd5b825167ffffffffffffffff811115612bb657600080fd5b8301601f81018513612bc757600080fd5b8051612bd561296a826130ab565b80828252848201915084840188868560051b8701011115612bf557600080fd5b600094505b83851015612c21578051612c0d8161321f565b835260019490940193918501918501612bfa565b50979650505050505050565b60008060408385031215612c4057600080fd5b823567ffffffffffffffff80821115612c5857600080fd5b818501915085601f830112612c6c57600080fd5b81356020612c7c61296a836130ab565b8083825282820191508286018a848660051b8901011115612c9c57600080fd5b600096505b84871015612cc8578035612cb48161321f565b835260019690960195918301918301612ca1565b5096505086013592505080821115612cdf57600080fd5b50610e7385828601612949565b60008060208385031215612cff57600080fd5b823567ffffffffffffffff80821115612d1757600080fd5b818501915085601f830112612d2b57600080fd5b813581811115612d3a57600080fd5b8660208260051b8501011115612d4f57600080fd5b60209290920196919550909350505050565b600060208284031215612d7357600080fd5b611c20826129bb565b600060208284031215612d8e57600080fd5b8135611c2081613234565b600060208284031215612dab57600080fd5b8151611c2081613234565b60008060208385031215612dc957600080fd5b823567ffffffffffffffff80821115612de157600080fd5b818501915085601f830112612df557600080fd5b813581811115612e0457600080fd5b866020828501011115612d4f57600080fd5b600060208284031215612e2857600080fd5b5035919050565b60008060408385031215612e4257600080fd5b50508035926020909101359150565b60008151808452612e69816020860160208601613131565b601f01601f19169290920160200192915050565b60008351612e8f818460208801613131565b835190830190612ea3818360208801613131565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612edf90830184612e51565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612f2157835183529284019291840191600101612f05565b50909695505050505050565b602081526000611c206020830184612e51565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601690820152755041594d454e543a20696e76616c69642076616c756560501b604082015260600190565b6020808252601f908201527f535550504c593a2056616c756520657863656564732064726f704c696d697400604082015260600190565b602080825260169082015275557365207468652041646d696e732077616c6c65747360501b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156130a3576130a3613209565b604052919050565b600067ffffffffffffffff8211156130c5576130c5613209565b5060051b60200190565b600082198211156130e2576130e26131c7565b500190565b6000826130f6576130f66131dd565b500490565b6000816000190483118215151615613115576131156131c7565b500290565b60008282101561312c5761312c6131c7565b500390565b60005b8381101561314c578181015183820152602001613134565b83811115611b025750506000910152565b600181811c9082168061317157607f821691505b6020821081141561319257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156131ac576131ac6131c7565b5060010190565b6000826131c2576131c26131dd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611f0f57600080fd5b6001600160e01b031981168114611f0f57600080fdfea264697066735822122050211b2cb3cd4ed3d7eed5db90188d7bd522632507a24a8ed381660ad34b27a464736f6c634300080700330000000000000000000000000ad6c75d402a7b7c9043f953df43db20c492ea3e000000000000000000000000fa572cffac68194a29f4fa4a12f2f4ac90877087

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80637437681e116101ab578063affed0e0116100f7578063d96a094a11610095578063e18c78171161006f578063e18c78171461096f578063e985e9c51461098f578063f2fde38b146109d8578063f851a440146109f857600080fd5b8063d96a094a1461090f578063dabd271914610922578063daeba6221461094257600080fd5b8063bc337182116100d1578063bc33718214610881578063c87b56dd146108a1578063cea70a92146108c1578063d2825a65146108ee57600080fd5b8063affed0e014610835578063b443ba0c1461084b578063b88d4fde1461086157600080fd5b80638da5cb5b116101645780639fcdec611161013e5780639fcdec61146107d7578063a035b1fe146107df578063a1862b4c146107f5578063a22cb4651461081557600080fd5b80638da5cb5b1461078457806391b7f5ed146107a257806395d89b41146107c257600080fd5b80637437681e146106e55780637be2dcfc146106fb5780637c928fe91461071b578063837aea6c1461072e578063841718a6146107445780638c7ea24b1461076457600080fd5b806330b2264e1161026a5780635a737f35116102235780636b6f4a9d116101fd5780636b6f4a9d1461067a5780636fa3961e1461069057806370a08231146106b0578063715018a6146106d057600080fd5b80635a737f35146106195780636352211e1461063957806368428a1b1461065957600080fd5b806330b2264e146105635780633ccfd60b146105905780633f8121a2146105a557806341de890e146105c557806342842e0e146105d857806353135ca0146105f857600080fd5b80630fa1f5b8116102d7578063276f0934116102b1578063276f0934146104b75780632a55205a146104e45780632e6b106c1461052357806330176e131461054357600080fd5b80630fa1f5b81461046157806318160ddd1461048157806323b872dd1461049757600080fd5b8063017e66f41461036257806301ffc9a71461039557806306fdde03146103c5578063081812fc146103e7578063095ea7b31461041f5780630f2d6ddf1461044157600080fd5b3661035d57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561036e57600080fd5b5061038261037d366004612e16565b610a18565b6040519081526020015b60405180910390f35b3480156103a157600080fd5b506103b56103b0366004612d7c565b610a39565b604051901515815260200161038c565b3480156103d157600080fd5b506103da610a4a565b60405161038c9190612f2d565b3480156103f357600080fd5b50610407610402366004612e16565b610adc565b6040516001600160a01b03909116815260200161038c565b34801561042b57600080fd5b5061043f61043a366004612b60565b610b76565b005b34801561044d57600080fd5b5061043f61045c366004612e16565b610c8c565b34801561046d57600080fd5b5061043f61047c366004612cec565b610cd0565b34801561048d57600080fd5b50610382600b5481565b3480156104a357600080fd5b5061043f6104b2366004612a26565b610d2f565b3480156104c357600080fd5b506104d76104d23660046129d0565b610d60565b60405161038c9190612ee9565b3480156104f057600080fd5b506105046104ff366004612e2f565b610e28565b604080516001600160a01b03909316835260208301919091520161038c565b34801561052f57600080fd5b5061043f61053e366004612c2d565b610e7d565b34801561054f57600080fd5b5061043f61055e366004612db6565b610f37565b34801561056f57600080fd5b5061038261057e3660046129d0565b60156020526000908152604090205481565b34801561059c57600080fd5b5061043f610f82565b3480156105b157600080fd5b5061043f6105c0366004612d61565b611113565b61043f6105d3366004612e16565b611170565b3480156105e457600080fd5b5061043f6105f3366004612a26565b611358565b34801561060457600080fd5b506008546103b590600160a81b900460ff1681565b34801561062557600080fd5b5061043f610634366004612c2d565b611373565b34801561064557600080fd5b50610407610654366004612e16565b61142d565b34801561066557600080fd5b506008546103b590600160a01b900460ff1681565b34801561068657600080fd5b5061038260105481565b34801561069c57600080fd5b506104076106ab366004612e16565b6114a4565b3480156106bc57600080fd5b506103826106cb3660046129d0565b6114ce565b3480156106dc57600080fd5b5061043f611555565b3480156106f157600080fd5b50610382600e5481565b34801561070757600080fd5b5061043f610716366004612c2d565b6115bb565b61043f610729366004612e16565b611675565b34801561073a57600080fd5b50610382600d5481565b34801561075057600080fd5b5061043f61075f366004612d61565b6117b3565b34801561077057600080fd5b5061043f61077f366004612b60565b611810565b34801561079057600080fd5b506006546001600160a01b0316610407565b3480156107ae57600080fd5b5061043f6107bd366004612e16565b611859565b3480156107ce57600080fd5b506103da61189d565b61043f6118ac565b3480156107eb57600080fd5b50610382600a5481565b34801561080157600080fd5b50601254610407906001600160a01b031681565b34801561082157600080fd5b5061043f610830366004612b2b565b611ac5565b34801561084157600080fd5b50610382600f5481565b34801561085757600080fd5b50610382600c5481565b34801561086d57600080fd5b5061043f61087c366004612a67565b611ad0565b34801561088d57600080fd5b5061043f61089c366004612e16565b611b08565b3480156108ad57600080fd5b506103da6108bc366004612e16565b611b4c565b3480156108cd57600080fd5b506103826108dc3660046129d0565b60166020526000908152604090205481565b3480156108fa57600080fd5b506008546103b590600160b01b900460ff1681565b61043f61091d366004612e16565b611c27565b34801561092e57600080fd5b5061043f61093d366004612e16565b611da6565b34801561094e57600080fd5b5061038261095d3660046129d0565b60176020526000908152604090205481565b34801561097b57600080fd5b5061043f61098a366004612d61565b611dea565b34801561099b57600080fd5b506103b56109aa3660046129ed565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156109e457600080fd5b5061043f6109f33660046129d0565b611e47565b348015610a0457600080fd5b50601154610407906001600160a01b031681565b60148181548110610a2857600080fd5b600091825260209091200154905081565b6000610a4482611f12565b92915050565b606060008054610a599061315d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a859061315d565b8015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610b5a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610b818261142d565b9050806001600160a01b0316836001600160a01b03161415610bef5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b51565b336001600160a01b0382161480610c0b5750610c0b81336109aa565b610c7d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b51565b610c878383611f37565b505050565b6006546001600160a01b0316331480610caf57506011546001600160a01b031633145b610ccb5760405162461bcd60e51b8152600401610b5190612ff9565b600c55565b6012546001600160a01b03163314610d235760405162461bcd60e51b8152602060048201526016602482015275155cd9481d1a1948135d5b1d1a5cda59d5d85b1b195d60521b6044820152606401610b51565b610c8760148383612821565b610d393382611fa5565b610d555760405162461bcd60e51b8152600401610b5190613029565b610c8783838361209c565b60606000610d6d836114ce565b67ffffffffffffffff811115610d8557610d85613209565b604051908082528060200260200182016040528015610dae578160200160208202803683370190505b5090506000805b600f54811015610e1f57846001600160a01b0316610dd28261142d565b6001600160a01b03161415610e0d5780838381518110610df457610df46131f3565b602090810291909101015281610e0981613198565b9250505b80610e1781613198565b915050610db5565b50909392505050565b604080518082019091526007546001600160a01b038116808352600160a01b90910462ffffff1660208301819052909160009161271090610e6990866130fb565b610e7391906130e7565b9150509250929050565b6006546001600160a01b0316331480610ea057506011546001600160a01b031633145b610ebc5760405162461bcd60e51b8152600401610b5190612ff9565b60005b8251811015610c8757818181518110610eda57610eda6131f3565b602002602001015160156000858481518110610ef857610ef86131f3565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610f2f90613198565b915050610ebf565b6006546001600160a01b0316331480610f5a57506011546001600160a01b031633145b610f765760405162461bcd60e51b8152600401610b5190612ff9565b610c876009838361286c565b6006546001600160a01b0316331480610fa557506011546001600160a01b031633145b610fc15760405162461bcd60e51b8152600401610b5190612ff9565b600860009054906101000a90046001600160a01b03166001600160a01b031663a0e67e2b6040518163ffffffff1660e01b815260040160006040518083038186803b15801561100f57600080fd5b505afa158015611023573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261104b9190810190612b8c565b805161105f916013916020909101906128df565b504760005b60135481101561110f5760138181548110611081576110816131f3565b600091825260209091200154601480546001600160a01b03909216916108fc91606491859081106110b4576110b46131f3565b9060005260206000200154856110ca91906130fb565b6110d491906130e7565b6040518115909202916000818181858888f193505050501580156110fc573d6000803e3d6000fd5b508061110781613198565b915050611064565b5050565b6006546001600160a01b031633148061113657506011546001600160a01b031633145b6111525760405162461bcd60e51b8152600401610b5190612ff9565b60088054911515600160a81b0260ff60a81b19909216919091179055565b33600090815260176020526040902054600854600160b01b900460ff166111d95760405162461bcd60e51b815260206004820152601a60248201527f446973636f756e744d696e74206973206e6f74206163746976650000000000006044820152606401610b51565b808211156112385760405162461bcd60e51b815260206004820152602660248201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420646973636044820152651bdd5b9d195960d21b6064820152608401610b51565b600c54600f5461124890846130cf565b11156112665760405162461bcd60e51b8152600401610b5190612fc2565b606460105483600a5461127991906130fb565b61128391906130fb565b61128d91906130e7565b3410156112ac5760405162461bcd60e51b8152600401610b5190612f92565b336000908152601760205260409020546112c790839061311a565b336000908152601760205260408120919091555b8281101561131957600f546112f03382612238565b600f805490600061130083613198565b919050555050808061131190613198565b9150506112db565b5060408051338152602081018490527f87473919a0c76fcaf9c6bafe5a3df3555f37db2458fa7b45161543fd9e1ec4b891015b60405180910390a15050565b610c8783838360405180602001604052806000815250611ad0565b6006546001600160a01b031633148061139657506011546001600160a01b031633145b6113b25760405162461bcd60e51b8152600401610b5190612ff9565b60005b8251811015610c87578181815181106113d0576113d06131f3565b6020026020010151601660008584815181106113ee576113ee6131f3565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550808061142590613198565b9150506113b5565b6000818152600260205260408120546001600160a01b031680610a445760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b51565b601381815481106114b457600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001600160a01b0382166115395760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b51565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146115af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b51565b6115b96000612252565b565b6006546001600160a01b03163314806115de57506011546001600160a01b031633145b6115fa5760405162461bcd60e51b8152600401610b5190612ff9565b60005b8251811015610c8757818181518110611618576116186131f3565b602002602001015160176000858481518110611636576116366131f3565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550808061166d90613198565b9150506115fd565b33600090815260166020526040902054808211156116e15760405162461bcd60e51b8152602060048201526024808201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420666f72206044820152636672656560e01b6064820152608401610b51565b600c54600f546116f190846130cf565b111561170f5760405162461bcd60e51b8152600401610b5190612fc2565b3360009081526016602052604090205461172a90839061311a565b336000908152601660205260408120919091555b8281101561177c57600f546117533382612238565b600f805490600061176383613198565b919050555050808061177490613198565b91505061173e565b5060408051338152602081018490527f1a75c98f3caa5c596c30e5e4c83e0802685273950677d98a322c514a03b05b57910161134c565b6006546001600160a01b03163314806117d657506011546001600160a01b031633145b6117f25760405162461bcd60e51b8152600401610b5190612ff9565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b031633148061183357506011546001600160a01b031633145b61184f5760405162461bcd60e51b8152600401610b5190612ff9565b61110f82826122a4565b6006546001600160a01b031633148061187c57506011546001600160a01b031633145b6118985760405162461bcd60e51b8152600401610b5190612ff9565b600a55565b606060018054610a599061315d565b33600090815260156020526040902054600854600160a81b900460ff1661190d5760405162461bcd60e51b815260206004820152601560248201527450726573616c65206973206e6f742061637469766560581b6044820152606401610b51565b600181116119565760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f74206f6e2050726573616c6560501b6044820152606401610b51565b600c54600f546119679060026130cf565b11156119855760405162461bcd60e51b8152600401610b5190612fc2565b600d54611991336114ce565b61199c9060026130cf565b11156119f45760405162461bcd60e51b815260206004820152602160248201527f535550504c593a20717479206578656564696e672077616c6c6574206c696d696044820152601d60fa1b6064820152608401610b51565b600a54341015611a165760405162461bcd60e51b8152600401610b5190612f92565b33600090815260156020526040902054611a329060029061311a565b33600081815260156020526040902091909155600f54611a529190612238565b600f8054906000611a6283613198565b9190505550611a7333600f54612238565b600f8054906000611a8383613198565b909155505060408051338152600260208201527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688591015b60405180910390a150565b61110f338383612340565b611ada3383611fa5565b611af65760405162461bcd60e51b8152600401610b5190613029565b611b028484848461240f565b50505050565b6006546001600160a01b0316331480611b2b57506011546001600160a01b031633145b611b475760405162461bcd60e51b8152600401610b5190612ff9565b600e55565b6000818152600260205260409020546060906001600160a01b0316611bcb5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b51565b6000611bd5612442565b90506000815111611bf55760405180602001604052806000815250611c20565b80611bff84612451565b604051602001611c10929190612e7d565b6040516020818303038152906040525b9392505050565b600854600160a01b900460ff16611c755760405162461bcd60e51b815260206004820152601260248201527173616c65206973206e6f742061637469766560701b6044820152606401610b51565b600e548111158015611c875750600081115b611cd35760405162461bcd60e51b815260206004820152601860248201527f717479206f66206d696e7473206e6f7420616c6c6f77656400000000000000006044820152606401610b51565b600c54600f54611ce390836130cf565b1115611d015760405162461bcd60e51b8152600401610b5190612fc2565b80600a54611d0f91906130fb565b341015611d2e5760405162461bcd60e51b8152600401610b5190612f92565b60005b81811015611d6f57600f54611d463382612238565b600f8054906000611d5683613198565b9190505550508080611d6790613198565b915050611d31565b5060408051338152602081018390527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859101611aba565b6006546001600160a01b0316331480611dc957506011546001600160a01b031633145b611de55760405162461bcd60e51b8152600401610b5190612ff9565b601055565b6006546001600160a01b0316331480611e0d57506011546001600160a01b031633145b611e295760405162461bcd60e51b8152600401610b5190612ff9565b60088054911515600160b01b0260ff60b01b19909216919091179055565b6006546001600160a01b03163314611ea15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b51565b6001600160a01b038116611f065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b51565b611f0f81612252565b50565b60006001600160e01b0319821663152a902d60e11b1480610a445750610a448261254f565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f6c8261142d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661201e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b51565b60006120298361142d565b9050806001600160a01b0316846001600160a01b031614806120645750836001600160a01b031661205984610adc565b6001600160a01b0316145b8061209457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166120af8261142d565b6001600160a01b0316146121135760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b51565b6001600160a01b0382166121755760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b51565b612180600082611f37565b6001600160a01b03831660009081526003602052604081208054600192906121a990849061311a565b90915550506001600160a01b03821660009081526003602052604081208054600192906121d79084906130cf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61110f82826040518060200160405280600081525061259f565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127108111156122f65760405162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f20686967680000000000006044820152606401610b51565b604080518082019091526001600160a01b0390921680835262ffffff909116602090920182905260078054600160a01b9093026001600160b81b0319909316909117919091179055565b816001600160a01b0316836001600160a01b031614156123a25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b51565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61241a84848461209c565b612426848484846125d2565b611b025760405162461bcd60e51b8152600401610b5190612f40565b606060098054610a599061315d565b6060816124755750506040805180820190915260018152600360fc1b602082015290565b8160005b811561249f578061248981613198565b91506124989050600a836130e7565b9150612479565b60008167ffffffffffffffff8111156124ba576124ba613209565b6040519080825280601f01601f1916602001820160405280156124e4576020820181803683370190505b5090505b8415612094576124f960018361311a565b9150612506600a866131b3565b6125119060306130cf565b60f81b818381518110612526576125266131f3565b60200101906001600160f81b031916908160001a905350612548600a866130e7565b94506124e8565b60006001600160e01b031982166380ac58cd60e01b148061258057506001600160e01b03198216635b5e139f60e01b145b80610a4457506301ffc9a760e01b6001600160e01b0319831614610a44565b6125a983836126df565b6125b660008484846125d2565b610c875760405162461bcd60e51b8152600401610b5190612f40565b60006001600160a01b0384163b156126d457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612616903390899088908890600401612eac565b602060405180830381600087803b15801561263057600080fd5b505af1925050508015612660575060408051601f3d908101601f1916820190925261265d91810190612d99565b60015b6126ba573d80801561268e576040519150601f19603f3d011682016040523d82523d6000602084013e612693565b606091505b5080516126b25760405162461bcd60e51b8152600401610b5190612f40565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612094565b506001949350505050565b6001600160a01b0382166127355760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b51565b6000818152600260205260409020546001600160a01b03161561279a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b51565b6001600160a01b03821660009081526003602052604081208054600192906127c39084906130cf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805482825590600052602060002090810192821561285c579160200282015b8281111561285c578235825591602001919060010190612841565b50612868929150612934565b5090565b8280546128789061315d565b90600052602060002090601f01602090048101928261289a576000855561285c565b82601f106128b35782800160ff1982351617855561285c565b8280016001018555821561285c579182018281111561285c578235825591602001919060010190612841565b82805482825590600052602060002090810192821561285c579160200282015b8281111561285c57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906128ff565b5b808211156128685760008155600101612935565b600082601f83011261295a57600080fd5b8135602061296f61296a836130ab565b61307a565b80838252828201915082860187848660051b890101111561298f57600080fd5b60005b858110156129ae57813584529284019290840190600101612992565b5090979650505050505050565b803580151581146129cb57600080fd5b919050565b6000602082840312156129e257600080fd5b8135611c208161321f565b60008060408385031215612a0057600080fd5b8235612a0b8161321f565b91506020830135612a1b8161321f565b809150509250929050565b600080600060608486031215612a3b57600080fd5b8335612a468161321f565b92506020840135612a568161321f565b929592945050506040919091013590565b60008060008060808587031215612a7d57600080fd5b8435612a888161321f565b9350602085810135612a998161321f565b935060408601359250606086013567ffffffffffffffff80821115612abd57600080fd5b818801915088601f830112612ad157600080fd5b813581811115612ae357612ae3613209565b612af5601f8201601f1916850161307a565b91508082528984828501011115612b0b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060408385031215612b3e57600080fd5b8235612b498161321f565b9150612b57602084016129bb565b90509250929050565b60008060408385031215612b7357600080fd5b8235612b7e8161321f565b946020939093013593505050565b60006020808385031215612b9f57600080fd5b825167ffffffffffffffff811115612bb657600080fd5b8301601f81018513612bc757600080fd5b8051612bd561296a826130ab565b80828252848201915084840188868560051b8701011115612bf557600080fd5b600094505b83851015612c21578051612c0d8161321f565b835260019490940193918501918501612bfa565b50979650505050505050565b60008060408385031215612c4057600080fd5b823567ffffffffffffffff80821115612c5857600080fd5b818501915085601f830112612c6c57600080fd5b81356020612c7c61296a836130ab565b8083825282820191508286018a848660051b8901011115612c9c57600080fd5b600096505b84871015612cc8578035612cb48161321f565b835260019690960195918301918301612ca1565b5096505086013592505080821115612cdf57600080fd5b50610e7385828601612949565b60008060208385031215612cff57600080fd5b823567ffffffffffffffff80821115612d1757600080fd5b818501915085601f830112612d2b57600080fd5b813581811115612d3a57600080fd5b8660208260051b8501011115612d4f57600080fd5b60209290920196919550909350505050565b600060208284031215612d7357600080fd5b611c20826129bb565b600060208284031215612d8e57600080fd5b8135611c2081613234565b600060208284031215612dab57600080fd5b8151611c2081613234565b60008060208385031215612dc957600080fd5b823567ffffffffffffffff80821115612de157600080fd5b818501915085601f830112612df557600080fd5b813581811115612e0457600080fd5b866020828501011115612d4f57600080fd5b600060208284031215612e2857600080fd5b5035919050565b60008060408385031215612e4257600080fd5b50508035926020909101359150565b60008151808452612e69816020860160208601613131565b601f01601f19169290920160200192915050565b60008351612e8f818460208801613131565b835190830190612ea3818360208801613131565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612edf90830184612e51565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612f2157835183529284019291840191600101612f05565b50909695505050505050565b602081526000611c206020830184612e51565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601690820152755041594d454e543a20696e76616c69642076616c756560501b604082015260600190565b6020808252601f908201527f535550504c593a2056616c756520657863656564732064726f704c696d697400604082015260600190565b602080825260169082015275557365207468652041646d696e732077616c6c65747360501b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156130a3576130a3613209565b604052919050565b600067ffffffffffffffff8211156130c5576130c5613209565b5060051b60200190565b600082198211156130e2576130e26131c7565b500190565b6000826130f6576130f66131dd565b500490565b6000816000190483118215151615613115576131156131c7565b500290565b60008282101561312c5761312c6131c7565b500390565b60005b8381101561314c578181015183820152602001613134565b83811115611b025750506000910152565b600181811c9082168061317157607f821691505b6020821081141561319257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156131ac576131ac6131c7565b5060010190565b6000826131c2576131c26131dd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611f0f57600080fd5b6001600160e01b031981168114611f0f57600080fdfea264697066735822122050211b2cb3cd4ed3d7eed5db90188d7bd522632507a24a8ed381660ad34b27a464736f6c63430008070033

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

0000000000000000000000000ad6c75d402a7b7c9043f953df43db20c492ea3e000000000000000000000000fa572cffac68194a29f4fa4a12f2f4ac90877087

-----Decoded View---------------
Arg [0] : _multisigWallet (address): 0x0AD6c75D402a7b7C9043F953DF43db20c492Ea3e
Arg [1] : _admin (address): 0xfa572CFfac68194A29F4Fa4a12F2F4Ac90877087

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000ad6c75d402a7b7c9043f953df43db20c492ea3e
Arg [1] : 000000000000000000000000fa572cffac68194a29f4fa4a12f2f4ac90877087


Deployed Bytecode Sourcemap

42353:8105:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47012:31;;;47021:10;9883:51:1;;47033:9:0;9965:2:1;9950:18;;9943:34;47012:31:0;;9856:18:1;47012:31:0;;;;;;;42353:8105;;;;;43900:64;;;;;;;;;;-1:-1:-1;43900:64:0;;;;;:::i;:::-;;:::i;:::-;;;22582:25:1;;;22570:2;22555:18;43900:64:0;;;;;;;;42424:224;;;;;;;;;;-1:-1:-1;42424:224:0;;;;;:::i;:::-;;:::i;:::-;;;11069:14:1;;11062:22;11044:41;;11032:2;11017:18;42424:224:0;10904:187:1;27531:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;29090:221::-;;;;;;;;;;-1:-1:-1;29090:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;9164:32:1;;;9146:51;;9134:2;9119:18;29090:221:0;9000:203:1;28613:411:0;;;;;;;;;;-1:-1:-1;28613:411:0;;;;;:::i;:::-;;:::i;:::-;;44903:103;;;;;;;;;;-1:-1:-1;44903:103:0;;;;;:::i;:::-;;:::i;50291:164::-;;;;;;;;;;-1:-1:-1;50291:164:0;;;;;:::i;:::-;;:::i;43354:33::-;;;;;;;;;;;;;;;;29840:339;;;;;;;;;;-1:-1:-1;29840:339:0;;;;;:::i;:::-;;:::i;46423:424::-;;;;;;;;;;-1:-1:-1;46423:424:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19178:321::-;;;;;;;;;;-1:-1:-1;19178:321:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;9901:32:1;;;9883:51;;9965:2;9950:18;;9943:34;;;;9856:18;19178:321:0;9701:282:1;45491:234:0;;;;;;;;;;-1:-1:-1;45491:234:0;;;;;:::i;:::-;;:::i;45014:105::-;;;;;;;;;;-1:-1:-1;45014:105:0;;;;;:::i;:::-;;:::i;44392:49::-;;;;;;;;;;-1:-1:-1;44392:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;49936:347;;;;;;;;;;;;;:::i;45127:92::-;;;;;;;;;;-1:-1:-1;45127:92:0;;;;;:::i;:::-;;:::i;47742:790::-;;;;;;:::i;:::-;;:::i;30250:185::-;;;;;;;;;;-1:-1:-1;30250:185:0;;;;;:::i;:::-;;:::i;43146:32::-;;;;;;;;;;-1:-1:-1;43146:32:0;;;;-1:-1:-1;;;43146:32:0;;;;;;45733:238;;;;;;;;;;-1:-1:-1;45733:238:0;;;;;:::i;:::-;;:::i;27225:239::-;;;;;;;;;;-1:-1:-1;27225:239:0;;;;;:::i;:::-;;:::i;43109:30::-;;;;;;;;;;-1:-1:-1;43109:30:0;;;;-1:-1:-1;;;43109:30:0;;;;;;43539:28;;;;;;;;;;;;;;;;43860:31;;;;;;;;;;-1:-1:-1;43860:31:0;;;;;:::i;:::-;;:::i;26955:208::-;;;;;;;;;;-1:-1:-1;26955:208:0;;;;;:::i;:::-;;:::i;5507:103::-;;;;;;;;;;;;;:::i;43475:24::-;;;;;;;;;;;;;;;;45979:234;;;;;;;;;;-1:-1:-1;45979:234:0;;;;;:::i;:::-;;:::i;47140:594::-;;;;;;:::i;:::-;;:::i;43432:36::-;;;;;;;;;;;;;;;;45227:86;;;;;;;;;;-1:-1:-1;45227:86:0;;;;;:::i;:::-;;:::i;42912:147::-;;;;;;;;;;-1:-1:-1;42912:147:0;;;;;:::i;:::-;;:::i;4856:87::-;;;;;;;;;;-1:-1:-1;4929:6:0;;-1:-1:-1;;;;;4929:6:0;4856:87;;44804:91;;;;;;;;;;-1:-1:-1;44804:91:0;;;;;:::i;:::-;;:::i;27700:104::-;;;;;;;;;;;;;:::i;48540:768::-;;;:::i;43263:34::-;;;;;;;;;;;;;;;;43824:29;;;;;;;;;;-1:-1:-1;43824:29:0;;;;-1:-1:-1;;;;;43824:29:0;;;29383:155;;;;;;;;;;-1:-1:-1;29383:155:0;;;;;:::i;:::-;;:::i;43508:24::-;;;;;;;;;;;;;;;;43394:31;;;;;;;;;;;;;;;;30506:328;;;;;;;;;;-1:-1:-1;30506:328:0;;;;;:::i;:::-;;:::i;46221:87::-;;;;;;;;;;-1:-1:-1;46221:87:0;;;;;:::i;:::-;;:::i;27875:334::-;;;;;;;;;;-1:-1:-1;27875:334:0;;;;;:::i;:::-;;:::i;44448:51::-;;;;;;;;;;-1:-1:-1;44448:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;43185:34;;;;;;;;;;-1:-1:-1;43185:34:0;;;;-1:-1:-1;;;43185:34:0;;;;;;49316:558;;;;;;:::i;:::-;;:::i;46316:99::-;;;;;;;;;;-1:-1:-1;46316:99:0;;;;;:::i;:::-;;:::i;44506:49::-;;;;;;;;;;-1:-1:-1;44506:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;45321:96;;;;;;;;;;-1:-1:-1;45321:96:0;;;;;:::i;:::-;;:::i;29609:164::-;;;;;;;;;;-1:-1:-1;29609:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;29730:25:0;;;29706:4;29730:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;29609:164;5765:201;;;;;;;;;;-1:-1:-1;5765:201:0;;;;;:::i;:::-;;:::i;43797:20::-;;;;;;;;;;-1:-1:-1;43797:20:0;;;;-1:-1:-1;;;;;43797:20:0;;;43900:64;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43900:64:0;:::o;42424:224::-;42575:4;42604:36;42628:11;42604:23;:36::i;:::-;42597:43;42424:224;-1:-1:-1;;42424:224:0:o;27531:100::-;27585:13;27618:5;27611:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27531:100;:::o;29090:221::-;29166:7;32433:16;;;:7;:16;;;;;;-1:-1:-1;;;;;32433:16:0;29186:73;;;;-1:-1:-1;;;29186:73:0;;18818:2:1;29186:73:0;;;18800:21:1;18857:2;18837:18;;;18830:30;18896:34;18876:18;;;18869:62;-1:-1:-1;;;18947:18:1;;;18940:42;18999:19;;29186:73:0;;;;;;;;;-1:-1:-1;29279:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;29279:24:0;;29090:221::o;28613:411::-;28694:13;28710:23;28725:7;28710:14;:23::i;:::-;28694:39;;28758:5;-1:-1:-1;;;;;28752:11:0;:2;-1:-1:-1;;;;;28752:11:0;;;28744:57;;;;-1:-1:-1;;;28744:57:0;;20359:2:1;28744:57:0;;;20341:21:1;20398:2;20378:18;;;20371:30;20437:34;20417:18;;;20410:62;-1:-1:-1;;;20488:18:1;;;20481:31;20529:19;;28744:57:0;20157:397:1;28744:57:0;3660:10;-1:-1:-1;;;;;28836:21:0;;;;:62;;-1:-1:-1;28861:37:0;28878:5;3660:10;29609:164;:::i;28861:37::-;28814:168;;;;-1:-1:-1;;;28814:168:0;;16806:2:1;28814:168:0;;;16788:21:1;16845:2;16825:18;;;16818:30;16884:34;16864:18;;;16857:62;16955:26;16935:18;;;16928:54;16999:19;;28814:168:0;16604:420:1;28814:168:0;28995:21;29004:2;29008:7;28995:8;:21::i;:::-;28683:341;28613:411;;:::o;44903:103::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;44976:9:::1;:22:::0;44903:103::o;50291:164::-;44092:14;;-1:-1:-1;;;;;44092:14:0;44078:10;:28;44070:63;;;;-1:-1:-1;;;44070:63:0;;21530:2:1;44070:63:0;;;21512:21:1;21569:2;21549:18;;;21542:30;-1:-1:-1;;;21588:18:1;;;21581:52;21650:18;;44070:63:0;21328:346:1;44070:63:0;50413:34:::1;:16;50432:15:::0;;50413:34:::1;:::i;29840:339::-:0;30035:41;3660:10;30068:7;30035:18;:41::i;:::-;30027:103;;;;-1:-1:-1;;;30027:103:0;;;;;;;:::i;:::-;30143:28;30153:4;30159:2;30163:7;30143:9;:28::i;46423:424::-;46513:16;46547:23;46587:17;46597:6;46587:9;:17::i;:::-;46573:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46573:32:0;;46547:58;;46616:15;46651:9;46646:170;46670:5;;46666:1;:9;46646:170;;;46715:6;-1:-1:-1;;;;;46701:20:0;:10;46709:1;46701:7;:10::i;:::-;-1:-1:-1;;;;;46701:20:0;;46697:108;;;46760:1;46742:6;46749:7;46742:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;46780:9;;;;:::i;:::-;;;;46697:108;46677:3;;;;:::i;:::-;;;;46646:170;;;-1:-1:-1;46833:6:0;;46423:424;-1:-1:-1;;;46423:424:0:o;19178:321::-;19348:41;;;;;;;;;19379:10;19348:41;-1:-1:-1;;;;;19348:41:0;;;;;-1:-1:-1;;;19348:41:0;;;;;;;;;;;;;-1:-1:-1;;19486:5:0;;19458:24;;:5;:24;:::i;:::-;19457:34;;;;:::i;:::-;19441:50;;19337:162;19178:321;;;;;:::o;45491:234::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;45622:9:::1;45617:101;45641:2;:9;45637:1;:13;45617:101;;;45696:7;45704:1;45696:10;;;;;;;;:::i;:::-;;;;;;;45672:14;:21;45687:2;45690:1;45687:5;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;45672:21:0::1;-1:-1:-1::0;;;;;45672:21:0::1;;;;;;;;;;;;:34;;;;45652:3;;;;;:::i;:::-;;;;45617:101;;45014:105:::0;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;45092:19:::1;:12;45107:4:::0;;45092:19:::1;:::i;49936:347::-:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;50002:16:::1;;;;;;;;;-1:-1:-1::0;;;;;50002:16:0::1;-1:-1:-1::0;;;;;50002:26:0::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;50002:28:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;49985:45:::0;;::::1;::::0;:14:::1;::::0;:45:::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;50058:21:0::1;50041:14;50092:184;50116:14;:21:::0;50112:25;::::1;50092:184;;;50167:14;50182:1;50167:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;50223:16:::1;:19:::0;;-1:-1:-1;;;;;50167:17:0;;::::1;::::0;50159:105:::1;::::0;50246:3:::1;::::0;50240:1;;50223:19;::::1;;;;;:::i;:::-;;;;;;;;;50214:6;:28;;;;:::i;:::-;50213:36;;;;:::i;:::-;50159:105;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;50139:3:0;::::1;::::0;::::1;:::i;:::-;;;;50092:184;;;;49974:309;49936:347::o:0;45127:92::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;45192:13:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;45192:19:0::1;-1:-1:-1::0;;;;45192:19:0;;::::1;::::0;;;::::1;::::0;;45127:92::o;47742:790::-;47844:10;47805:21;47829:26;;;:14;:26;;;;;;47874:15;;-1:-1:-1;;;47874:15:0;;;;47866:54;;;;-1:-1:-1;;;47866:54:0;;13109:2:1;47866:54:0;;;13091:21:1;13148:2;13128:18;;;13121:30;13187:28;13167:18;;;13160:56;13233:18;;47866:54:0;12907:350:1;47866:54:0;47946:13;47939:3;:20;;47931:71;;;;-1:-1:-1;;;47931:71:0;;22231:2:1;47931:71:0;;;22213:21:1;22270:2;22250:18;;;22243:30;22309:34;22289:18;;;22282:62;-1:-1:-1;;;22360:18:1;;;22353:36;22406:19;;47931:71:0;22029:402:1;47931:71:0;48050:9;;48041:5;;48035:11;;:3;:11;:::i;:::-;:24;;48013:105;;;;-1:-1:-1;;;48013:105:0;;;;;;;:::i;:::-;48191:3;48179:8;;48173:3;48165:5;;:11;;;;:::i;:::-;:22;;;;:::i;:::-;48164:30;;;;:::i;:::-;48151:9;:43;;48129:115;;;;-1:-1:-1;;;48129:115:0;;;;;;;:::i;:::-;48301:10;48286:26;;;;:14;:26;;;;;;:32;;48315:3;;48286:32;:::i;:::-;48272:10;48257:26;;;;:14;:26;;;;;:61;;;;48329:151;48353:3;48349:1;:7;48329:151;;;48396:5;;48416:30;48426:10;48396:5;48416:9;:30::i;:::-;48461:5;:7;;;:5;:7;;;:::i;:::-;;;;;;48363:117;48358:3;;;;;:::i;:::-;;;;48329:151;;;-1:-1:-1;48495:29:0;;;48508:10;9883:51:1;;9965:2;9950:18;;9943:34;;;48495:29:0;;9856:18:1;48495:29:0;;;;;;;;47794:738;47742:790;:::o;30250:185::-;30388:39;30405:4;30411:2;30415:7;30388:39;;;;;;;;;;;;:16;:39::i;45733:238::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;45866:9:::1;45861:103;45885:2;:9;45881:1;:13;45861:103;;;45942:7;45950:1;45942:10;;;;;;;;:::i;:::-;;;;;;;45916:16;:23;45933:2;45936:1;45933:5;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;45916:23:0::1;-1:-1:-1::0;;;;;45916:23:0::1;;;;;;;;;;;;:36;;;;45896:3;;;;;:::i;:::-;;;;45861:103;;27225:239:::0;27297:7;27333:16;;;:7;:16;;;;;;-1:-1:-1;;;;;27333:16:0;27368:19;27360:73;;;;-1:-1:-1;;;27360:73:0;;17642:2:1;27360:73:0;;;17624:21:1;17681:2;17661:18;;;17654:30;17720:34;17700:18;;;17693:62;-1:-1:-1;;;17771:18:1;;;17764:39;17820:19;;27360:73:0;17440:405:1;43860:31:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43860:31:0;;-1:-1:-1;43860:31:0;:::o;26955:208::-;27027:7;-1:-1:-1;;;;;27055:19:0;;27047:74;;;;-1:-1:-1;;;27047:74:0;;17231:2:1;27047:74:0;;;17213:21:1;17270:2;17250:18;;;17243:30;17309:34;17289:18;;;17282:62;-1:-1:-1;;;17360:18:1;;;17353:40;17410:19;;27047:74:0;17029:406:1;27047:74:0;-1:-1:-1;;;;;;27139:16:0;;;;;:9;:16;;;;;;;26955:208::o;5507:103::-;4929:6;;-1:-1:-1;;;;;4929:6:0;3660:10;5076:23;5068:68;;;;-1:-1:-1;;;5068:68:0;;19231:2:1;5068:68:0;;;19213:21:1;;;19250:18;;;19243:30;19309:34;19289:18;;;19282:62;19361:18;;5068:68:0;19029:356:1;5068:68:0;5572:30:::1;5599:1;5572:18;:30::i;:::-;5507:103::o:0;45979:234::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;46110:9:::1;46105:101;46129:2;:9;46125:1;:13;46105:101;;;46184:7;46192:1;46184:10;;;;;;;;:::i;:::-;;;;;;;46160:14;:21;46175:2;46178:1;46175:5;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;46160:21:0::1;-1:-1:-1::0;;;;;46160:21:0::1;;;;;;;;;;;;:34;;;;46140:3;;;;;:::i;:::-;;;;46105:101;;47140:594:::0;47240:10;47199:21;47223:28;;;:16;:28;;;;;;47270:20;;;;47262:69;;;;-1:-1:-1;;;47262:69:0;;18052:2:1;47262:69:0;;;18034:21:1;18091:2;18071:18;;;18064:30;18130:34;18110:18;;;18103:62;-1:-1:-1;;;18181:18:1;;;18174:34;18225:19;;47262:69:0;17850:400:1;47262:69:0;47378:9;;47369:5;;47363:11;;:3;:11;:::i;:::-;:24;;47342:104;;;;-1:-1:-1;;;47342:104:0;;;;;;;:::i;:::-;47507:10;47490:28;;;;:16;:28;;;;;;:34;;47521:3;;47490:34;:::i;:::-;47476:10;47459:28;;;;:16;:28;;;;;:65;;;;47535:151;47559:3;47555:1;:7;47535:151;;;47602:5;;47622:30;47632:10;47602:5;47622:9;:30::i;:::-;47667:5;:7;;;:5;:7;;;:::i;:::-;;;;;;47569:117;47564:3;;;;;:::i;:::-;;;;47535:151;;;-1:-1:-1;47701:25:0;;;47710:10;9883:51:1;;9965:2;9950:18;;9943:34;;;47701:25:0;;9856:18:1;47701:25:0;9701:282:1;45227:86:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;45289:10:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;45289:16:0::1;-1:-1:-1::0;;;;45289:16:0;;::::1;::::0;;;::::1;::::0;;45227:86::o;42912:147::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;43020:31:::1;43034:9;43045:5;43020:13;:31::i;44804:91::-:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;44871:5:::1;:16:::0;44804:91::o;27700:104::-;27756:13;27789:7;27782:14;;;;;:::i;48540:768::-;48629:10;48590:21;48614:26;;;:14;:26;;;;;;48661:13;;-1:-1:-1;;;48661:13:0;;;;48653:47;;;;-1:-1:-1;;;48653:47:0;;21881:2:1;48653:47:0;;;21863:21:1;21920:2;21900:18;;;21893:30;-1:-1:-1;;;21939:18:1;;;21932:51;22000:18;;48653:47:0;21679:345:1;48653:47:0;48733:1;48719:13;:15;48711:50;;;;-1:-1:-1;;;48711:50:0;;20008:2:1;48711:50:0;;;19990:21:1;20047:2;20027:18;;;20020:30;-1:-1:-1;;;20066:18:1;;;20059:52;20128:18;;48711:50:0;19806:346:1;48711:50:0;48806:9;;48793:5;;:9;;48801:1;48793:9;:::i;:::-;:22;;48772:102;;;;-1:-1:-1;;;48772:102:0;;;;;;;:::i;:::-;48936:16;;48907:21;48917:10;48907:9;:21::i;:::-;:25;;48931:1;48907:25;:::i;:::-;:45;;48885:128;;;;-1:-1:-1;;;48885:128:0;;13821:2:1;48885:128:0;;;13803:21:1;13860:2;13840:18;;;13833:30;13899:34;13879:18;;;13872:62;-1:-1:-1;;;13950:18:1;;;13943:31;13991:19;;48885:128:0;13619:397:1;48885:128:0;49045:5;;49032:9;:18;;49024:53;;;;-1:-1:-1;;;49024:53:0;;;;;;;:::i;:::-;49132:10;49117:26;;;;:14;:26;;;;;;:30;;49146:1;;49117:30;:::i;:::-;49103:10;49088:26;;;;:14;:26;;;;;:59;;;;49182:5;;49160:28;;49103:10;49160:9;:28::i;:::-;49199:5;:7;;;:5;:7;;;:::i;:::-;;;;;;49217:28;49227:10;49239:5;;49217:9;:28::i;:::-;49256:5;:7;;;:5;:7;;;:::i;:::-;;;;-1:-1:-1;;49281:19:0;;;49286:10;9883:51:1;;49298:1:0;9965:2:1;9950:18;;9943:34;49281:19:0;;9856:18:1;49281:19:0;;;;;;;;48579:729;48540:768::o;29383:155::-;29478:52;3660:10;29511:8;29521;29478:18;:52::i;30506:328::-;30681:41;3660:10;30714:7;30681:18;:41::i;:::-;30673:103;;;;-1:-1:-1;;;30673:103:0;;;;;;;:::i;:::-;30787:39;30801:4;30807:2;30811:7;30820:5;30787:13;:39::i;:::-;30506:328;;;;:::o;46221:87::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;46286:5:::1;:14:::0;46221:87::o;27875:334::-;32409:4;32433:16;;;:7;:16;;;;;;27948:13;;-1:-1:-1;;;;;32433:16:0;27974:76;;;;-1:-1:-1;;;27974:76:0;;19592:2:1;27974:76:0;;;19574:21:1;19631:2;19611:18;;;19604:30;19670:34;19650:18;;;19643:62;-1:-1:-1;;;19721:18:1;;;19714:45;19776:19;;27974:76:0;19390:411:1;27974:76:0;28063:21;28087:10;:8;:10::i;:::-;28063:34;;28139:1;28121:7;28115:21;:25;:86;;;;;;;;;;;;;;;;;28167:7;28176:18;:7;:16;:18::i;:::-;28150:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28115:86;28108:93;27875:334;-1:-1:-1;;;27875:334:0:o;49316:558::-;49378:10;;-1:-1:-1;;;49378:10:0;;;;49370:41;;;;-1:-1:-1;;;49370:41:0;;16459:2:1;49370:41:0;;;16441:21:1;16498:2;16478:18;;;16471:30;-1:-1:-1;;;16517:18:1;;;16510:48;16575:18;;49370:41:0;16257:342:1;49370:41:0;49437:5;;49430:3;:12;;:23;;;;;49452:1;49446:3;:7;49430:23;49422:60;;;;-1:-1:-1;;;49422:60:0;;15693:2:1;49422:60:0;;;15675:21:1;15732:2;15712:18;;;15705:30;15771:26;15751:18;;;15744:54;15815:18;;49422:60:0;15491:348:1;49422:60:0;49530:9;;49521:5;;49515:11;;:3;:11;:::i;:::-;:24;;49493:105;;;;-1:-1:-1;;;49493:105:0;;;;;;;:::i;:::-;49638:3;49630:5;;:11;;;;:::i;:::-;49617:9;:24;;49609:59;;;;-1:-1:-1;;;49609:59:0;;;;;;;:::i;:::-;49684:9;49679:151;49703:3;49699:1;:7;49679:151;;;49746:5;;49766:30;49776:10;49746:5;49766:9;:30::i;:::-;49811:5;:7;;;:5;:7;;;:::i;:::-;;;;;;49713:117;49708:3;;;;;:::i;:::-;;;;49679:151;;;-1:-1:-1;49845:21:0;;;49850:10;9883:51:1;;9965:2;9950:18;;9943:34;;;49845:21:0;;9856:18:1;49845:21:0;9701:282:1;46316:99:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;46387:8:::1;:20:::0;46316:99::o;45321:96::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44216:10;:21;;:44;;-1:-1:-1;44255:5:0;;-1:-1:-1;;;;;44255:5:0;44241:10;:19;44216:44;44194:116;;;;-1:-1:-1;;;44194:116:0;;;;;;;:::i;:::-;45388:15:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;45388:21:0::1;-1:-1:-1::0;;;;45388:21:0;;::::1;::::0;;;::::1;::::0;;45321:96::o;5765:201::-;4929:6;;-1:-1:-1;;;;;4929:6:0;3660:10;5076:23;5068:68;;;;-1:-1:-1;;;5068:68:0;;19231:2:1;5068:68:0;;;19213:21:1;;;19250:18;;;19243:30;19309:34;19289:18;;;19282:62;19361:18;;5068:68:0;19029:356:1;5068:68:0;-1:-1:-1;;;;;5854:22:0;::::1;5846:73;;;::::0;-1:-1:-1;;;5846:73:0;;12296:2:1;5846:73:0::1;::::0;::::1;12278:21:1::0;12335:2;12315:18;;;12308:30;12374:34;12354:18;;;12347:62;-1:-1:-1;;;12425:18:1;;;12418:36;12471:19;;5846:73:0::1;12094:402:1::0;5846:73:0::1;5930:28;5949:8;5930:18;:28::i;:::-;5765:201:::0;:::o;18132:283::-;18262:4;-1:-1:-1;;;;;;18304:50:0;;-1:-1:-1;;;18304:50:0;;:103;;;18371:36;18395:11;18371:23;:36::i;36490:174::-;36565:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;36565:29:0;-1:-1:-1;;;;;36565:29:0;;;;;;;;:24;;36619:23;36565:24;36619:14;:23::i;:::-;-1:-1:-1;;;;;36610:46:0;;;;;;;;;;;36490:174;;:::o;32638:348::-;32731:4;32433:16;;;:7;:16;;;;;;-1:-1:-1;;;;;32433:16:0;32748:73;;;;-1:-1:-1;;;32748:73:0;;16046:2:1;32748:73:0;;;16028:21:1;16085:2;16065:18;;;16058:30;16124:34;16104:18;;;16097:62;-1:-1:-1;;;16175:18:1;;;16168:42;16227:19;;32748:73:0;15844:408:1;32748:73:0;32832:13;32848:23;32863:7;32848:14;:23::i;:::-;32832:39;;32901:5;-1:-1:-1;;;;;32890:16:0;:7;-1:-1:-1;;;;;32890:16:0;;:51;;;;32934:7;-1:-1:-1;;;;;32910:31:0;:20;32922:7;32910:11;:20::i;:::-;-1:-1:-1;;;;;32910:31:0;;32890:51;:87;;;-1:-1:-1;;;;;;29730:25:0;;;29706:4;29730:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;32945:32;32882:96;32638:348;-1:-1:-1;;;;32638:348:0:o;35747:625::-;35906:4;-1:-1:-1;;;;;35879:31:0;:23;35894:7;35879:14;:23::i;:::-;-1:-1:-1;;;;;35879:31:0;;35871:81;;;;-1:-1:-1;;;35871:81:0;;12703:2:1;35871:81:0;;;12685:21:1;12742:2;12722:18;;;12715:30;12781:34;12761:18;;;12754:62;-1:-1:-1;;;12832:18:1;;;12825:35;12877:19;;35871:81:0;12501:401:1;35871:81:0;-1:-1:-1;;;;;35971:16:0;;35963:65;;;;-1:-1:-1;;;35963:65:0;;14934:2:1;35963:65:0;;;14916:21:1;14973:2;14953:18;;;14946:30;15012:34;14992:18;;;14985:62;-1:-1:-1;;;15063:18:1;;;15056:34;15107:19;;35963:65:0;14732:400:1;35963:65:0;36145:29;36162:1;36166:7;36145:8;:29::i;:::-;-1:-1:-1;;;;;36187:15:0;;;;;;:9;:15;;;;;:20;;36206:1;;36187:15;:20;;36206:1;;36187:20;:::i;:::-;;;;-1:-1:-1;;;;;;;36218:13:0;;;;;;:9;:13;;;;;:18;;36235:1;;36218:13;:18;;36235:1;;36218:18;:::i;:::-;;;;-1:-1:-1;;36247:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;36247:21:0;-1:-1:-1;;;;;36247:21:0;;;;;;;;;36286:27;;36247:16;;36286:27;;;;;;;28683:341;28613:411;;:::o;33328:110::-;33404:26;33414:2;33418:7;33404:26;;;;;;;;;;;;:9;:26::i;6126:191::-;6219:6;;;-1:-1:-1;;;;;6236:17:0;;;-1:-1:-1;;;;;;6236:17:0;;;;;;;6269:40;;6219:6;;;6236:17;6219:6;;6269:40;;6200:16;;6269:40;6189:128;6126:191;:::o;18932:199::-;19026:5;19017;:14;;19009:53;;;;-1:-1:-1;;;19009:53:0;;11522:2:1;19009:53:0;;;11504:21:1;11561:2;11541:18;;;11534:30;11600:28;11580:18;;;11573:56;11646:18;;19009:53:0;11320:350:1;19009:53:0;19086:37;;;;;;;;;-1:-1:-1;;;;;19086:37:0;;;;;;;;;;;;;;;;;19073:10;:50;;-1:-1:-1;;;19073:50:0;;;-1:-1:-1;;;;;;19073:50:0;;;;;;;;;;;;18932:199::o;36806:315::-;36961:8;-1:-1:-1;;;;;36952:17:0;:5;-1:-1:-1;;;;;36952:17:0;;;36944:55;;;;-1:-1:-1;;;36944:55:0;;15339:2:1;36944:55:0;;;15321:21:1;15378:2;15358:18;;;15351:30;15417:27;15397:18;;;15390:55;15462:18;;36944:55:0;15137:349:1;36944:55:0;-1:-1:-1;;;;;37010:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;37010:46:0;;;;;;;;;;37072:41;;11044::1;;;37072::0;;11017:18:1;37072:41:0;;;;;;;36806:315;;;:::o;31716:::-;31873:28;31883:4;31889:2;31893:7;31873:9;:28::i;:::-;31920:48;31943:4;31949:2;31953:7;31962:5;31920:22;:48::i;:::-;31912:111;;;;-1:-1:-1;;;31912:111:0;;;;;;;:::i;46855:105::-;46907:13;46940:12;46933:19;;;;;:::i;1142:723::-;1198:13;1419:10;1415:53;;-1:-1:-1;;1446:10:0;;;;;;;;;;;;-1:-1:-1;;;1446:10:0;;;;;1142:723::o;1415:53::-;1493:5;1478:12;1534:78;1541:9;;1534:78;;1567:8;;;;:::i;:::-;;-1:-1:-1;1590:10:0;;-1:-1:-1;1598:2:0;1590:10;;:::i;:::-;;;1534:78;;;1622:19;1654:6;1644:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1644:17:0;;1622:39;;1672:154;1679:10;;1672:154;;1706:11;1716:1;1706:11;;:::i;:::-;;-1:-1:-1;1775:10:0;1783:2;1775:5;:10;:::i;:::-;1762:24;;:2;:24;:::i;:::-;1749:39;;1732:6;1739;1732:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1732:56:0;;;;;;;;-1:-1:-1;1803:11:0;1812:2;1803:11;;:::i;:::-;;;1672:154;;26586:305;26688:4;-1:-1:-1;;;;;;26725:40:0;;-1:-1:-1;;;26725:40:0;;:105;;-1:-1:-1;;;;;;;26782:48:0;;-1:-1:-1;;;26782:48:0;26725:105;:158;;;-1:-1:-1;;;;;;;;;;17749:40:0;;;26847:36;17640:157;33665:321;33795:18;33801:2;33805:7;33795:5;:18::i;:::-;33846:54;33877:1;33881:2;33885:7;33894:5;33846:22;:54::i;:::-;33824:154;;;;-1:-1:-1;;;33824:154:0;;;;;;;:::i;37686:799::-;37841:4;-1:-1:-1;;;;;37862:13:0;;7852:19;:23;37858:620;;37898:72;;-1:-1:-1;;;37898:72:0;;-1:-1:-1;;;;;37898:36:0;;;;;:72;;3660:10;;37949:4;;37955:7;;37964:5;;37898:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37898:72:0;;;;;;;;-1:-1:-1;;37898:72:0;;;;;;;;;;;;:::i;:::-;;;37894:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38140:13:0;;38136:272;;38183:60;;-1:-1:-1;;;38183:60:0;;;;;;;:::i;38136:272::-;38358:6;38352:13;38343:6;38339:2;38335:15;38328:38;37894:529;-1:-1:-1;;;;;;38021:51:0;-1:-1:-1;;;38021:51:0;;-1:-1:-1;38014:58:0;;37858:620;-1:-1:-1;38462:4:0;37686:799;;;;;;:::o;34322:439::-;-1:-1:-1;;;;;34402:16:0;;34394:61;;;;-1:-1:-1;;;34394:61:0;;18457:2:1;34394:61:0;;;18439:21:1;;;18476:18;;;18469:30;18535:34;18515:18;;;18508:62;18587:18;;34394:61:0;18255:356:1;34394:61:0;32409:4;32433:16;;;:7;:16;;;;;;-1:-1:-1;;;;;32433:16:0;:30;34466:58;;;;-1:-1:-1;;;34466:58:0;;13464:2:1;34466:58:0;;;13446:21:1;13503:2;13483:18;;;13476:30;13542;13522:18;;;13515:58;13590:18;;34466:58:0;13262:352:1;34466:58:0;-1:-1:-1;;;;;34595:13:0;;;;;;:9;:13;;;;;:18;;34612:1;;34595:13;:18;;34612:1;;34595:18;:::i;:::-;;;;-1:-1:-1;;34624:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;34624:21:0;-1:-1:-1;;;;;34624:21:0;;;;;;;;34663:33;;34624:16;;;34663:33;;34624:16;;34663:33;50092:184:::1;49974:309;49936:347::o:0;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:673:1;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:160::-;757:20;;813:13;;806:21;796:32;;786:60;;842:1;839;832:12;786:60;692:160;;;:::o;857:247::-;916:6;969:2;957:9;948:7;944:23;940:32;937:52;;;985:1;982;975:12;937:52;1024:9;1011:23;1043:31;1068:5;1043:31;:::i;1109:388::-;1177:6;1185;1238:2;1226:9;1217:7;1213:23;1209:32;1206:52;;;1254:1;1251;1244:12;1206:52;1293:9;1280:23;1312:31;1337:5;1312:31;:::i;:::-;1362:5;-1:-1:-1;1419:2:1;1404:18;;1391:32;1432:33;1391:32;1432:33;:::i;:::-;1484:7;1474:17;;;1109:388;;;;;:::o;1502:456::-;1579:6;1587;1595;1648:2;1636:9;1627:7;1623:23;1619:32;1616:52;;;1664:1;1661;1654:12;1616:52;1703:9;1690:23;1722:31;1747:5;1722:31;:::i;:::-;1772:5;-1:-1:-1;1829:2:1;1814:18;;1801:32;1842:33;1801:32;1842:33;:::i;:::-;1502:456;;1894:7;;-1:-1:-1;;;1948:2:1;1933:18;;;;1920:32;;1502:456::o;1963:1108::-;2058:6;2066;2074;2082;2135:3;2123:9;2114:7;2110:23;2106:33;2103:53;;;2152:1;2149;2142:12;2103:53;2191:9;2178:23;2210:31;2235:5;2210:31;:::i;:::-;2260:5;-1:-1:-1;2284:2:1;2323:18;;;2310:32;2351:33;2310:32;2351:33;:::i;:::-;2403:7;-1:-1:-1;2457:2:1;2442:18;;2429:32;;-1:-1:-1;2512:2:1;2497:18;;2484:32;2535:18;2565:14;;;2562:34;;;2592:1;2589;2582:12;2562:34;2630:6;2619:9;2615:22;2605:32;;2675:7;2668:4;2664:2;2660:13;2656:27;2646:55;;2697:1;2694;2687:12;2646:55;2733:2;2720:16;2755:2;2751;2748:10;2745:36;;;2761:18;;:::i;:::-;2803:53;2846:2;2827:13;;-1:-1:-1;;2823:27:1;2819:36;;2803:53;:::i;:::-;2790:66;;2879:2;2872:5;2865:17;2919:7;2914:2;2909;2905;2901:11;2897:20;2894:33;2891:53;;;2940:1;2937;2930:12;2891:53;2995:2;2990;2986;2982:11;2977:2;2970:5;2966:14;2953:45;3039:1;3034:2;3029;3022:5;3018:14;3014:23;3007:34;;3060:5;3050:15;;;;;1963:1108;;;;;;;:::o;3076:315::-;3141:6;3149;3202:2;3190:9;3181:7;3177:23;3173:32;3170:52;;;3218:1;3215;3208:12;3170:52;3257:9;3244:23;3276:31;3301:5;3276:31;:::i;:::-;3326:5;-1:-1:-1;3350:35:1;3381:2;3366:18;;3350:35;:::i;:::-;3340:45;;3076:315;;;;;:::o;3396:::-;3464:6;3472;3525:2;3513:9;3504:7;3500:23;3496:32;3493:52;;;3541:1;3538;3531:12;3493:52;3580:9;3567:23;3599:31;3624:5;3599:31;:::i;:::-;3649:5;3701:2;3686:18;;;;3673:32;;-1:-1:-1;;;3396:315:1:o;3716:967::-;3811:6;3842:2;3885;3873:9;3864:7;3860:23;3856:32;3853:52;;;3901:1;3898;3891:12;3853:52;3934:9;3928:16;3967:18;3959:6;3956:30;3953:50;;;3999:1;3996;3989:12;3953:50;4022:22;;4075:4;4067:13;;4063:27;-1:-1:-1;4053:55:1;;4104:1;4101;4094:12;4053:55;4133:2;4127:9;4156:60;4172:43;4212:2;4172:43;:::i;4156:60::-;4238:3;4262:2;4257:3;4250:15;4290:2;4285:3;4281:12;4274:19;;4321:2;4317;4313:11;4369:7;4364:2;4358;4355:1;4351:10;4347:2;4343:19;4339:28;4336:41;4333:61;;;4390:1;4387;4380:12;4333:61;4412:1;4403:10;;4422:231;4436:2;4433:1;4430:9;4422:231;;;4500:3;4494:10;4517:31;4542:5;4517:31;:::i;:::-;4561:18;;4454:1;4447:9;;;;;4599:12;;;;4631;;4422:231;;;-1:-1:-1;4672:5:1;3716:967;-1:-1:-1;;;;;;;3716:967:1:o;4688:1226::-;4806:6;4814;4867:2;4855:9;4846:7;4842:23;4838:32;4835:52;;;4883:1;4880;4873:12;4835:52;4923:9;4910:23;4952:18;4993:2;4985:6;4982:14;4979:34;;;5009:1;5006;4999:12;4979:34;5047:6;5036:9;5032:22;5022:32;;5092:7;5085:4;5081:2;5077:13;5073:27;5063:55;;5114:1;5111;5104:12;5063:55;5150:2;5137:16;5172:4;5196:60;5212:43;5252:2;5212:43;:::i;5196:60::-;5278:3;5302:2;5297:3;5290:15;5330:2;5325:3;5321:12;5314:19;;5361:2;5357;5353:11;5409:7;5404:2;5398;5395:1;5391:10;5387:2;5383:19;5379:28;5376:41;5373:61;;;5430:1;5427;5420:12;5373:61;5452:1;5443:10;;5462:238;5476:2;5473:1;5470:9;5462:238;;;5547:3;5534:17;5564:31;5589:5;5564:31;:::i;:::-;5608:18;;5494:1;5487:9;;;;;5646:12;;;;5678;;5462:238;;;-1:-1:-1;5719:5:1;-1:-1:-1;;5762:18:1;;5749:32;;-1:-1:-1;;5793:16:1;;;5790:36;;;5822:1;5819;5812:12;5790:36;;5845:63;5900:7;5889:8;5878:9;5874:24;5845:63;:::i;5919:615::-;6005:6;6013;6066:2;6054:9;6045:7;6041:23;6037:32;6034:52;;;6082:1;6079;6072:12;6034:52;6122:9;6109:23;6151:18;6192:2;6184:6;6181:14;6178:34;;;6208:1;6205;6198:12;6178:34;6246:6;6235:9;6231:22;6221:32;;6291:7;6284:4;6280:2;6276:13;6272:27;6262:55;;6313:1;6310;6303:12;6262:55;6353:2;6340:16;6379:2;6371:6;6368:14;6365:34;;;6395:1;6392;6385:12;6365:34;6448:7;6443:2;6433:6;6430:1;6426:14;6422:2;6418:23;6414:32;6411:45;6408:65;;;6469:1;6466;6459:12;6408:65;6500:2;6492:11;;;;;6522:6;;-1:-1:-1;5919:615:1;;-1:-1:-1;;;;5919:615:1:o;6539:180::-;6595:6;6648:2;6636:9;6627:7;6623:23;6619:32;6616:52;;;6664:1;6661;6654:12;6616:52;6687:26;6703:9;6687:26;:::i;6724:245::-;6782:6;6835:2;6823:9;6814:7;6810:23;6806:32;6803:52;;;6851:1;6848;6841:12;6803:52;6890:9;6877:23;6909:30;6933:5;6909:30;:::i;6974:249::-;7043:6;7096:2;7084:9;7075:7;7071:23;7067:32;7064:52;;;7112:1;7109;7102:12;7064:52;7144:9;7138:16;7163:30;7187:5;7163:30;:::i;7228:592::-;7299:6;7307;7360:2;7348:9;7339:7;7335:23;7331:32;7328:52;;;7376:1;7373;7366:12;7328:52;7416:9;7403:23;7445:18;7486:2;7478:6;7475:14;7472:34;;;7502:1;7499;7492:12;7472:34;7540:6;7529:9;7525:22;7515:32;;7585:7;7578:4;7574:2;7570:13;7566:27;7556:55;;7607:1;7604;7597:12;7556:55;7647:2;7634:16;7673:2;7665:6;7662:14;7659:34;;;7689:1;7686;7679:12;7659:34;7734:7;7729:2;7720:6;7716:2;7712:15;7708:24;7705:37;7702:57;;;7755:1;7752;7745:12;7825:180;7884:6;7937:2;7925:9;7916:7;7912:23;7908:32;7905:52;;;7953:1;7950;7943:12;7905:52;-1:-1:-1;7976:23:1;;7825:180;-1:-1:-1;7825:180:1:o;8010:248::-;8078:6;8086;8139:2;8127:9;8118:7;8114:23;8110:32;8107:52;;;8155:1;8152;8145:12;8107:52;-1:-1:-1;;8178:23:1;;;8248:2;8233:18;;;8220:32;;-1:-1:-1;8010:248:1:o;8263:257::-;8304:3;8342:5;8336:12;8369:6;8364:3;8357:19;8385:63;8441:6;8434:4;8429:3;8425:14;8418:4;8411:5;8407:16;8385:63;:::i;:::-;8502:2;8481:15;-1:-1:-1;;8477:29:1;8468:39;;;;8509:4;8464:50;;8263:257;-1:-1:-1;;8263:257:1:o;8525:470::-;8704:3;8742:6;8736:13;8758:53;8804:6;8799:3;8792:4;8784:6;8780:17;8758:53;:::i;:::-;8874:13;;8833:16;;;;8896:57;8874:13;8833:16;8930:4;8918:17;;8896:57;:::i;:::-;8969:20;;8525:470;-1:-1:-1;;;;8525:470:1:o;9208:488::-;-1:-1:-1;;;;;9477:15:1;;;9459:34;;9529:15;;9524:2;9509:18;;9502:43;9576:2;9561:18;;9554:34;;;9624:3;9619:2;9604:18;;9597:31;;;9402:4;;9645:45;;9670:19;;9662:6;9645:45;:::i;:::-;9637:53;9208:488;-1:-1:-1;;;;;;9208:488:1:o;10267:632::-;10438:2;10490:21;;;10560:13;;10463:18;;;10582:22;;;10409:4;;10438:2;10661:15;;;;10635:2;10620:18;;;10409:4;10704:169;10718:6;10715:1;10712:13;10704:169;;;10779:13;;10767:26;;10848:15;;;;10813:12;;;;10740:1;10733:9;10704:169;;;-1:-1:-1;10890:3:1;;10267:632;-1:-1:-1;;;;;;10267:632:1:o;11096:219::-;11245:2;11234:9;11227:21;11208:4;11265:44;11305:2;11294:9;11290:18;11282:6;11265:44;:::i;11675:414::-;11877:2;11859:21;;;11916:2;11896:18;;;11889:30;11955:34;11950:2;11935:18;;11928:62;-1:-1:-1;;;12021:2:1;12006:18;;11999:48;12079:3;12064:19;;11675:414::o;14021:346::-;14223:2;14205:21;;;14262:2;14242:18;;;14235:30;-1:-1:-1;;;14296:2:1;14281:18;;14274:52;14358:2;14343:18;;14021:346::o;14372:355::-;14574:2;14556:21;;;14613:2;14593:18;;;14586:30;14652:33;14647:2;14632:18;;14625:61;14718:2;14703:18;;14372:355::o;20559:346::-;20761:2;20743:21;;;20800:2;20780:18;;;20773:30;-1:-1:-1;;;20834:2:1;20819:18;;20812:52;20896:2;20881:18;;20559:346::o;20910:413::-;21112:2;21094:21;;;21151:2;21131:18;;;21124:30;21190:34;21185:2;21170:18;;21163:62;-1:-1:-1;;;21256:2:1;21241:18;;21234:47;21313:3;21298:19;;20910:413::o;22618:275::-;22689:2;22683:9;22754:2;22735:13;;-1:-1:-1;;22731:27:1;22719:40;;22789:18;22774:34;;22810:22;;;22771:62;22768:88;;;22836:18;;:::i;:::-;22872:2;22865:22;22618:275;;-1:-1:-1;22618:275:1:o;22898:183::-;22958:4;22991:18;22983:6;22980:30;22977:56;;;23013:18;;:::i;:::-;-1:-1:-1;23058:1:1;23054:14;23070:4;23050:25;;22898:183::o;23086:128::-;23126:3;23157:1;23153:6;23150:1;23147:13;23144:39;;;23163:18;;:::i;:::-;-1:-1:-1;23199:9:1;;23086:128::o;23219:120::-;23259:1;23285;23275:35;;23290:18;;:::i;:::-;-1:-1:-1;23324:9:1;;23219:120::o;23344:168::-;23384:7;23450:1;23446;23442:6;23438:14;23435:1;23432:21;23427:1;23420:9;23413:17;23409:45;23406:71;;;23457:18;;:::i;:::-;-1:-1:-1;23497:9:1;;23344:168::o;23517:125::-;23557:4;23585:1;23582;23579:8;23576:34;;;23590:18;;:::i;:::-;-1:-1:-1;23627:9:1;;23517:125::o;23647:258::-;23719:1;23729:113;23743:6;23740:1;23737:13;23729:113;;;23819:11;;;23813:18;23800:11;;;23793:39;23765:2;23758:10;23729:113;;;23860:6;23857:1;23854:13;23851:48;;;-1:-1:-1;;23895:1:1;23877:16;;23870:27;23647:258::o;23910:380::-;23989:1;23985:12;;;;24032;;;24053:61;;24107:4;24099:6;24095:17;24085:27;;24053:61;24160:2;24152:6;24149:14;24129:18;24126:38;24123:161;;;24206:10;24201:3;24197:20;24194:1;24187:31;24241:4;24238:1;24231:15;24269:4;24266:1;24259:15;24123:161;;23910:380;;;:::o;24295:135::-;24334:3;-1:-1:-1;;24355:17:1;;24352:43;;;24375:18;;:::i;:::-;-1:-1:-1;24422:1:1;24411:13;;24295:135::o;24435:112::-;24467:1;24493;24483:35;;24498:18;;:::i;:::-;-1:-1:-1;24532:9:1;;24435:112::o;24552:127::-;24613:10;24608:3;24604:20;24601:1;24594:31;24644:4;24641:1;24634:15;24668:4;24665:1;24658:15;24684:127;24745:10;24740:3;24736:20;24733:1;24726:31;24776:4;24773:1;24766:15;24800:4;24797:1;24790:15;24816:127;24877:10;24872:3;24868:20;24865:1;24858:31;24908:4;24905:1;24898:15;24932:4;24929:1;24922:15;24948:127;25009:10;25004:3;25000:20;24997:1;24990:31;25040:4;25037:1;25030:15;25064:4;25061:1;25054:15;25080:131;-1:-1:-1;;;;;25155:31:1;;25145:42;;25135:70;;25201:1;25198;25191:12;25216:131;-1:-1:-1;;;;;;25290:32:1;;25280:43;;25270:71;;25337:1;25334;25327:12

Swarm Source

ipfs://50211b2cb3cd4ed3d7eed5db90188d7bd522632507a24a8ed381660ad34b27a4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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