ERC-721
Overview
Max Total Supply
176 BLOBX
Holders
43
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
10 BLOBXLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BLOBjeXv2
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-04 */ // File: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol // SPDX-License-Identifier: MIT // ________ ___ ________ ________ ___ _______ ___ ___ ________ ________ _______ _________ ___ ___ //|\ __ \|\ \ |\ __ \|\ __ \ |\ \|\ ___ \ |\ \ / /| |\ __ \|\ ___ \ |\ ___ \|\___ ___\\ \|\ \ //\ \ \|\ /\ \ \ \ \ \|\ \ \ \|\ /_ \ \ \ \ __/| \ \ \/ / / \ \ \|\ \ \ \\ \ \ \ \ __/\|___ \ \_\ \ \\\ \ // \ \ __ \ \ \ \ \ \\\ \ \ __ \ __ \ \ \ \ \_|/__ \ \ / / \ \ \\\ \ \ \\ \ \ \ \ \_|/__ \ \ \ \ \ __ \ // \ \ \|\ \ \ \____\ \ \\\ \ \ \|\ \|\ \\_\ \ \ \_|\ \ / \/ \ \ \\\ \ \ \\ \ \ \ \ \_|\ \ \ \ \ \ \ \ \ \ // \ \_______\ \_______\ \_______\ \_______\ \________\ \_______\/ /\ \ \ \_______\ \__\\ \__\ \ \_______\ \ \__\ \ \__\ \__\ // \|_______|\|_______|\|_______|\|_______|\|________|\|_______/__/ /\ __\ \|_______|\|__| \|__| \|_______| \|__| \|__|\|__| // |__|/ \|__| //BLOBJEX on ETHERUM v2 ENHANCED CONTRACT by TheUndeadInc & ZombieBits // OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } return computedHash; } } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: @openzeppelin/contracts/utils/Counters.sol // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: contracts/BLOBjeXv2.sol pragma solidity ^0.8.6; // ________ ___ ________ ________ ___ _______ ___ ___ ________ ________ _______ _________ ___ ___ //|\ __ \|\ \ |\ __ \|\ __ \ |\ \|\ ___ \ |\ \ / /| |\ __ \|\ ___ \ |\ ___ \|\___ ___\\ \|\ \ //\ \ \|\ /\ \ \ \ \ \|\ \ \ \|\ /_ \ \ \ \ __/| \ \ \/ / / \ \ \|\ \ \ \\ \ \ \ \ __/\|___ \ \_\ \ \\\ \ // \ \ __ \ \ \ \ \ \\\ \ \ __ \ __ \ \ \ \ \_|/__ \ \ / / \ \ \\\ \ \ \\ \ \ \ \ \_|/__ \ \ \ \ \ __ \ // \ \ \|\ \ \ \____\ \ \\\ \ \ \|\ \|\ \\_\ \ \ \_|\ \ / \/ \ \ \\\ \ \ \\ \ \ \ \ \_|\ \ \ \ \ \ \ \ \ \ // \ \_______\ \_______\ \_______\ \_______\ \________\ \_______\/ /\ \ \ \_______\ \__\\ \__\ \ \_______\ \ \__\ \ \__\ \__\ // \|_______|\|_______|\|_______|\|_______|\|________|\|_______/__/ /\ __\ \|_______|\|__| \|__| \|_______| \|__| \|__|\|__| // |__|/ \|__| //BLOBJEX on ETHERUM v2 ENHANCED CONTRACT by TheUndeadInc & ZombieBits library OpenSeaGasFreeListing { /** @notice Returns whether the operator is an OpenSea proxy for the owner, thus allowing it to list without the token owner paying gas. @dev ERC{721,1155}.isApprovedForAll should be overriden to also check if this function returns true. */ function isApprovedForAll(address owner, address operator) internal view returns (bool) { ProxyRegistry registry; assembly { switch chainid() case 1 { // mainnet registry := 0xa5409ec958c83c3f309868babaca7c86dcb077c1 } case 4 { // rinkeby registry := 0xf57b2c51ded3a29e6891aba85459d600256cf317 } } return address(registry) != address(0) && (address(registry.proxies(owner)) == operator); } } contract OwnableDelegateProxy {} contract ProxyRegistry { mapping(address => OwnableDelegateProxy) public proxies; } contract BLOBjeXv2 is ERC721, Ownable, ReentrancyGuard { using Counters for Counters.Counter; uint256 public MAX_TEAM_RESERVES = 10; //allows for 10 tokens to be minted for giveaways etc uint256 public constant MAX_TOKENS = 3333; uint256 public MAX_PRESALE_TOKENS_PER_ADDRESS = 1; uint256 public PRESALE_TOKEN_PRICE = 0.00 ether; uint256 public TOKEN_PRICE = 0.0033 ether; uint256 public MAX_MINTS_PER_TX = 10; bool public preSale = false; bool public publicSale = false; string private baseURI = ""; Counters.Counter private _nextTokenId; // whitelist merkle root bytes32 public merkleroot; mapping (address => uint) public presaleNumMinted; constructor( string memory _name, string memory _symbol, string memory _initBaseURI ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); } function presaleMint(uint256 quantity, bytes32[] calldata PresaleMerkleProof) external payable nonReentrant { require(preSale, "pre sale is not live"); require(totalSupply() + quantity <= MAX_TOKENS, "minting this many would exceed supply"); bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require(MerkleProof.verify(PresaleMerkleProof, merkleroot, leaf), "Invalid proof."); _checkPreMintRequirements(quantity); _minter(msg.sender, quantity); } function _checkPreMintRequirements(uint256 quantity) internal { require(quantity > 0 && quantity <= MAX_PRESALE_TOKENS_PER_ADDRESS, "invalid quantity: zero or greater than mint allowance"); require(msg.value == PRESALE_TOKEN_PRICE * quantity, "wrong amount of ether sent"); presaleNumMinted[msg.sender] = presaleNumMinted[msg.sender] + quantity; require(presaleNumMinted[msg.sender] <= MAX_PRESALE_TOKENS_PER_ADDRESS, "Cannot mint more than 1 per address in this phase"); } function mint(uint256 quantity) external payable nonReentrant { require(publicSale, "public sale is not live"); require(totalSupply() + quantity <= MAX_TOKENS, "invalid quantity: would exceed max supply"); _checkMintRequirements(quantity); _minter(msg.sender, quantity); } function _checkMintRequirements(uint256 quantity) internal { require(quantity > 0 && quantity <= MAX_MINTS_PER_TX, "invalid quantity: zero or greater than mint allowance"); require(msg.value == TOKEN_PRICE * quantity, "wrong amount of ether sent"); } function teamReservesMint(uint256 quantity) public onlyOwner { require(quantity <= MAX_TEAM_RESERVES, "Can't reserve more than set amount" ); MAX_TEAM_RESERVES -= quantity; require(totalSupply() + quantity <= MAX_TOKENS, "invalid quantity: would exceed max supply"); _minter(msg.sender, quantity); } function togglePublicSale() public onlyOwner { publicSale = !publicSale; } function togglePreSale() public onlyOwner { preSale = !preSale; } function totalSupply() public view returns (uint256) { return _nextTokenId.current(); } function _minter(address addr, uint256 quantity) internal { for (uint i = 0; i < quantity; i++) { uint mintIndex = _nextTokenId.current(); _safeMint(addr, mintIndex); _nextTokenId.increment(); } } function withdraw() external onlyOwner { uint256 balance = address(this).balance; Address.sendValue(payable(owner()), balance); } function _baseURI() internal view override returns (string memory) { return baseURI; } function setBaseURI(string memory uri) public onlyOwner { baseURI = uri; } function setMerkleRoot(bytes32 newMerkle) public onlyOwner { merkleroot = newMerkle; } function setMAX_MINTS_PER_TX(uint256 _MAX_MINTS_PER_TX) public onlyOwner() { MAX_MINTS_PER_TX = _MAX_MINTS_PER_TX; } function setMAX_PRESALE_TOKENS_PER_ADDRESS(uint256 _MAX_PRESALE_TOKENS_PER_ADDRESS) public onlyOwner() { MAX_PRESALE_TOKENS_PER_ADDRESS = _MAX_PRESALE_TOKENS_PER_ADDRESS; } function setPRESALE_TOKEN_PRICE(uint256 _PRESALE_TOKEN_PRICE) public onlyOwner() { PRESALE_TOKEN_PRICE = _PRESALE_TOKEN_PRICE; } function setTOKEN_PRICE(uint256 _TOKEN_PRICE) public onlyOwner() { TOKEN_PRICE = _TOKEN_PRICE; } function isApprovedForAll(address owner, address operator) public view override returns (bool) { return OpenSeaGasFreeListing.isApprovedForAll(owner, operator) || super.isApprovedForAll(owner, operator); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_MINTS_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PRESALE_TOKENS_PER_ADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TEAM_RESERVES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TOKENS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRESALE_TOKEN_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleroot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"PresaleMerkleProof","type":"bytes32[]"}],"name":"presaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleNumMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MAX_MINTS_PER_TX","type":"uint256"}],"name":"setMAX_MINTS_PER_TX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MAX_PRESALE_TOKENS_PER_ADDRESS","type":"uint256"}],"name":"setMAX_PRESALE_TOKENS_PER_ADDRESS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newMerkle","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_PRESALE_TOKEN_PRICE","type":"uint256"}],"name":"setPRESALE_TOKEN_PRICE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_TOKEN_PRICE","type":"uint256"}],"name":"setTOKEN_PRICE","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":"quantity","type":"uint256"}],"name":"teamReservesMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePreSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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"}]
Contract Creation Code
600a600881905560016009556000808255660bb9551fc24000600b55600c91909155600d805461ffff1916905560a0604081905260808290526200004791600e9190620001ab565b503480156200005557600080fd5b5060405162002ac438038062002ac4833981016040819052620000789162000308565b82518390839062000091906000906020850190620001ab565b508051620000a7906001906020840190620001ab565b505050620000c4620000be620000dd60201b60201c565b620000e1565b6001600755620000d48162000133565b505050620003ec565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6006546001600160a01b03163314620001925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620001a790600e906020840190620001ab565b5050565b828054620001b99062000399565b90600052602060002090601f016020900481019282620001dd576000855562000228565b82601f10620001f857805160ff191683800117855562000228565b8280016001018555821562000228579182015b82811115620002285782518255916020019190600101906200020b565b50620002369291506200023a565b5090565b5b808211156200023657600081556001016200023b565b600082601f8301126200026357600080fd5b81516001600160401b0380821115620002805762000280620003d6565b604051601f8301601f19908116603f01168101908282118183101715620002ab57620002ab620003d6565b81604052838152602092508683858801011115620002c857600080fd5b600091505b83821015620002ec5785820183015181830184015290820190620002cd565b83821115620002fe5760008385830101525b9695505050505050565b6000806000606084860312156200031e57600080fd5b83516001600160401b03808211156200033657600080fd5b620003448783880162000251565b945060208601519150808211156200035b57600080fd5b620003698783880162000251565b935060408601519150808211156200038057600080fd5b506200038f8682870162000251565b9150509250925092565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6126c880620003fc6000396000f3fe6080604052600436106102305760003560e01c806382e42f1e1161012e578063c6a91b42116100ab578063e3e1e8ef1161006f578063e3e1e8ef1461062d578063e78213c014610640578063e985e9c514610660578063f2fde38b14610680578063f47c84c5146106a057600080fd5b8063c6a91b42146105b7578063c87b56dd146105cd578063ca3cb522146105ed578063d2d8cb6714610602578063e222c7f91461061857600080fd5b8063a22cb465116100f2578063a22cb46514610535578063b46a676814610555578063b6c7ecf51461056b578063b88d4fde14610581578063c1c4f5cb146105a157600080fd5b806382e42f1e146104ac5780638da5cb5b146104c257806395d89b41146104e0578063a0712d68146104f5578063a1e79f8a1461050857600080fd5b806342842e0e116101bc57806364be52871161018057806364be5287146104175780636ce743861461043757806370a0823114610457578063715018a6146104775780637cb647591461048c57600080fd5b806342842e0e1461037d5780634f4342e21461039d57806355f804b3146103bd5780635a7adf7f146103dd5780636352211e146103f757600080fd5b8063128ddfa311610203578063128ddfa3146102e657806318160ddd1461030657806323b872dd1461032957806333bc1c5c146103495780633ccfd60b1461036857600080fd5b806301ffc9a71461023557806306fdde031461026a578063081812fc1461028c578063095ea7b3146102c4575b600080fd5b34801561024157600080fd5b506102556102503660046121d7565b6106b6565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061027f610708565b604051610261919061238e565b34801561029857600080fd5b506102ac6102a73660046121be565b61079a565b6040516001600160a01b039091168152602001610261565b3480156102d057600080fd5b506102e46102df366004612192565b610834565b005b3480156102f257600080fd5b506102e46103013660046121be565b61094a565b34801561031257600080fd5b5061031b610979565b604051908152602001610261565b34801561033557600080fd5b506102e461034436600461209e565b610989565b34801561035557600080fd5b50600d5461025590610100900460ff1681565b34801561037457600080fd5b506102e46109ba565b34801561038957600080fd5b506102e461039836600461209e565b610a03565b3480156103a957600080fd5b506102e46103b83660046121be565b610a1e565b3480156103c957600080fd5b506102e46103d836600461222e565b610a4d565b3480156103e957600080fd5b50600d546102559060ff1681565b34801561040357600080fd5b506102ac6104123660046121be565b610a8e565b34801561042357600080fd5b506102e46104323660046121be565b610b05565b34801561044357600080fd5b506102e46104523660046121be565b610b34565b34801561046357600080fd5b5061031b610472366004612048565b610b63565b34801561048357600080fd5b506102e4610bea565b34801561049857600080fd5b506102e46104a73660046121be565b610c20565b3480156104b857600080fd5b5061031b60095481565b3480156104ce57600080fd5b506006546001600160a01b03166102ac565b3480156104ec57600080fd5b5061027f610c4f565b6102e46105033660046121be565b610c5e565b34801561051457600080fd5b5061031b610523366004612048565b60116020526000908152604090205481565b34801561054157600080fd5b506102e461055036600461215f565b610d5c565b34801561056157600080fd5b5061031b600a5481565b34801561057757600080fd5b5061031b60105481565b34801561058d57600080fd5b506102e461059c3660046120df565b610d67565b3480156105ad57600080fd5b5061031b60085481565b3480156105c357600080fd5b5061031b600c5481565b3480156105d957600080fd5b5061027f6105e83660046121be565b610d9f565b3480156105f957600080fd5b506102e4610e7a565b34801561060e57600080fd5b5061031b600b5481565b34801561062457600080fd5b506102e4610eb8565b6102e461063b366004612277565b610eff565b34801561064c57600080fd5b506102e461065b3660046121be565b6110e7565b34801561066c57600080fd5b5061025561067b366004612065565b6111c4565b34801561068c57600080fd5b506102e461069b366004612048565b611204565b3480156106ac57600080fd5b5061031b610d0581565b60006001600160e01b031982166380ac58cd60e01b14806106e757506001600160e01b03198216635b5e139f60e01b145b8061070257506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060008054610717906125a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610743906125a5565b80156107905780601f1061076557610100808354040283529160200191610790565b820191906000526020600020905b81548152906001019060200180831161077357829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108185760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061083f82610a8e565b9050806001600160a01b0316836001600160a01b031614156108ad5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161080f565b336001600160a01b03821614806108c957506108c981336111c4565b61093b5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161080f565b610945838361129c565b505050565b6006546001600160a01b031633146109745760405162461bcd60e51b815260040161080f9061243c565b600955565b6000610984600f5490565b905090565b610993338261130a565b6109af5760405162461bcd60e51b815260040161080f90612471565b6109458383836113e1565b6006546001600160a01b031633146109e45760405162461bcd60e51b815260040161080f9061243c565b47610a006109fa6006546001600160a01b031690565b82611581565b50565b61094583838360405180602001604052806000815250610d67565b6006546001600160a01b03163314610a485760405162461bcd60e51b815260040161080f9061243c565b600c55565b6006546001600160a01b03163314610a775760405162461bcd60e51b815260040161080f9061243c565b8051610a8a90600e906020840190611f39565b5050565b6000818152600260205260408120546001600160a01b0316806107025760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161080f565b6006546001600160a01b03163314610b2f5760405162461bcd60e51b815260040161080f9061243c565b600b55565b6006546001600160a01b03163314610b5e5760405162461bcd60e51b815260040161080f9061243c565b600a55565b60006001600160a01b038216610bce5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161080f565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610c145760405162461bcd60e51b815260040161080f9061243c565b610c1e600061169a565b565b6006546001600160a01b03163314610c4a5760405162461bcd60e51b815260040161080f9061243c565b601055565b606060018054610717906125a5565b60026007541415610cb15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161080f565b6002600755600d54610100900460ff16610d0d5760405162461bcd60e51b815260206004820152601760248201527f7075626c69632073616c65206973206e6f74206c697665000000000000000000604482015260640161080f565b610d0581610d19610979565b610d239190612517565b1115610d415760405162461bcd60e51b815260040161080f906123f3565b610d4a816116ec565b610d543382611776565b506001600755565b610a8a3383836117b9565b610d71338361130a565b610d8d5760405162461bcd60e51b815260040161080f90612471565b610d9984848484611888565b50505050565b6000818152600260205260409020546060906001600160a01b0316610e1e5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161080f565b6000610e286118bb565b90506000815111610e485760405180602001604052806000815250610e73565b80610e52846118ca565b604051602001610e63929190612322565b6040516020818303038152906040525b9392505050565b6006546001600160a01b03163314610ea45760405162461bcd60e51b815260040161080f9061243c565b600d805460ff19811660ff90911615179055565b6006546001600160a01b03163314610ee25760405162461bcd60e51b815260040161080f9061243c565b600d805461ff001981166101009182900460ff1615909102179055565b60026007541415610f525760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161080f565b6002600755600d5460ff16610fa05760405162461bcd60e51b81526020600482015260146024820152737072652073616c65206973206e6f74206c69766560601b604482015260640161080f565b610d0583610fac610979565b610fb69190612517565b11156110125760405162461bcd60e51b815260206004820152602560248201527f6d696e74696e672074686973206d616e7920776f756c642065786365656420736044820152647570706c7960d81b606482015260840161080f565b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061108c8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060105491508490506119c8565b6110c95760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b210383937b7b31760911b604482015260640161080f565b6110d2846119de565b6110dc3385611776565b505060016007555050565b6006546001600160a01b031633146111115760405162461bcd60e51b815260040161080f9061243c565b60085481111561116e5760405162461bcd60e51b815260206004820152602260248201527f43616e27742072657365727665206d6f7265207468616e2073657420616d6f756044820152611b9d60f21b606482015260840161080f565b80600860008282546111809190612562565b90915550610d05905081611192610979565b61119c9190612517565b11156111ba5760405162461bcd60e51b815260040161080f906123f3565b610a003382611776565b60006111d08383611b00565b80610e7357506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff16610e73565b6006546001600160a01b0316331461122e5760405162461bcd60e51b815260040161080f9061243c565b6001600160a01b0381166112935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161080f565b610a008161169a565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112d182610a8e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166113835760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161080f565b600061138e83610a8e565b9050806001600160a01b0316846001600160a01b031614806113c95750836001600160a01b03166113be8461079a565b6001600160a01b0316145b806113d957506113d981856111c4565b949350505050565b826001600160a01b03166113f482610a8e565b6001600160a01b03161461145c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161080f565b6001600160a01b0382166114be5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161080f565b6114c960008261129c565b6001600160a01b03831660009081526003602052604081208054600192906114f2908490612562565b90915550506001600160a01b0382166000908152600360205260408120805460019290611520908490612517565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b804710156115d15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161080f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461161e576040519150601f19603f3d011682016040523d82523d6000602084013e611623565b606091505b50509050806109455760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161080f565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000811180156116fe5750600c548111155b61171a5760405162461bcd60e51b815260040161080f906124c2565b80600b546117289190612543565b3414610a005760405162461bcd60e51b815260206004820152601a60248201527f77726f6e6720616d6f756e74206f662065746865722073656e74000000000000604482015260640161080f565b60005b8181101561094557600061178c600f5490565b90506117988482611bf1565b6117a6600f80546001019055565b50806117b1816125e0565b915050611779565b816001600160a01b0316836001600160a01b0316141561181b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161080f565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6118938484846113e1565b61189f84848484611c0b565b610d995760405162461bcd60e51b815260040161080f906123a1565b6060600e8054610717906125a5565b6060816118ee5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156119185780611902816125e0565b91506119119050600a8361252f565b91506118f2565b60008167ffffffffffffffff81111561193357611933612651565b6040519080825280601f01601f19166020018201604052801561195d576020820181803683370190505b5090505b84156113d957611972600183612562565b915061197f600a866125fb565b61198a906030612517565b60f81b81838151811061199f5761199f61263b565b60200101906001600160f81b031916908160001a9053506119c1600a8661252f565b9450611961565b6000826119d58584611d18565b14949350505050565b6000811180156119f057506009548111155b611a0c5760405162461bcd60e51b815260040161080f906124c2565b80600a54611a1a9190612543565b3414611a685760405162461bcd60e51b815260206004820152601a60248201527f77726f6e6720616d6f756e74206f662065746865722073656e74000000000000604482015260640161080f565b33600090815260116020526040902054611a83908290612517565b3360009081526011602052604090208190556009541015610a005760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f74206d696e74206d6f7265207468616e203120706572206164647260448201527065737320696e207468697320706861736560781b606482015260840161080f565b6000804660018114611b195760048114611b3557611b4d565b73a5409ec958c83c3f309868babaca7c86dcb077c19150611b4d565b73f57b2c51ded3a29e6891aba85459d600256cf31791505b506001600160a01b038116158015906113d9575060405163c455279160e01b81526001600160a01b038581166004830152808516919083169063c45527919060240160206040518083038186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf9190612211565b6001600160a01b031614949350505050565b610a8a828260405180602001604052806000815250611dc4565b60006001600160a01b0384163b15611d0d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611c4f903390899088908890600401612351565b602060405180830381600087803b158015611c6957600080fd5b505af1925050508015611c99575060408051601f3d908101601f19168201909252611c96918101906121f4565b60015b611cf3573d808015611cc7576040519150601f19603f3d011682016040523d82523d6000602084013e611ccc565b606091505b508051611ceb5760405162461bcd60e51b815260040161080f906123a1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113d9565b506001949350505050565b600081815b8451811015611dbc576000858281518110611d3a57611d3a61263b565b60200260200101519050808311611d7c576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250611da9565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080611db4816125e0565b915050611d1d565b509392505050565b611dce8383611df7565b611ddb6000848484611c0b565b6109455760405162461bcd60e51b815260040161080f906123a1565b6001600160a01b038216611e4d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161080f565b6000818152600260205260409020546001600160a01b031615611eb25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080f565b6001600160a01b0382166000908152600360205260408120805460019290611edb908490612517565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611f45906125a5565b90600052602060002090601f016020900481019282611f675760008555611fad565b82601f10611f8057805160ff1916838001178555611fad565b82800160010185558215611fad579182015b82811115611fad578251825591602001919060010190611f92565b50611fb9929150611fbd565b5090565b5b80821115611fb95760008155600101611fbe565b600067ffffffffffffffff80841115611fed57611fed612651565b604051601f8501601f19908116603f0116810190828211818310171561201557612015612651565b8160405280935085815286868601111561202e57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561205a57600080fd5b8135610e7381612667565b6000806040838503121561207857600080fd5b823561208381612667565b9150602083013561209381612667565b809150509250929050565b6000806000606084860312156120b357600080fd5b83356120be81612667565b925060208401356120ce81612667565b929592945050506040919091013590565b600080600080608085870312156120f557600080fd5b843561210081612667565b9350602085013561211081612667565b925060408501359150606085013567ffffffffffffffff81111561213357600080fd5b8501601f8101871361214457600080fd5b61215387823560208401611fd2565b91505092959194509250565b6000806040838503121561217257600080fd5b823561217d81612667565b91506020830135801515811461209357600080fd5b600080604083850312156121a557600080fd5b82356121b081612667565b946020939093013593505050565b6000602082840312156121d057600080fd5b5035919050565b6000602082840312156121e957600080fd5b8135610e738161267c565b60006020828403121561220657600080fd5b8151610e738161267c565b60006020828403121561222357600080fd5b8151610e7381612667565b60006020828403121561224057600080fd5b813567ffffffffffffffff81111561225757600080fd5b8201601f8101841361226857600080fd5b6113d984823560208401611fd2565b60008060006040848603121561228c57600080fd5b83359250602084013567ffffffffffffffff808211156122ab57600080fd5b818601915086601f8301126122bf57600080fd5b8135818111156122ce57600080fd5b8760208260051b85010111156122e357600080fd5b6020830194508093505050509250925092565b6000815180845261230e816020860160208601612579565b601f01601f19169290920160200192915050565b60008351612334818460208801612579565b835190830190612348818360208801612579565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612384908301846122f6565b9695505050505050565b602081526000610e7360208301846122f6565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526029908201527f696e76616c6964207175616e746974793a20776f756c6420657863656564206d604082015268617820737570706c7960b81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526035908201527f696e76616c6964207175616e746974793a207a65726f206f722067726561746560408201527472207468616e206d696e7420616c6c6f77616e636560581b606082015260800190565b6000821982111561252a5761252a61260f565b500190565b60008261253e5761253e612625565b500490565b600081600019048311821515161561255d5761255d61260f565b500290565b6000828210156125745761257461260f565b500390565b60005b8381101561259457818101518382015260200161257c565b83811115610d995750506000910152565b600181811c908216806125b957607f821691505b602082108114156125da57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125f4576125f461260f565b5060010190565b60008261260a5761260a612625565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a0057600080fd5b6001600160e01b031981168114610a0057600080fdfea2646970667358221220d662ab4e6717285d886ea979450cb4d3d9eb6c946a0584cadfadc1134e6d193764736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000009424c4f426a6558763200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005424c4f42580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d503347716d424835595038734c3532644c4773354170636f64674a7542514e464b746d365968754e757133322f00000000000000000000
Deployed Bytecode
0x6080604052600436106102305760003560e01c806382e42f1e1161012e578063c6a91b42116100ab578063e3e1e8ef1161006f578063e3e1e8ef1461062d578063e78213c014610640578063e985e9c514610660578063f2fde38b14610680578063f47c84c5146106a057600080fd5b8063c6a91b42146105b7578063c87b56dd146105cd578063ca3cb522146105ed578063d2d8cb6714610602578063e222c7f91461061857600080fd5b8063a22cb465116100f2578063a22cb46514610535578063b46a676814610555578063b6c7ecf51461056b578063b88d4fde14610581578063c1c4f5cb146105a157600080fd5b806382e42f1e146104ac5780638da5cb5b146104c257806395d89b41146104e0578063a0712d68146104f5578063a1e79f8a1461050857600080fd5b806342842e0e116101bc57806364be52871161018057806364be5287146104175780636ce743861461043757806370a0823114610457578063715018a6146104775780637cb647591461048c57600080fd5b806342842e0e1461037d5780634f4342e21461039d57806355f804b3146103bd5780635a7adf7f146103dd5780636352211e146103f757600080fd5b8063128ddfa311610203578063128ddfa3146102e657806318160ddd1461030657806323b872dd1461032957806333bc1c5c146103495780633ccfd60b1461036857600080fd5b806301ffc9a71461023557806306fdde031461026a578063081812fc1461028c578063095ea7b3146102c4575b600080fd5b34801561024157600080fd5b506102556102503660046121d7565b6106b6565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061027f610708565b604051610261919061238e565b34801561029857600080fd5b506102ac6102a73660046121be565b61079a565b6040516001600160a01b039091168152602001610261565b3480156102d057600080fd5b506102e46102df366004612192565b610834565b005b3480156102f257600080fd5b506102e46103013660046121be565b61094a565b34801561031257600080fd5b5061031b610979565b604051908152602001610261565b34801561033557600080fd5b506102e461034436600461209e565b610989565b34801561035557600080fd5b50600d5461025590610100900460ff1681565b34801561037457600080fd5b506102e46109ba565b34801561038957600080fd5b506102e461039836600461209e565b610a03565b3480156103a957600080fd5b506102e46103b83660046121be565b610a1e565b3480156103c957600080fd5b506102e46103d836600461222e565b610a4d565b3480156103e957600080fd5b50600d546102559060ff1681565b34801561040357600080fd5b506102ac6104123660046121be565b610a8e565b34801561042357600080fd5b506102e46104323660046121be565b610b05565b34801561044357600080fd5b506102e46104523660046121be565b610b34565b34801561046357600080fd5b5061031b610472366004612048565b610b63565b34801561048357600080fd5b506102e4610bea565b34801561049857600080fd5b506102e46104a73660046121be565b610c20565b3480156104b857600080fd5b5061031b60095481565b3480156104ce57600080fd5b506006546001600160a01b03166102ac565b3480156104ec57600080fd5b5061027f610c4f565b6102e46105033660046121be565b610c5e565b34801561051457600080fd5b5061031b610523366004612048565b60116020526000908152604090205481565b34801561054157600080fd5b506102e461055036600461215f565b610d5c565b34801561056157600080fd5b5061031b600a5481565b34801561057757600080fd5b5061031b60105481565b34801561058d57600080fd5b506102e461059c3660046120df565b610d67565b3480156105ad57600080fd5b5061031b60085481565b3480156105c357600080fd5b5061031b600c5481565b3480156105d957600080fd5b5061027f6105e83660046121be565b610d9f565b3480156105f957600080fd5b506102e4610e7a565b34801561060e57600080fd5b5061031b600b5481565b34801561062457600080fd5b506102e4610eb8565b6102e461063b366004612277565b610eff565b34801561064c57600080fd5b506102e461065b3660046121be565b6110e7565b34801561066c57600080fd5b5061025561067b366004612065565b6111c4565b34801561068c57600080fd5b506102e461069b366004612048565b611204565b3480156106ac57600080fd5b5061031b610d0581565b60006001600160e01b031982166380ac58cd60e01b14806106e757506001600160e01b03198216635b5e139f60e01b145b8061070257506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060008054610717906125a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610743906125a5565b80156107905780601f1061076557610100808354040283529160200191610790565b820191906000526020600020905b81548152906001019060200180831161077357829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108185760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061083f82610a8e565b9050806001600160a01b0316836001600160a01b031614156108ad5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161080f565b336001600160a01b03821614806108c957506108c981336111c4565b61093b5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161080f565b610945838361129c565b505050565b6006546001600160a01b031633146109745760405162461bcd60e51b815260040161080f9061243c565b600955565b6000610984600f5490565b905090565b610993338261130a565b6109af5760405162461bcd60e51b815260040161080f90612471565b6109458383836113e1565b6006546001600160a01b031633146109e45760405162461bcd60e51b815260040161080f9061243c565b47610a006109fa6006546001600160a01b031690565b82611581565b50565b61094583838360405180602001604052806000815250610d67565b6006546001600160a01b03163314610a485760405162461bcd60e51b815260040161080f9061243c565b600c55565b6006546001600160a01b03163314610a775760405162461bcd60e51b815260040161080f9061243c565b8051610a8a90600e906020840190611f39565b5050565b6000818152600260205260408120546001600160a01b0316806107025760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161080f565b6006546001600160a01b03163314610b2f5760405162461bcd60e51b815260040161080f9061243c565b600b55565b6006546001600160a01b03163314610b5e5760405162461bcd60e51b815260040161080f9061243c565b600a55565b60006001600160a01b038216610bce5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161080f565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610c145760405162461bcd60e51b815260040161080f9061243c565b610c1e600061169a565b565b6006546001600160a01b03163314610c4a5760405162461bcd60e51b815260040161080f9061243c565b601055565b606060018054610717906125a5565b60026007541415610cb15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161080f565b6002600755600d54610100900460ff16610d0d5760405162461bcd60e51b815260206004820152601760248201527f7075626c69632073616c65206973206e6f74206c697665000000000000000000604482015260640161080f565b610d0581610d19610979565b610d239190612517565b1115610d415760405162461bcd60e51b815260040161080f906123f3565b610d4a816116ec565b610d543382611776565b506001600755565b610a8a3383836117b9565b610d71338361130a565b610d8d5760405162461bcd60e51b815260040161080f90612471565b610d9984848484611888565b50505050565b6000818152600260205260409020546060906001600160a01b0316610e1e5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161080f565b6000610e286118bb565b90506000815111610e485760405180602001604052806000815250610e73565b80610e52846118ca565b604051602001610e63929190612322565b6040516020818303038152906040525b9392505050565b6006546001600160a01b03163314610ea45760405162461bcd60e51b815260040161080f9061243c565b600d805460ff19811660ff90911615179055565b6006546001600160a01b03163314610ee25760405162461bcd60e51b815260040161080f9061243c565b600d805461ff001981166101009182900460ff1615909102179055565b60026007541415610f525760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161080f565b6002600755600d5460ff16610fa05760405162461bcd60e51b81526020600482015260146024820152737072652073616c65206973206e6f74206c69766560601b604482015260640161080f565b610d0583610fac610979565b610fb69190612517565b11156110125760405162461bcd60e51b815260206004820152602560248201527f6d696e74696e672074686973206d616e7920776f756c642065786365656420736044820152647570706c7960d81b606482015260840161080f565b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061108c8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060105491508490506119c8565b6110c95760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b210383937b7b31760911b604482015260640161080f565b6110d2846119de565b6110dc3385611776565b505060016007555050565b6006546001600160a01b031633146111115760405162461bcd60e51b815260040161080f9061243c565b60085481111561116e5760405162461bcd60e51b815260206004820152602260248201527f43616e27742072657365727665206d6f7265207468616e2073657420616d6f756044820152611b9d60f21b606482015260840161080f565b80600860008282546111809190612562565b90915550610d05905081611192610979565b61119c9190612517565b11156111ba5760405162461bcd60e51b815260040161080f906123f3565b610a003382611776565b60006111d08383611b00565b80610e7357506001600160a01b0380841660009081526005602090815260408083209386168352929052205460ff16610e73565b6006546001600160a01b0316331461122e5760405162461bcd60e51b815260040161080f9061243c565b6001600160a01b0381166112935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161080f565b610a008161169a565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112d182610a8e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166113835760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161080f565b600061138e83610a8e565b9050806001600160a01b0316846001600160a01b031614806113c95750836001600160a01b03166113be8461079a565b6001600160a01b0316145b806113d957506113d981856111c4565b949350505050565b826001600160a01b03166113f482610a8e565b6001600160a01b03161461145c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161080f565b6001600160a01b0382166114be5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161080f565b6114c960008261129c565b6001600160a01b03831660009081526003602052604081208054600192906114f2908490612562565b90915550506001600160a01b0382166000908152600360205260408120805460019290611520908490612517565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b804710156115d15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161080f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461161e576040519150601f19603f3d011682016040523d82523d6000602084013e611623565b606091505b50509050806109455760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161080f565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000811180156116fe5750600c548111155b61171a5760405162461bcd60e51b815260040161080f906124c2565b80600b546117289190612543565b3414610a005760405162461bcd60e51b815260206004820152601a60248201527f77726f6e6720616d6f756e74206f662065746865722073656e74000000000000604482015260640161080f565b60005b8181101561094557600061178c600f5490565b90506117988482611bf1565b6117a6600f80546001019055565b50806117b1816125e0565b915050611779565b816001600160a01b0316836001600160a01b0316141561181b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161080f565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6118938484846113e1565b61189f84848484611c0b565b610d995760405162461bcd60e51b815260040161080f906123a1565b6060600e8054610717906125a5565b6060816118ee5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156119185780611902816125e0565b91506119119050600a8361252f565b91506118f2565b60008167ffffffffffffffff81111561193357611933612651565b6040519080825280601f01601f19166020018201604052801561195d576020820181803683370190505b5090505b84156113d957611972600183612562565b915061197f600a866125fb565b61198a906030612517565b60f81b81838151811061199f5761199f61263b565b60200101906001600160f81b031916908160001a9053506119c1600a8661252f565b9450611961565b6000826119d58584611d18565b14949350505050565b6000811180156119f057506009548111155b611a0c5760405162461bcd60e51b815260040161080f906124c2565b80600a54611a1a9190612543565b3414611a685760405162461bcd60e51b815260206004820152601a60248201527f77726f6e6720616d6f756e74206f662065746865722073656e74000000000000604482015260640161080f565b33600090815260116020526040902054611a83908290612517565b3360009081526011602052604090208190556009541015610a005760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f74206d696e74206d6f7265207468616e203120706572206164647260448201527065737320696e207468697320706861736560781b606482015260840161080f565b6000804660018114611b195760048114611b3557611b4d565b73a5409ec958c83c3f309868babaca7c86dcb077c19150611b4d565b73f57b2c51ded3a29e6891aba85459d600256cf31791505b506001600160a01b038116158015906113d9575060405163c455279160e01b81526001600160a01b038581166004830152808516919083169063c45527919060240160206040518083038186803b158015611ba757600080fd5b505afa158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf9190612211565b6001600160a01b031614949350505050565b610a8a828260405180602001604052806000815250611dc4565b60006001600160a01b0384163b15611d0d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611c4f903390899088908890600401612351565b602060405180830381600087803b158015611c6957600080fd5b505af1925050508015611c99575060408051601f3d908101601f19168201909252611c96918101906121f4565b60015b611cf3573d808015611cc7576040519150601f19603f3d011682016040523d82523d6000602084013e611ccc565b606091505b508051611ceb5760405162461bcd60e51b815260040161080f906123a1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113d9565b506001949350505050565b600081815b8451811015611dbc576000858281518110611d3a57611d3a61263b565b60200260200101519050808311611d7c576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250611da9565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080611db4816125e0565b915050611d1d565b509392505050565b611dce8383611df7565b611ddb6000848484611c0b565b6109455760405162461bcd60e51b815260040161080f906123a1565b6001600160a01b038216611e4d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161080f565b6000818152600260205260409020546001600160a01b031615611eb25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080f565b6001600160a01b0382166000908152600360205260408120805460019290611edb908490612517565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611f45906125a5565b90600052602060002090601f016020900481019282611f675760008555611fad565b82601f10611f8057805160ff1916838001178555611fad565b82800160010185558215611fad579182015b82811115611fad578251825591602001919060010190611f92565b50611fb9929150611fbd565b5090565b5b80821115611fb95760008155600101611fbe565b600067ffffffffffffffff80841115611fed57611fed612651565b604051601f8501601f19908116603f0116810190828211818310171561201557612015612651565b8160405280935085815286868601111561202e57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561205a57600080fd5b8135610e7381612667565b6000806040838503121561207857600080fd5b823561208381612667565b9150602083013561209381612667565b809150509250929050565b6000806000606084860312156120b357600080fd5b83356120be81612667565b925060208401356120ce81612667565b929592945050506040919091013590565b600080600080608085870312156120f557600080fd5b843561210081612667565b9350602085013561211081612667565b925060408501359150606085013567ffffffffffffffff81111561213357600080fd5b8501601f8101871361214457600080fd5b61215387823560208401611fd2565b91505092959194509250565b6000806040838503121561217257600080fd5b823561217d81612667565b91506020830135801515811461209357600080fd5b600080604083850312156121a557600080fd5b82356121b081612667565b946020939093013593505050565b6000602082840312156121d057600080fd5b5035919050565b6000602082840312156121e957600080fd5b8135610e738161267c565b60006020828403121561220657600080fd5b8151610e738161267c565b60006020828403121561222357600080fd5b8151610e7381612667565b60006020828403121561224057600080fd5b813567ffffffffffffffff81111561225757600080fd5b8201601f8101841361226857600080fd5b6113d984823560208401611fd2565b60008060006040848603121561228c57600080fd5b83359250602084013567ffffffffffffffff808211156122ab57600080fd5b818601915086601f8301126122bf57600080fd5b8135818111156122ce57600080fd5b8760208260051b85010111156122e357600080fd5b6020830194508093505050509250925092565b6000815180845261230e816020860160208601612579565b601f01601f19169290920160200192915050565b60008351612334818460208801612579565b835190830190612348818360208801612579565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612384908301846122f6565b9695505050505050565b602081526000610e7360208301846122f6565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526029908201527f696e76616c6964207175616e746974793a20776f756c6420657863656564206d604082015268617820737570706c7960b81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526035908201527f696e76616c6964207175616e746974793a207a65726f206f722067726561746560408201527472207468616e206d696e7420616c6c6f77616e636560581b606082015260800190565b6000821982111561252a5761252a61260f565b500190565b60008261253e5761253e612625565b500490565b600081600019048311821515161561255d5761255d61260f565b500290565b6000828210156125745761257461260f565b500390565b60005b8381101561259457818101518382015260200161257c565b83811115610d995750506000910152565b600181811c908216806125b957607f821691505b602082108114156125da57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125f4576125f461260f565b5060010190565b60008261260a5761260a612625565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a0057600080fd5b6001600160e01b031981168114610a0057600080fdfea2646970667358221220d662ab4e6717285d886ea979450cb4d3d9eb6c946a0584cadfadc1134e6d193764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000009424c4f426a6558763200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005424c4f42580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d503347716d424835595038734c3532644c4773354170636f64674a7542514e464b746d365968754e757133322f00000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): BLOBjeXv2
Arg [1] : _symbol (string): BLOBX
Arg [2] : _initBaseURI (string): ipfs://QmP3GqmBH5YP8sL52dLGs5ApcodgJuBQNFKtm6YhuNuq32/
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 424c4f426a655876320000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 424c4f4258000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [8] : 697066733a2f2f516d503347716d424835595038734c3532644c477335417063
Arg [9] : 6f64674a7542514e464b746d365968754e757133322f00000000000000000000
Deployed Bytecode Sourcemap
46078:4736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31358:305;;;;;;;;;;-1:-1:-1;31358:305:0;;;;;:::i;:::-;;:::i;:::-;;;7897:14:1;;7890:22;7872:41;;7860:2;7845:18;31358:305:0;;;;;;;;32303:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;33862:221::-;;;;;;;;;;-1:-1:-1;33862:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7195:32:1;;;7177:51;;7165:2;7150:18;33862:221:0;7031:203:1;33385:411:0;;;;;;;;;;-1:-1:-1;33385:411:0;;;;;:::i;:::-;;:::i;:::-;;50140:182;;;;;;;;;;-1:-1:-1;50140:182:0;;;;;:::i;:::-;;:::i;49163:101::-;;;;;;;;;;;;;:::i;:::-;;;8070:25:1;;;8058:2;8043:18;49163:101:0;7924:177:1;34612:339:0;;;;;;;;;;-1:-1:-1;34612:339:0;;;;;:::i;:::-;;:::i;46572:30::-;;;;;;;;;;-1:-1:-1;46572:30:0;;;;;;;;;;;49538:152;;;;;;;;;;;;;:::i;35022:185::-;;;;;;;;;;-1:-1:-1;35022:185:0;;;;;:::i;:::-;;:::i;50006:126::-;;;;;;;;;;-1:-1:-1;50006:126:0;;;;;:::i;:::-;;:::i;49806:88::-;;;;;;;;;;-1:-1:-1;49806:88:0;;;;;:::i;:::-;;:::i;46538:27::-;;;;;;;;;;-1:-1:-1;46538:27:0;;;;;;;;31997:239;;;;;;;;;;-1:-1:-1;31997:239:0;;;;;:::i;:::-;;:::i;50476:106::-;;;;;;;;;;-1:-1:-1;50476:106:0;;;;;:::i;:::-;;:::i;50330:138::-;;;;;;;;;;-1:-1:-1;50330:138:0;;;;;:::i;:::-;;:::i;31727:208::-;;;;;;;;;;-1:-1:-1;31727:208:0;;;;;:::i;:::-;;:::i;12346:103::-;;;;;;;;;;;;;:::i;49902:96::-;;;;;;;;;;-1:-1:-1;49902:96:0;;;;;:::i;:::-;;:::i;46335:49::-;;;;;;;;;;;;;;;;11695:87;;;;;;;;;;-1:-1:-1;11768:6:0;;-1:-1:-1;;;;;11768:6:0;11695:87;;32472:104;;;;;;;;;;;;;:::i;48030:313::-;;;;;;:::i;:::-;;:::i;46759:49::-;;;;;;;;;;-1:-1:-1;46759:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;34155:155;;;;;;;;;;-1:-1:-1;34155:155:0;;;;;:::i;:::-;;:::i;46391:47::-;;;;;;;;;;;;;;;;46725:25;;;;;;;;;;;;;;;;35278:328;;;;;;;;;;-1:-1:-1;35278:328:0;;;;;:::i;:::-;;:::i;46184:37::-;;;;;;;;;;;;;;;;46493:36;;;;;;;;;;;;;;;;32647:334;;;;;;;;;;-1:-1:-1;32647:334:0;;;;;:::i;:::-;;:::i;49076:79::-;;;;;;;;;;;;;:::i;46445:41::-;;;;;;;;;;;;;;;;48980:88;;;;;;;;;;;;;:::i;46989:511::-;;;;;;:::i;:::-;;:::i;48632:340::-;;;;;;;;;;-1:-1:-1;48632:340:0;;;;;:::i;:::-;;:::i;50590:219::-;;;;;;;;;;-1:-1:-1;50590:219:0;;;;;:::i;:::-;;:::i;12604:201::-;;;;;;;;;;-1:-1:-1;12604:201:0;;;;;:::i;:::-;;:::i;46287:41::-;;;;;;;;;;;;46324:4;46287:41;;31358:305;31460:4;-1:-1:-1;;;;;;31497:40:0;;-1:-1:-1;;;31497:40:0;;:105;;-1:-1:-1;;;;;;;31554:48:0;;-1:-1:-1;;;31554:48:0;31497:105;:158;;;-1:-1:-1;;;;;;;;;;24236:40:0;;;31619:36;31477:178;31358:305;-1:-1:-1;;31358:305:0:o;32303:100::-;32357:13;32390:5;32383:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32303:100;:::o;33862:221::-;33938:7;37205:16;;;:7;:16;;;;;;-1:-1:-1;;;;;37205:16:0;33958:73;;;;-1:-1:-1;;;33958:73:0;;15211:2:1;33958:73:0;;;15193:21:1;15250:2;15230:18;;;15223:30;15289:34;15269:18;;;15262:62;-1:-1:-1;;;15340:18:1;;;15333:42;15392:19;;33958:73:0;;;;;;;;;-1:-1:-1;34051:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;34051:24:0;;33862:221::o;33385:411::-;33466:13;33482:23;33497:7;33482:14;:23::i;:::-;33466:39;;33530:5;-1:-1:-1;;;;;33524:11:0;:2;-1:-1:-1;;;;;33524:11:0;;;33516:57;;;;-1:-1:-1;;;33516:57:0;;17217:2:1;33516:57:0;;;17199:21:1;17256:2;17236:18;;;17229:30;17295:34;17275:18;;;17268:62;-1:-1:-1;;;17346:18:1;;;17339:31;17387:19;;33516:57:0;17015:397:1;33516:57:0;10499:10;-1:-1:-1;;;;;33608:21:0;;;;:62;;-1:-1:-1;33633:37:0;33650:5;10499:10;50590:219;:::i;33633:37::-;33586:168;;;;-1:-1:-1;;;33586:168:0;;12791:2:1;33586:168:0;;;12773:21:1;12830:2;12810:18;;;12803:30;12869:34;12849:18;;;12842:62;12940:26;12920:18;;;12913:54;12984:19;;33586:168:0;12589:420:1;33586:168:0;33767:21;33776:2;33780:7;33767:8;:21::i;:::-;33455:341;33385:411;;:::o;50140:182::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;50250:30:::1;:64:::0;50140:182::o;49163:101::-;49207:7;49234:22;:12;7115:14;;7023:114;49234:22;49227:29;;49163:101;:::o;34612:339::-;34807:41;10499:10;34840:7;34807:18;:41::i;:::-;34799:103;;;;-1:-1:-1;;;34799:103:0;;;;;;;:::i;:::-;34915:28;34925:4;34931:2;34935:7;34915:9;:28::i;49538:152::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;49606:21:::1;49638:44;49664:7;11768:6:::0;;-1:-1:-1;;;;;11768:6:0;;11695:87;49664:7:::1;49674;49638:17;:44::i;:::-;49577:113;49538:152::o:0;35022:185::-;35160:39;35177:4;35183:2;35187:7;35160:39;;;;;;;;;;;;:16;:39::i;50006:126::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;50088:16:::1;:36:::0;50006:126::o;49806:88::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;49873:13;;::::1;::::0;:7:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;;49806:88:::0;:::o;31997:239::-;32069:7;32105:16;;;:7;:16;;;;;;-1:-1:-1;;;;;32105:16:0;32140:19;32132:73;;;;-1:-1:-1;;;32132:73:0;;13627:2:1;32132:73:0;;;13609:21:1;13666:2;13646:18;;;13639:30;13705:34;13685:18;;;13678:62;-1:-1:-1;;;13756:18:1;;;13749:39;13805:19;;32132:73:0;13425:405:1;50476:106:0;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;50548:11:::1;:26:::0;50476:106::o;50330:138::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;50418:19:::1;:42:::0;50330:138::o;31727:208::-;31799:7;-1:-1:-1;;;;;31827:19:0;;31819:74;;;;-1:-1:-1;;;31819:74:0;;13216:2:1;31819:74:0;;;13198:21:1;13255:2;13235:18;;;13228:30;13294:34;13274:18;;;13267:62;-1:-1:-1;;;13345:18:1;;;13338:40;13395:19;;31819:74:0;13014:406:1;31819:74:0;-1:-1:-1;;;;;;31911:16:0;;;;;:9;:16;;;;;;;31727:208::o;12346:103::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;12411:30:::1;12438:1;12411:18;:30::i;:::-;12346:103::o:0;49902:96::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;49968:10:::1;:22:::0;49902:96::o;32472:104::-;32528:13;32561:7;32554:14;;;;;:::i;48030:313::-;5204:1;5802:7;;:19;;5794:63;;;;-1:-1:-1;;;5794:63:0;;18380:2:1;5794:63:0;;;18362:21:1;18419:2;18399:18;;;18392:30;18458:33;18438:18;;;18431:61;18509:18;;5794:63:0;18178:355:1;5794:63:0;5204:1;5935:7;:18;48111:10:::1;::::0;::::1;::::0;::::1;;;48103:46;;;::::0;-1:-1:-1;;;48103:46:0;;8532:2:1;48103:46:0::1;::::0;::::1;8514:21:1::0;8571:2;8551:18;;;8544:30;8610:25;8590:18;;;8583:53;8653:18;;48103:46:0::1;8330:347:1::0;48103:46:0::1;46324:4;48184:8;48168:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:38;;48160:92;;;;-1:-1:-1::0;;;48160:92:0::1;;;;;;;:::i;:::-;48263:32;48286:8;48263:22;:32::i;:::-;48306:29;48314:10;48326:8;48306:7;:29::i;:::-;-1:-1:-1::0;5160:1:0;6114:7;:22;48030:313::o;34155:155::-;34250:52;10499:10;34283:8;34293;34250:18;:52::i;35278:328::-;35453:41;10499:10;35486:7;35453:18;:41::i;:::-;35445:103;;;;-1:-1:-1;;;35445:103:0;;;;;;;:::i;:::-;35559:39;35573:4;35579:2;35583:7;35592:5;35559:13;:39::i;:::-;35278:328;;;;:::o;32647:334::-;37181:4;37205:16;;;:7;:16;;;;;;32720:13;;-1:-1:-1;;;;;37205:16:0;32746:76;;;;-1:-1:-1;;;32746:76:0;;16801:2:1;32746:76:0;;;16783:21:1;16840:2;16820:18;;;16813:30;16879:34;16859:18;;;16852:62;-1:-1:-1;;;16930:18:1;;;16923:45;16985:19;;32746:76:0;16599:411:1;32746:76:0;32835:21;32859:10;:8;:10::i;:::-;32835:34;;32911:1;32893:7;32887:21;:25;:86;;;;;;;;;;;;;;;;;32939:7;32948:18;:7;:16;:18::i;:::-;32922:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;32887:86;32880:93;32647:334;-1:-1:-1;;;32647:334:0:o;49076:79::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;49140:7:::1;::::0;;-1:-1:-1;;49129:18:0;::::1;49140:7;::::0;;::::1;49139:8;49129:18;::::0;;49076:79::o;48980:88::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;49050:10:::1;::::0;;-1:-1:-1;;49036:24:0;::::1;49050:10;::::0;;;::::1;;;49049:11;49036:24:::0;;::::1;;::::0;;48980:88::o;46989:511::-;5204:1;5802:7;;:19;;5794:63;;;;-1:-1:-1;;;5794:63:0;;18380:2:1;5794:63:0;;;18362:21:1;18419:2;18399:18;;;18392:30;18458:33;18438:18;;;18431:61;18509:18;;5794:63:0;18178:355:1;5794:63:0;5204:1;5935:7;:18;47116:7:::1;::::0;::::1;;47108:40;;;::::0;-1:-1:-1;;;47108:40:0;;11253:2:1;47108:40:0::1;::::0;::::1;11235:21:1::0;11292:2;11272:18;;;11265:30;-1:-1:-1;;;11311:18:1;;;11304:50;11371:18;;47108:40:0::1;11051:344:1::0;47108:40:0::1;46324:4;47183:8;47167:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:38;;47159:88;;;::::0;-1:-1:-1;;;47159:88:0;;15985:2:1;47159:88:0::1;::::0;::::1;15967:21:1::0;16024:2;16004:18;;;15997:30;16063:34;16043:18;;;16036:62;-1:-1:-1;;;16114:18:1;;;16107:35;16159:19;;47159:88:0::1;15783:401:1::0;47159:88:0::1;47283:28;::::0;-1:-1:-1;;47300:10:0::1;6009:2:1::0;6005:15;6001:53;47283:28:0::1;::::0;::::1;5989:66:1::0;47258:12:0::1;::::0;6071::1;;47283:28:0::1;;;;;;;;;;;;47273:39;;;;;;47258:54;;47331:56;47350:18;;47331:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;47370:10:0::1;::::0;;-1:-1:-1;47382:4:0;;-1:-1:-1;47331:18:0::1;:56::i;:::-;47323:83;;;::::0;-1:-1:-1;;;47323:83:0;;18037:2:1;47323:83:0::1;::::0;::::1;18019:21:1::0;18076:2;18056:18;;;18049:30;-1:-1:-1;;;18095:18:1;;;18088:44;18149:18;;47323:83:0::1;17835:338:1::0;47323:83:0::1;47417:35;47443:8;47417:25;:35::i;:::-;47463:29;47471:10;47483:8;47463:7;:29::i;:::-;-1:-1:-1::0;;5160:1:0;6114:7;:22;-1:-1:-1;;46989:511:0:o;48632:340::-;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;48724:17:::1;;48712:8;:29;;48704:77;;;::::0;-1:-1:-1;;;48704:77:0;;14808:2:1;48704:77:0::1;::::0;::::1;14790:21:1::0;14847:2;14827:18;;;14820:30;14886:34;14866:18;;;14859:62;-1:-1:-1;;;14937:18:1;;;14930:32;14979:19;;48704:77:0::1;14606:398:1::0;48704:77:0::1;48813:8;48792:17;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;46324:4:0::1;::::0;-1:-1:-1;48856:8:0;48840:13:::1;:11;:13::i;:::-;:24;;;;:::i;:::-;:38;;48832:92;;;;-1:-1:-1::0;;;48832:92:0::1;;;;;;;:::i;:::-;48935:29;48943:10;48955:8;48935:7;:29::i;50590:219::-:0;50679:4;50703:55;50742:5;50749:8;50703:38;:55::i;:::-;:98;;;-1:-1:-1;;;;;;34502:25:0;;;34478:4;34502:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;50762:39;34381:164;12604:201;11768:6;;-1:-1:-1;;;;;11768:6:0;10499:10;11915:23;11907:68;;;;-1:-1:-1;;;11907:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12693:22:0;::::1;12685:73;;;::::0;-1:-1:-1;;;12685:73:0;;9303:2:1;12685:73:0::1;::::0;::::1;9285:21:1::0;9342:2;9322:18;;;9315:30;9381:34;9361:18;;;9354:62;-1:-1:-1;;;9432:18:1;;;9425:36;9478:19;;12685:73:0::1;9101:402:1::0;12685:73:0::1;12769:28;12788:8;12769:18;:28::i;41098:174::-:0;41173:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;41173:29:0;-1:-1:-1;;;;;41173:29:0;;;;;;;;:24;;41227:23;41173:24;41227:14;:23::i;:::-;-1:-1:-1;;;;;41218:46:0;;;;;;;;;;;41098:174;;:::o;37410:348::-;37503:4;37205:16;;;:7;:16;;;;;;-1:-1:-1;;;;;37205:16:0;37520:73;;;;-1:-1:-1;;;37520:73:0;;11960:2:1;37520:73:0;;;11942:21:1;11999:2;11979:18;;;11972:30;12038:34;12018:18;;;12011:62;-1:-1:-1;;;12089:18:1;;;12082:42;12141:19;;37520:73:0;11758:408:1;37520:73:0;37604:13;37620:23;37635:7;37620:14;:23::i;:::-;37604:39;;37673:5;-1:-1:-1;;;;;37662:16:0;:7;-1:-1:-1;;;;;37662:16:0;;:51;;;;37706:7;-1:-1:-1;;;;;37682:31:0;:20;37694:7;37682:11;:20::i;:::-;-1:-1:-1;;;;;37682:31:0;;37662:51;:87;;;;37717:32;37734:5;37741:7;37717:16;:32::i;:::-;37654:96;37410:348;-1:-1:-1;;;;37410:348:0:o;40402:578::-;40561:4;-1:-1:-1;;;;;40534:31:0;:23;40549:7;40534:14;:23::i;:::-;-1:-1:-1;;;;;40534:31:0;;40526:85;;;;-1:-1:-1;;;40526:85:0;;16391:2:1;40526:85:0;;;16373:21:1;16430:2;16410:18;;;16403:30;16469:34;16449:18;;;16442:62;-1:-1:-1;;;16520:18:1;;;16513:39;16569:19;;40526:85:0;16189:405:1;40526:85:0;-1:-1:-1;;;;;40630:16:0;;40622:65;;;;-1:-1:-1;;;40622:65:0;;10067:2:1;40622:65:0;;;10049:21:1;10106:2;10086:18;;;10079:30;10145:34;10125:18;;;10118:62;-1:-1:-1;;;10196:18:1;;;10189:34;10240:19;;40622:65:0;9865:400:1;40622:65:0;40804:29;40821:1;40825:7;40804:8;:29::i;:::-;-1:-1:-1;;;;;40846:15:0;;;;;;:9;:15;;;;;:20;;40865:1;;40846:15;:20;;40865:1;;40846:20;:::i;:::-;;;;-1:-1:-1;;;;;;;40877:13:0;;;;;;:9;:13;;;;;:18;;40894:1;;40877:13;:18;;40894:1;;40877:18;:::i;:::-;;;;-1:-1:-1;;40906:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;40906:21:0;-1:-1:-1;;;;;40906:21:0;;;;;;;;;40945:27;;40906:16;;40945:27;;;;;;;40402:578;;;:::o;15305:317::-;15420:6;15395:21;:31;;15387:73;;;;-1:-1:-1;;;15387:73:0;;11602:2:1;15387:73:0;;;11584:21:1;11641:2;11621:18;;;11614:30;11680:31;11660:18;;;11653:59;11729:18;;15387:73:0;11400:353:1;15387:73:0;15474:12;15492:9;-1:-1:-1;;;;;15492:14:0;15514:6;15492:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15473:52;;;15544:7;15536:78;;;;-1:-1:-1;;;15536:78:0;;10826:2:1;15536:78:0;;;10808:21:1;10865:2;10845:18;;;10838:30;10904:34;10884:18;;;10877:62;10975:28;10955:18;;;10948:56;11021:19;;15536:78:0;10624:422:1;12965:191:0;13058:6;;;-1:-1:-1;;;;;13075:17:0;;;-1:-1:-1;;;;;;13075:17:0;;;;;;;13108:40;;13058:6;;;13075:17;13058:6;;13108:40;;13039:16;;13108:40;13028:128;12965:191;:::o;48351:273::-;48440:1;48429:8;:12;:44;;;;;48457:16;;48445:8;:28;;48429:44;48421:110;;;;-1:-1:-1;;;48421:110:0;;;;;;;:::i;:::-;48577:8;48563:11;;:22;;;;:::i;:::-;48550:9;:35;48542:74;;;;-1:-1:-1;;;48542:74:0;;18740:2:1;48542:74:0;;;18722:21:1;18779:2;18759:18;;;18752:30;18818:28;18798:18;;;18791:56;18864:18;;48542:74:0;18538:350:1;49272:258:0;49346:6;49341:182;49362:8;49358:1;:12;49341:182;;;49392:14;49409:22;:12;7115:14;;7023:114;49409:22;49392:39;;49446:26;49456:4;49462:9;49446;:26::i;:::-;49487:24;:12;7234:19;;7252:1;7234:19;;;7145:127;49487:24;-1:-1:-1;49372:3:0;;;;:::i;:::-;;;;49341:182;;41414:315;41569:8;-1:-1:-1;;;;;41560:17:0;:5;-1:-1:-1;;;;;41560:17:0;;;41552:55;;;;-1:-1:-1;;;41552:55:0;;10472:2:1;41552:55:0;;;10454:21:1;10511:2;10491:18;;;10484:30;10550:27;10530:18;;;10523:55;10595:18;;41552:55:0;10270:349:1;41552:55:0;-1:-1:-1;;;;;41618:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;41618:46:0;;;;;;;;;;41680:41;;7872::1;;;41680::0;;7845:18:1;41680:41:0;;;;;;;41414:315;;;:::o;36488:::-;36645:28;36655:4;36661:2;36665:7;36645:9;:28::i;:::-;36692:48;36715:4;36721:2;36725:7;36734:5;36692:22;:48::i;:::-;36684:111;;;;-1:-1:-1;;;36684:111:0;;;;;;;:::i;49698:100::-;49750:13;49783:7;49776:14;;;;;:::i;7981:723::-;8037:13;8258:10;8254:53;;-1:-1:-1;;8285:10:0;;;;;;;;;;;;-1:-1:-1;;;8285:10:0;;;;;7981:723::o;8254:53::-;8332:5;8317:12;8373:78;8380:9;;8373:78;;8406:8;;;;:::i;:::-;;-1:-1:-1;8429:10:0;;-1:-1:-1;8437:2:0;8429:10;;:::i;:::-;;;8373:78;;;8461:19;8493:6;8483:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8483:17:0;;8461:39;;8511:154;8518:10;;8511:154;;8545:11;8555:1;8545:11;;:::i;:::-;;-1:-1:-1;8614:10:0;8622:2;8614:5;:10;:::i;:::-;8601:24;;:2;:24;:::i;:::-;8588:39;;8571:6;8578;8571:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;8571:56:0;;;;;;;;-1:-1:-1;8642:11:0;8651:2;8642:11;;:::i;:::-;;;8511:154;;2132:190;2257:4;2310;2281:25;2294:5;2301:4;2281:12;:25::i;:::-;:33;;2132:190;-1:-1:-1;;;;2132:190:0:o;47508:514::-;47600:1;47589:8;:12;:58;;;;;47617:30;;47605:8;:42;;47589:58;47581:124;;;;-1:-1:-1;;;47581:124:0;;;;;;;:::i;:::-;47759:8;47737:19;;:30;;;;:::i;:::-;47724:9;:43;47716:82;;;;-1:-1:-1;;;47716:82:0;;18740:2:1;47716:82:0;;;18722:21:1;18779:2;18759:18;;;18752:30;18818:28;18798:18;;;18791:56;18864:18;;47716:82:0;18538:350:1;47716:82:0;47857:10;47840:28;;;;:16;:28;;;;;;:39;;47871:8;;47840:39;:::i;:::-;47826:10;47809:28;;;;:16;:28;;;;;:70;;;47930:30;;-1:-1:-1;47898:62:0;47890:124;;;;-1:-1:-1;;;47890:124:0;;12373:2:1;47890:124:0;;;12355:21:1;12412:2;12392:18;;;12385:30;12451:34;12431:18;;;12424:62;-1:-1:-1;;;12502:18:1;;;12495:47;12559:19;;47890:124:0;12171:413:1;45375:565:0;45457:4;45474:22;45538:9;45566:1;45561:123;;;;45703:1;45698:123;;;;45531:290;;45561:123;45627:42;45615:54;;45561:123;;45698;45764:42;45752:54;;45531:290;-1:-1:-1;;;;;;45851:31:0;;;;;;:81;;-1:-1:-1;45895:23:0;;-1:-1:-1;;;45895:23:0;;-1:-1:-1;;;;;7195:32:1;;;45895:23:0;;;7177:51:1;45887:44:0;;;;45895:16;;;;;;7150:18:1;;45895:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45887:44:0;;;45375:565;-1:-1:-1;;;;45375:565:0:o;38100:110::-;38176:26;38186:2;38190:7;38176:26;;;;;;;;;;;;:9;:26::i;42294:799::-;42449:4;-1:-1:-1;;;;;42470:13:0;;14306:20;14354:8;42466:620;;42506:72;;-1:-1:-1;;;42506:72:0;;-1:-1:-1;;;;;42506:36:0;;;;;:72;;10499:10;;42557:4;;42563:7;;42572:5;;42506:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42506:72:0;;;;;;;;-1:-1:-1;;42506:72:0;;;;;;;;;;;;:::i;:::-;;;42502:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42748:13:0;;42744:272;;42791:60;;-1:-1:-1;;;42791:60:0;;;;;;;:::i;42744:272::-;42966:6;42960:13;42951:6;42947:2;42943:15;42936:38;42502:529;-1:-1:-1;;;;;;42629:51:0;-1:-1:-1;;;42629:51:0;;-1:-1:-1;42622:58:0;;42466:620;-1:-1:-1;43070:4:0;42294:799;;;;;;:::o;2684:701::-;2767:7;2810:4;2767:7;2825:523;2849:5;:12;2845:1;:16;2825:523;;;2883:20;2906:5;2912:1;2906:8;;;;;;;;:::i;:::-;;;;;;;2883:31;;2949:12;2933;:28;2929:408;;3086:44;;;;;;6251:19:1;;;6286:12;;;6279:28;;;6323:12;;3086:44:0;;;;;;;;;;;;3076:55;;;;;;3061:70;;2929:408;;;3276:44;;;;;;6251:19:1;;;6286:12;;;6279:28;;;6323:12;;3276:44:0;;;;;;;;;;;;3266:55;;;;;;3251:70;;2929:408;-1:-1:-1;2863:3:0;;;;:::i;:::-;;;;2825:523;;;-1:-1:-1;3365:12:0;2684:701;-1:-1:-1;;;2684:701:0:o;38437:321::-;38567:18;38573:2;38577:7;38567:5;:18::i;:::-;38618:54;38649:1;38653:2;38657:7;38666:5;38618:22;:54::i;:::-;38596:154;;;;-1:-1:-1;;;38596:154:0;;;;;;;:::i;39094:382::-;-1:-1:-1;;;;;39174:16:0;;39166:61;;;;-1:-1:-1;;;39166:61:0;;14447:2:1;39166:61:0;;;14429:21:1;;;14466:18;;;14459:30;14525:34;14505:18;;;14498:62;14577:18;;39166:61:0;14245:356:1;39166:61:0;37181:4;37205:16;;;:7;:16;;;;;;-1:-1:-1;;;;;37205:16:0;:30;39238:58;;;;-1:-1:-1;;;39238:58:0;;9710:2:1;39238:58:0;;;9692:21:1;9749:2;9729:18;;;9722:30;9788;9768:18;;;9761:58;9836:18;;39238:58:0;9508:352:1;39238:58:0;-1:-1:-1;;;;;39367:13:0;;;;;;:9;:13;;;;;:18;;39384:1;;39367:13;:18;;39384:1;;39367:18;:::i;:::-;;;;-1:-1:-1;;39396:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;39396:21:0;-1:-1:-1;;;;;39396:21:0;;;;;;;;39435:33;;39396:16;;;39435:33;;39396:16;;39435:33;39094:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:247::-;709:6;762:2;750:9;741:7;737:23;733:32;730:52;;;778:1;775;768:12;730:52;817:9;804:23;836:31;861:5;836:31;:::i;902:388::-;970:6;978;1031:2;1019:9;1010:7;1006:23;1002:32;999:52;;;1047:1;1044;1037:12;999:52;1086:9;1073:23;1105:31;1130:5;1105:31;:::i;:::-;1155:5;-1:-1:-1;1212:2:1;1197:18;;1184:32;1225:33;1184:32;1225:33;:::i;:::-;1277:7;1267:17;;;902:388;;;;;:::o;1295:456::-;1372:6;1380;1388;1441:2;1429:9;1420:7;1416:23;1412:32;1409:52;;;1457:1;1454;1447:12;1409:52;1496:9;1483:23;1515:31;1540:5;1515:31;:::i;:::-;1565:5;-1:-1:-1;1622:2:1;1607:18;;1594:32;1635:33;1594:32;1635:33;:::i;:::-;1295:456;;1687:7;;-1:-1:-1;;;1741:2:1;1726:18;;;;1713:32;;1295:456::o;1756:794::-;1851:6;1859;1867;1875;1928:3;1916:9;1907:7;1903:23;1899:33;1896:53;;;1945:1;1942;1935:12;1896:53;1984:9;1971:23;2003:31;2028:5;2003:31;:::i;:::-;2053:5;-1:-1:-1;2110:2:1;2095:18;;2082:32;2123:33;2082:32;2123:33;:::i;:::-;2175:7;-1:-1:-1;2229:2:1;2214:18;;2201:32;;-1:-1:-1;2284:2:1;2269:18;;2256:32;2311:18;2300:30;;2297:50;;;2343:1;2340;2333:12;2297:50;2366:22;;2419:4;2411:13;;2407:27;-1:-1:-1;2397:55:1;;2448:1;2445;2438:12;2397:55;2471:73;2536:7;2531:2;2518:16;2513:2;2509;2505:11;2471:73;:::i;:::-;2461:83;;;1756:794;;;;;;;:::o;2555:416::-;2620:6;2628;2681:2;2669:9;2660:7;2656:23;2652:32;2649:52;;;2697:1;2694;2687:12;2649:52;2736:9;2723:23;2755:31;2780:5;2755:31;:::i;:::-;2805:5;-1:-1:-1;2862:2:1;2847:18;;2834:32;2904:15;;2897:23;2885:36;;2875:64;;2935:1;2932;2925:12;2976:315;3044:6;3052;3105:2;3093:9;3084:7;3080:23;3076:32;3073:52;;;3121:1;3118;3111:12;3073:52;3160:9;3147:23;3179:31;3204:5;3179:31;:::i;:::-;3229:5;3281:2;3266:18;;;;3253:32;;-1:-1:-1;;;2976:315:1:o;3296:180::-;3355:6;3408:2;3396:9;3387:7;3383:23;3379:32;3376:52;;;3424:1;3421;3414:12;3376:52;-1:-1:-1;3447:23:1;;3296:180;-1:-1:-1;3296:180:1:o;3481:245::-;3539:6;3592:2;3580:9;3571:7;3567:23;3563:32;3560:52;;;3608:1;3605;3598:12;3560:52;3647:9;3634:23;3666:30;3690:5;3666:30;:::i;3731:249::-;3800:6;3853:2;3841:9;3832:7;3828:23;3824:32;3821:52;;;3869:1;3866;3859:12;3821:52;3901:9;3895:16;3920:30;3944:5;3920:30;:::i;3985:280::-;4084:6;4137:2;4125:9;4116:7;4112:23;4108:32;4105:52;;;4153:1;4150;4143:12;4105:52;4185:9;4179:16;4204:31;4229:5;4204:31;:::i;4270:450::-;4339:6;4392:2;4380:9;4371:7;4367:23;4363:32;4360:52;;;4408:1;4405;4398:12;4360:52;4448:9;4435:23;4481:18;4473:6;4470:30;4467:50;;;4513:1;4510;4503:12;4467:50;4536:22;;4589:4;4581:13;;4577:27;-1:-1:-1;4567:55:1;;4618:1;4615;4608:12;4567:55;4641:73;4706:7;4701:2;4688:16;4683:2;4679;4675:11;4641:73;:::i;4910:683::-;5005:6;5013;5021;5074:2;5062:9;5053:7;5049:23;5045:32;5042:52;;;5090:1;5087;5080:12;5042:52;5126:9;5113:23;5103:33;;5187:2;5176:9;5172:18;5159:32;5210:18;5251:2;5243:6;5240:14;5237:34;;;5267:1;5264;5257:12;5237:34;5305:6;5294:9;5290:22;5280:32;;5350:7;5343:4;5339:2;5335:13;5331:27;5321:55;;5372:1;5369;5362:12;5321:55;5412:2;5399:16;5438:2;5430:6;5427:14;5424:34;;;5454:1;5451;5444:12;5424:34;5507:7;5502:2;5492:6;5489:1;5485:14;5481:2;5477:23;5473:32;5470:45;5467:65;;;5528:1;5525;5518:12;5467:65;5559:2;5555;5551:11;5541:21;;5581:6;5571:16;;;;;4910:683;;;;;:::o;5598:257::-;5639:3;5677:5;5671:12;5704:6;5699:3;5692:19;5720:63;5776:6;5769:4;5764:3;5760:14;5753:4;5746:5;5742:16;5720:63;:::i;:::-;5837:2;5816:15;-1:-1:-1;;5812:29:1;5803:39;;;;5844:4;5799:50;;5598:257;-1:-1:-1;;5598:257:1:o;6346:470::-;6525:3;6563:6;6557:13;6579:53;6625:6;6620:3;6613:4;6605:6;6601:17;6579:53;:::i;:::-;6695:13;;6654:16;;;;6717:57;6695:13;6654:16;6751:4;6739:17;;6717:57;:::i;:::-;6790:20;;6346:470;-1:-1:-1;;;;6346:470:1:o;7239:488::-;-1:-1:-1;;;;;7508:15:1;;;7490:34;;7560:15;;7555:2;7540:18;;7533:43;7607:2;7592:18;;7585:34;;;7655:3;7650:2;7635:18;;7628:31;;;7433:4;;7676:45;;7701:19;;7693:6;7676:45;:::i;:::-;7668:53;7239:488;-1:-1:-1;;;;;;7239:488:1:o;8106:219::-;8255:2;8244:9;8237:21;8218:4;8275:44;8315:2;8304:9;8300:18;8292:6;8275:44;:::i;8682:414::-;8884:2;8866:21;;;8923:2;8903:18;;;8896:30;8962:34;8957:2;8942:18;;8935:62;-1:-1:-1;;;9028:2:1;9013:18;;9006:48;9086:3;9071:19;;8682:414::o;13835:405::-;14037:2;14019:21;;;14076:2;14056:18;;;14049:30;14115:34;14110:2;14095:18;;14088:62;-1:-1:-1;;;14181:2:1;14166:18;;14159:39;14230:3;14215:19;;13835:405::o;15422:356::-;15624:2;15606:21;;;15643:18;;;15636:30;15702:34;15697:2;15682:18;;15675:62;15769:2;15754:18;;15422:356::o;17417:413::-;17619:2;17601:21;;;17658:2;17638:18;;;17631:30;17697:34;17692:2;17677:18;;17670:62;-1:-1:-1;;;17763:2:1;17748:18;;17741:47;17820:3;17805:19;;17417:413::o;18893:417::-;19095:2;19077:21;;;19134:2;19114:18;;;19107:30;19173:34;19168:2;19153:18;;19146:62;-1:-1:-1;;;19239:2:1;19224:18;;19217:51;19300:3;19285:19;;18893:417::o;19497:128::-;19537:3;19568:1;19564:6;19561:1;19558:13;19555:39;;;19574:18;;:::i;:::-;-1:-1:-1;19610:9:1;;19497:128::o;19630:120::-;19670:1;19696;19686:35;;19701:18;;:::i;:::-;-1:-1:-1;19735:9:1;;19630:120::o;19755:168::-;19795:7;19861:1;19857;19853:6;19849:14;19846:1;19843:21;19838:1;19831:9;19824:17;19820:45;19817:71;;;19868:18;;:::i;:::-;-1:-1:-1;19908:9:1;;19755:168::o;19928:125::-;19968:4;19996:1;19993;19990:8;19987:34;;;20001:18;;:::i;:::-;-1:-1:-1;20038:9:1;;19928:125::o;20058:258::-;20130:1;20140:113;20154:6;20151:1;20148:13;20140:113;;;20230:11;;;20224:18;20211:11;;;20204:39;20176:2;20169:10;20140:113;;;20271:6;20268:1;20265:13;20262:48;;;-1:-1:-1;;20306:1:1;20288:16;;20281:27;20058:258::o;20321:380::-;20400:1;20396:12;;;;20443;;;20464:61;;20518:4;20510:6;20506:17;20496:27;;20464:61;20571:2;20563:6;20560:14;20540:18;20537:38;20534:161;;;20617:10;20612:3;20608:20;20605:1;20598:31;20652:4;20649:1;20642:15;20680:4;20677:1;20670:15;20534:161;;20321:380;;;:::o;20706:135::-;20745:3;-1:-1:-1;;20766:17:1;;20763:43;;;20786:18;;:::i;:::-;-1:-1:-1;20833:1:1;20822:13;;20706:135::o;20846:112::-;20878:1;20904;20894:35;;20909:18;;:::i;:::-;-1:-1:-1;20943:9:1;;20846:112::o;20963:127::-;21024:10;21019:3;21015:20;21012:1;21005:31;21055:4;21052:1;21045:15;21079:4;21076:1;21069:15;21095:127;21156:10;21151:3;21147:20;21144:1;21137:31;21187:4;21184:1;21177:15;21211:4;21208:1;21201:15;21227:127;21288:10;21283:3;21279:20;21276:1;21269:31;21319:4;21316:1;21309:15;21343:4;21340:1;21333:15;21359:127;21420:10;21415:3;21411:20;21408:1;21401:31;21451:4;21448:1;21441:15;21475:4;21472:1;21465:15;21491:131;-1:-1:-1;;;;;21566:31:1;;21556:42;;21546:70;;21612:1;21609;21602:12;21627:131;-1:-1:-1;;;;;;21701:32:1;;21691:43;;21681:71;;21748:1;21745;21738:12
Swarm Source
ipfs://d662ab4e6717285d886ea979450cb4d3d9eb6c946a0584cadfadc1134e6d1937
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.