ETH Price: $3,641.32 (-1.70%)

Token

Web3 Name Service (WNS)
 

Overview

Max Total Supply

9,859 WNS

Holders

1,773

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 WNS
0x72ee87BfD529c3025F68F90E23Bf1f761f5445da
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Web3 Name Service (WNS) domains are username for the Web3 world. WNS names provide a way to map names/numbers to your Ethereum wallet address and act as the representation of your account.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WnsErc721

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity 0.8.7;

interface WnsRegistryInterface {
    function getWnsAddress(string memory _label) external view returns (address);
    function owner() external view returns (address);
}

pragma solidity 0.8.7;

abstract contract WnsRegistryImplementation is WnsRegistryInterface {
    address WnsRegistry;

    constructor(address registry_) {
        WnsRegistry = registry_;
    }

    function getWnsAddress(string memory _label) public override view returns (address) {
        WnsRegistryInterface wnsRegistry = WnsRegistryInterface(WnsRegistry);
        return wnsRegistry.getWnsAddress(_label);
    }

    function owner() public override view returns (address) {
        WnsRegistryInterface wnsRegistry = WnsRegistryInterface(WnsRegistry);
        return wnsRegistry.owner();
    }

    function setRegistry(address _registry) public {
        require(msg.sender == owner(), "Not authorized.");
        WnsRegistry = _registry;
    }
}

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

pragma solidity ^0.8.6;

library Address {
    function isContract(address account) internal view returns (bool) {
        uint size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
}

// OpenZeppelin Contracts v4.4.0 (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;
    }
}

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

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {

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


// OpenZeppelin Contracts v4.4.0 (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;
}


// OpenZeppelin Contracts v4.4.0 (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);
}

// OpenZeppelin Contracts v4.4.0 (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);
}


// OpenZeppelin Contracts v4.4.0 (token/ERC721/extensions/IERC721Enumerable.sol)

pragma solidity ^0.8.0;


/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

pragma solidity ^0.8.7;

abstract contract ERC721 is ERC165, IERC721, IERC721Metadata, WnsRegistryImplementation {
    using Address for address;
    using Strings for uint256;
    
    string private _name;
    string private _symbol;
    
    // Mapping from token ID to owner address
    address[] internal _owners;

    mapping(uint256 => address) private _tokenApprovals;
    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 (uint) 
    {
        require(owner != address(0), "ERC721: balance query for the zero address");

        uint count;
        for( uint i; i < _owners.length; ++i ){
          if( owner == _owners[i] )
            ++count;
        }
        return count;
    }

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

    function _setNameSymbol(string memory name_, string memory symbol_) public {
        require(msg.sender == owner(), "Not authorized.");
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @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(
            msg.sender == owner || isApprovedForAll(owner, msg.sender),
            "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
    {
        require(operator != msg.sender, "ERC721: approve to caller");

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, 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(msg.sender, 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(msg.sender, 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 tokenId < _owners.length && _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) || spender == getWnsAddress("_wnsMarketplace"));
    }

    /**
     * @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);
        _owners.push(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);
        _owners[tokenId] = address(0);

        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);
        _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 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(
                    msg.sender,
                    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 {}
}


pragma solidity ^0.8.7;

/**
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account but rips out the core of the gas-wasting processing that comes from OpenZeppelin.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _owners.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < _owners.length, "ERC721Enumerable: global index out of bounds");
        return index;
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256 tokenId) {
        require(index < balanceOf(owner), "ERC721Enumerable: owner index out of bounds");

        uint count;
        for(uint i; i < _owners.length; i++){
            if(owner == _owners[i]){
                if(count == index) return i;
                else count++;
            }
        }

        revert("ERC721Enumerable: owner index out of bounds");
    }
}


pragma solidity 0.8.7;

abstract contract URI is ERC721Enumerable {

    string public baseURI;

    constructor(string memory _baseURI) {
        baseURI = _baseURI;
    }

    function setBaseURI(string memory _baseURI) public  {
        baseURI = _baseURI;
    }

    function tokenURI(uint256 _tokenId) public view override returns (string memory) {
        require(_exists(_tokenId), "Token does not exist.");
        return string(abi.encodePacked(baseURI, Strings.toString(_tokenId)));
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.7;

contract WnsErc721 is ERC721Enumerable, URI {

    constructor(address registry_, string memory _baseURI, string memory name_, string memory symbol_) ERC721(name_, symbol_) WnsRegistryImplementation(registry_) URI(_baseURI) {
    }
    
    uint256 private nextTokenId;

    function getNextTokenId() public view returns (uint256) {
        return nextTokenId;
    }

    function mintErc721(address to) public {
        require(msg.sender == getWnsAddress("_wnsRegistrar") || msg.sender == getWnsAddress("_wnsMigration"), "Caller is not authorized.");
        _safeMint(to, nextTokenId);
        nextTokenId += 1;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"registry_","type":"address"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"_setNameSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_label","type":"string"}],"name":"getWnsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mintErc721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"name":"setRegistry","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001f5c38038062001f5c833981016040819052620000349162000201565b600080546001600160a01b0319166001600160a01b03861617905581518390839083906200006a906001906020850190620000a4565b50805162000080906002906020840190620000a4565b505081516200009891506006906020840190620000a4565b50505050505062000306565b828054620000b290620002b3565b90600052602060002090601f016020900481019282620000d6576000855562000121565b82601f10620000f157805160ff191683800117855562000121565b8280016001018555821562000121579182015b828111156200012157825182559160200191906001019062000104565b506200012f92915062000133565b5090565b5b808211156200012f576000815560010162000134565b600082601f8301126200015c57600080fd5b81516001600160401b0380821115620001795762000179620002f0565b604051601f8301601f19908116603f01168101908282118183101715620001a457620001a4620002f0565b81604052838152602092508683858801011115620001c157600080fd5b600091505b83821015620001e55785820183015181830184015290820190620001c6565b83821115620001f75760008385830101525b9695505050505050565b600080600080608085870312156200021857600080fd5b84516001600160a01b03811681146200023057600080fd5b60208601519094506001600160401b03808211156200024e57600080fd5b6200025c888389016200014a565b945060408701519150808211156200027357600080fd5b62000281888389016200014a565b935060608701519150808211156200029857600080fd5b50620002a7878288016200014a565b91505092959194509250565b600181811c90821680620002c857607f821691505b60208210811415620002ea57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b611c4680620003166000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80636352211e116100c3578063a22cb4651161007c578063a22cb465146102c2578063a91ee0dc146102d5578063b88d4fde146102e8578063c87b56dd146102fb578063caa0f92a1461030e578063e985e9c51461031657600080fd5b80636352211e146102715780636c0360eb1461028457806370a082311461028c5780637e47bb3e1461029f5780638da5cb5b146102b257806395d89b41146102ba57600080fd5b80632f745c59116101155780632f745c59146101ff57806342842e0e14610212578063478c582c146102255780634f6ccce71461023857806355f804b31461024b57806362bd39721461025e57600080fd5b806301ffc9a71461015d57806306fdde0314610185578063081812fc1461019a578063095ea7b3146101c557806318160ddd146101da57806323b872dd146101ec575b600080fd5b61017061016b366004611798565b610329565b60405190151581526020015b60405180910390f35b61018d610354565b60405161017c91906119b0565b6101ad6101a836600461186b565b6103e6565b6040516001600160a01b03909116815260200161017c565b6101d86101d336600461176c565b610473565b005b6003545b60405190815260200161017c565b6101d86101fa366004611678565b610589565b6101de61020d36600461176c565b6105ba565b6101d8610220366004611678565b61066d565b6101d8610233366004611807565b610688565b6101de61024636600461186b565b610709565b6101d86102593660046117d2565b610776565b6101ad61026c3660046117d2565b61078d565b6101ad61027f36600461186b565b610817565b61018d6108a3565b6101de61029a366004611605565b610931565b6101d86102ad366004611605565b6109ff565b6101ad610afd565b61018d610b82565b6101d86102d0366004611739565b610b91565b6101d86102e3366004611605565b610c56565b6101d86102f63660046116b9565b610cd2565b61018d61030936600461186b565b610d0a565b6007546101de565b61017061032436600461163f565b610d8b565b60006001600160e01b0319821663780e9d6360e01b148061034e575061034e82610db9565b92915050565b60606001805461036390611b20565b80601f016020809104026020016040519081016040528092919081815260200182805461038f90611b20565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905090565b60006103f182610e09565b6104575760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061047e82610817565b9050806001600160a01b0316836001600160a01b031614156104ec5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161044e565b336001600160a01b038216148061050857506105088133610d8b565b61057a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161044e565b6105848383610e53565b505050565b6105933382610ec1565b6105af5760405162461bcd60e51b815260040161044e90611a60565b610584838383610fd6565b60006105c583610931565b82106105e35760405162461bcd60e51b815260040161044e906119c3565b6000805b600354811015610654576003818154811061060457610604611bb6565b6000918252602090912001546001600160a01b0386811691161415610642578382141561063457915061034e9050565b8161063e81611b5b565b9250505b8061064c81611b5b565b9150506105e7565b5060405162461bcd60e51b815260040161044e906119c3565b61058483838360405180602001604052806000815250610cd2565b610690610afd565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b815260206004820152600f60248201526e2737ba1030baba3437b934bd32b21760891b604482015260640161044e565b81516106f59060019060208501906114df565b5080516105849060029060208401906114df565b60035460009082106107725760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161044e565b5090565b80516107899060069060208401906114df565b5050565b6000805460405163315e9cb960e11b81526001600160a01b039091169081906362bd3972906107c09086906004016119b0565b60206040518083038186803b1580156107d857600080fd5b505afa1580156107ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108109190611622565b9392505050565b6000806003838154811061082d5761082d611bb6565b6000918252602090912001546001600160a01b031690508061034e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161044e565b600680546108b090611b20565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90611b20565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b505050505081565b60006001600160a01b03821661099c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161044e565b6000805b6003548110156109f857600381815481106109bd576109bd611bb6565b6000918252602090912001546001600160a01b03858116911614156109e8576109e582611b5b565b91505b6109f181611b5b565b90506109a0565b5092915050565b610a2d6040518060400160405280600d81526020016c2fbbb739a932b3b4b9ba3930b960991b81525061078d565b6001600160a01b0316336001600160a01b03161480610a8a5750610a756040518060400160405280600d81526020016c2fbbb739a6b4b3b930ba34b7b760991b81525061078d565b6001600160a01b0316336001600160a01b0316145b610ad65760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f7420617574686f72697a65642e00000000000000604482015260640161044e565b610ae28160075461112c565b600160076000828254610af59190611ab1565b909155505050565b6000805460408051638da5cb5b60e01b815290516001600160a01b03909216918291638da5cb5b916004808301926020929190829003018186803b158015610b4457600080fd5b505afa158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190611622565b91505090565b60606002805461036390611b20565b6001600160a01b038216331415610bea5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161044e565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c5e610afd565b6001600160a01b0316336001600160a01b031614610cb05760405162461bcd60e51b815260206004820152600f60248201526e2737ba1030baba3437b934bd32b21760891b604482015260640161044e565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610cdc3383610ec1565b610cf85760405162461bcd60e51b815260040161044e90611a60565b610d0484848484611146565b50505050565b6060610d1582610e09565b610d595760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7103237b2b9903737ba1032bc34b9ba1760591b604482015260640161044e565b6006610d6483611179565b604051602001610d759291906118cc565b6040516020818303038152906040529050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b1480610dea57506001600160e01b03198216635b5e139f60e01b145b8061034e57506301ffc9a760e01b6001600160e01b031983161461034e565b6003546000908210801561034e575060006001600160a01b031660038381548110610e3657610e36611bb6565b6000918252602090912001546001600160a01b0316141592915050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e8882610817565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610ecc82610e09565b610f2d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161044e565b6000610f3883610817565b9050806001600160a01b0316846001600160a01b03161480610f735750836001600160a01b0316610f68846103e6565b6001600160a01b0316145b80610f835750610f838185610d8b565b80610fce5750610fb96040518060400160405280600f81526020016e5f776e734d61726b6574706c61636560881b81525061078d565b6001600160a01b0316846001600160a01b0316145b949350505050565b826001600160a01b0316610fe982610817565b6001600160a01b0316146110515760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161044e565b6001600160a01b0382166110b35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161044e565b6110be600082610e53565b81600382815481106110d2576110d2611bb6565b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b610789828260405180602001604052806000815250611277565b611151848484610fd6565b61115d848484846112aa565b610d045760405162461bcd60e51b815260040161044e90611a0e565b60608161119d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156111c757806111b181611b5b565b91506111c09050600a83611ac9565b91506111a1565b60008167ffffffffffffffff8111156111e2576111e2611bcc565b6040519080825280601f01601f19166020018201604052801561120c576020820181803683370190505b5090505b8415610fce57611221600183611add565b915061122e600a86611b76565b611239906030611ab1565b60f81b81838151811061124e5761124e611bb6565b60200101906001600160f81b031916908160001a905350611270600a86611ac9565b9450611210565b61128183836113b7565b61128e60008484846112aa565b6105845760405162461bcd60e51b815260040161044e90611a0e565b60006001600160a01b0384163b156113ac57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906112ee903390899088908890600401611973565b602060405180830381600087803b15801561130857600080fd5b505af1925050508015611338575060408051601f3d908101601f19168201909252611335918101906117b5565b60015b611392573d808015611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b50805161138a5760405162461bcd60e51b815260040161044e90611a0e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610fce565b506001949350505050565b6001600160a01b03821661140d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161044e565b61141681610e09565b156114635760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161044e565b6003805460018101825560009182527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b0385169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546114eb90611b20565b90600052602060002090601f01602090048101928261150d5760008555611553565b82601f1061152657805160ff1916838001178555611553565b82800160010185558215611553579182015b82811115611553578251825591602001919060010190611538565b506107729291505b80821115610772576000815560010161155b565b600067ffffffffffffffff8084111561158a5761158a611bcc565b604051601f8501601f19908116603f011681019082821181831017156115b2576115b2611bcc565b816040528093508581528686860111156115cb57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126115f657600080fd5b6108108383356020850161156f565b60006020828403121561161757600080fd5b813561081081611be2565b60006020828403121561163457600080fd5b815161081081611be2565b6000806040838503121561165257600080fd5b823561165d81611be2565b9150602083013561166d81611be2565b809150509250929050565b60008060006060848603121561168d57600080fd5b833561169881611be2565b925060208401356116a881611be2565b929592945050506040919091013590565b600080600080608085870312156116cf57600080fd5b84356116da81611be2565b935060208501356116ea81611be2565b925060408501359150606085013567ffffffffffffffff81111561170d57600080fd5b8501601f8101871361171e57600080fd5b61172d8782356020840161156f565b91505092959194509250565b6000806040838503121561174c57600080fd5b823561175781611be2565b91506020830135801515811461166d57600080fd5b6000806040838503121561177f57600080fd5b823561178a81611be2565b946020939093013593505050565b6000602082840312156117aa57600080fd5b813561081081611bfa565b6000602082840312156117c757600080fd5b815161081081611bfa565b6000602082840312156117e457600080fd5b813567ffffffffffffffff8111156117fb57600080fd5b610fce848285016115e5565b6000806040838503121561181a57600080fd5b823567ffffffffffffffff8082111561183257600080fd5b61183e868387016115e5565b9350602085013591508082111561185457600080fd5b50611861858286016115e5565b9150509250929050565b60006020828403121561187d57600080fd5b5035919050565b6000815180845261189c816020860160208601611af4565b601f01601f19169290920160200192915050565b600081516118c2818560208601611af4565b9290920192915050565b600080845481600182811c9150808316806118e857607f831692505b602080841082141561190857634e487b7160e01b86526022600452602486fd5b81801561191c576001811461192d5761195a565b60ff1986168952848901965061195a565b60008b81526020902060005b868110156119525781548b820152908501908301611939565b505084890196505b50505050505061196a81856118b0565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119a690830184611884565b9695505050505050565b6020815260006108106020830184611884565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115611ac457611ac4611b8a565b500190565b600082611ad857611ad8611ba0565b500490565b600082821015611aef57611aef611b8a565b500390565b60005b83811015611b0f578181015183820152602001611af7565b83811115610d045750506000910152565b600181811c90821680611b3457607f821691505b60208210811415611b5557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b6f57611b6f611b8a565b5060010190565b600082611b8557611b85611ba0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611bf757600080fd5b50565b6001600160e01b031981168114611bf757600080fdfea26469706673582212206afae34ad6f1760dee70349c4aa1c769a6ec503483367604728bc5c0ccb0d43164736f6c6343000807003300000000000000000000000082fe896e4969a3270c0bec103cf1ebdbda6e6bfc000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000002b68747470733a2f2f6170692e776e73646f6d61696e732e696f2f6d657461646174612f746f6b656e69643d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001157656233204e616d6520536572766963650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003574e530000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c80636352211e116100c3578063a22cb4651161007c578063a22cb465146102c2578063a91ee0dc146102d5578063b88d4fde146102e8578063c87b56dd146102fb578063caa0f92a1461030e578063e985e9c51461031657600080fd5b80636352211e146102715780636c0360eb1461028457806370a082311461028c5780637e47bb3e1461029f5780638da5cb5b146102b257806395d89b41146102ba57600080fd5b80632f745c59116101155780632f745c59146101ff57806342842e0e14610212578063478c582c146102255780634f6ccce71461023857806355f804b31461024b57806362bd39721461025e57600080fd5b806301ffc9a71461015d57806306fdde0314610185578063081812fc1461019a578063095ea7b3146101c557806318160ddd146101da57806323b872dd146101ec575b600080fd5b61017061016b366004611798565b610329565b60405190151581526020015b60405180910390f35b61018d610354565b60405161017c91906119b0565b6101ad6101a836600461186b565b6103e6565b6040516001600160a01b03909116815260200161017c565b6101d86101d336600461176c565b610473565b005b6003545b60405190815260200161017c565b6101d86101fa366004611678565b610589565b6101de61020d36600461176c565b6105ba565b6101d8610220366004611678565b61066d565b6101d8610233366004611807565b610688565b6101de61024636600461186b565b610709565b6101d86102593660046117d2565b610776565b6101ad61026c3660046117d2565b61078d565b6101ad61027f36600461186b565b610817565b61018d6108a3565b6101de61029a366004611605565b610931565b6101d86102ad366004611605565b6109ff565b6101ad610afd565b61018d610b82565b6101d86102d0366004611739565b610b91565b6101d86102e3366004611605565b610c56565b6101d86102f63660046116b9565b610cd2565b61018d61030936600461186b565b610d0a565b6007546101de565b61017061032436600461163f565b610d8b565b60006001600160e01b0319821663780e9d6360e01b148061034e575061034e82610db9565b92915050565b60606001805461036390611b20565b80601f016020809104026020016040519081016040528092919081815260200182805461038f90611b20565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905090565b60006103f182610e09565b6104575760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061047e82610817565b9050806001600160a01b0316836001600160a01b031614156104ec5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161044e565b336001600160a01b038216148061050857506105088133610d8b565b61057a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161044e565b6105848383610e53565b505050565b6105933382610ec1565b6105af5760405162461bcd60e51b815260040161044e90611a60565b610584838383610fd6565b60006105c583610931565b82106105e35760405162461bcd60e51b815260040161044e906119c3565b6000805b600354811015610654576003818154811061060457610604611bb6565b6000918252602090912001546001600160a01b0386811691161415610642578382141561063457915061034e9050565b8161063e81611b5b565b9250505b8061064c81611b5b565b9150506105e7565b5060405162461bcd60e51b815260040161044e906119c3565b61058483838360405180602001604052806000815250610cd2565b610690610afd565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b815260206004820152600f60248201526e2737ba1030baba3437b934bd32b21760891b604482015260640161044e565b81516106f59060019060208501906114df565b5080516105849060029060208401906114df565b60035460009082106107725760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161044e565b5090565b80516107899060069060208401906114df565b5050565b6000805460405163315e9cb960e11b81526001600160a01b039091169081906362bd3972906107c09086906004016119b0565b60206040518083038186803b1580156107d857600080fd5b505afa1580156107ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108109190611622565b9392505050565b6000806003838154811061082d5761082d611bb6565b6000918252602090912001546001600160a01b031690508061034e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161044e565b600680546108b090611b20565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90611b20565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b505050505081565b60006001600160a01b03821661099c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161044e565b6000805b6003548110156109f857600381815481106109bd576109bd611bb6565b6000918252602090912001546001600160a01b03858116911614156109e8576109e582611b5b565b91505b6109f181611b5b565b90506109a0565b5092915050565b610a2d6040518060400160405280600d81526020016c2fbbb739a932b3b4b9ba3930b960991b81525061078d565b6001600160a01b0316336001600160a01b03161480610a8a5750610a756040518060400160405280600d81526020016c2fbbb739a6b4b3b930ba34b7b760991b81525061078d565b6001600160a01b0316336001600160a01b0316145b610ad65760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f7420617574686f72697a65642e00000000000000604482015260640161044e565b610ae28160075461112c565b600160076000828254610af59190611ab1565b909155505050565b6000805460408051638da5cb5b60e01b815290516001600160a01b03909216918291638da5cb5b916004808301926020929190829003018186803b158015610b4457600080fd5b505afa158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190611622565b91505090565b60606002805461036390611b20565b6001600160a01b038216331415610bea5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161044e565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c5e610afd565b6001600160a01b0316336001600160a01b031614610cb05760405162461bcd60e51b815260206004820152600f60248201526e2737ba1030baba3437b934bd32b21760891b604482015260640161044e565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610cdc3383610ec1565b610cf85760405162461bcd60e51b815260040161044e90611a60565b610d0484848484611146565b50505050565b6060610d1582610e09565b610d595760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7103237b2b9903737ba1032bc34b9ba1760591b604482015260640161044e565b6006610d6483611179565b604051602001610d759291906118cc565b6040516020818303038152906040529050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b1480610dea57506001600160e01b03198216635b5e139f60e01b145b8061034e57506301ffc9a760e01b6001600160e01b031983161461034e565b6003546000908210801561034e575060006001600160a01b031660038381548110610e3657610e36611bb6565b6000918252602090912001546001600160a01b0316141592915050565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e8882610817565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610ecc82610e09565b610f2d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161044e565b6000610f3883610817565b9050806001600160a01b0316846001600160a01b03161480610f735750836001600160a01b0316610f68846103e6565b6001600160a01b0316145b80610f835750610f838185610d8b565b80610fce5750610fb96040518060400160405280600f81526020016e5f776e734d61726b6574706c61636560881b81525061078d565b6001600160a01b0316846001600160a01b0316145b949350505050565b826001600160a01b0316610fe982610817565b6001600160a01b0316146110515760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161044e565b6001600160a01b0382166110b35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161044e565b6110be600082610e53565b81600382815481106110d2576110d2611bb6565b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b610789828260405180602001604052806000815250611277565b611151848484610fd6565b61115d848484846112aa565b610d045760405162461bcd60e51b815260040161044e90611a0e565b60608161119d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156111c757806111b181611b5b565b91506111c09050600a83611ac9565b91506111a1565b60008167ffffffffffffffff8111156111e2576111e2611bcc565b6040519080825280601f01601f19166020018201604052801561120c576020820181803683370190505b5090505b8415610fce57611221600183611add565b915061122e600a86611b76565b611239906030611ab1565b60f81b81838151811061124e5761124e611bb6565b60200101906001600160f81b031916908160001a905350611270600a86611ac9565b9450611210565b61128183836113b7565b61128e60008484846112aa565b6105845760405162461bcd60e51b815260040161044e90611a0e565b60006001600160a01b0384163b156113ac57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906112ee903390899088908890600401611973565b602060405180830381600087803b15801561130857600080fd5b505af1925050508015611338575060408051601f3d908101601f19168201909252611335918101906117b5565b60015b611392573d808015611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b50805161138a5760405162461bcd60e51b815260040161044e90611a0e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610fce565b506001949350505050565b6001600160a01b03821661140d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161044e565b61141681610e09565b156114635760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161044e565b6003805460018101825560009182527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b0385169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546114eb90611b20565b90600052602060002090601f01602090048101928261150d5760008555611553565b82601f1061152657805160ff1916838001178555611553565b82800160010185558215611553579182015b82811115611553578251825591602001919060010190611538565b506107729291505b80821115610772576000815560010161155b565b600067ffffffffffffffff8084111561158a5761158a611bcc565b604051601f8501601f19908116603f011681019082821181831017156115b2576115b2611bcc565b816040528093508581528686860111156115cb57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126115f657600080fd5b6108108383356020850161156f565b60006020828403121561161757600080fd5b813561081081611be2565b60006020828403121561163457600080fd5b815161081081611be2565b6000806040838503121561165257600080fd5b823561165d81611be2565b9150602083013561166d81611be2565b809150509250929050565b60008060006060848603121561168d57600080fd5b833561169881611be2565b925060208401356116a881611be2565b929592945050506040919091013590565b600080600080608085870312156116cf57600080fd5b84356116da81611be2565b935060208501356116ea81611be2565b925060408501359150606085013567ffffffffffffffff81111561170d57600080fd5b8501601f8101871361171e57600080fd5b61172d8782356020840161156f565b91505092959194509250565b6000806040838503121561174c57600080fd5b823561175781611be2565b91506020830135801515811461166d57600080fd5b6000806040838503121561177f57600080fd5b823561178a81611be2565b946020939093013593505050565b6000602082840312156117aa57600080fd5b813561081081611bfa565b6000602082840312156117c757600080fd5b815161081081611bfa565b6000602082840312156117e457600080fd5b813567ffffffffffffffff8111156117fb57600080fd5b610fce848285016115e5565b6000806040838503121561181a57600080fd5b823567ffffffffffffffff8082111561183257600080fd5b61183e868387016115e5565b9350602085013591508082111561185457600080fd5b50611861858286016115e5565b9150509250929050565b60006020828403121561187d57600080fd5b5035919050565b6000815180845261189c816020860160208601611af4565b601f01601f19169290920160200192915050565b600081516118c2818560208601611af4565b9290920192915050565b600080845481600182811c9150808316806118e857607f831692505b602080841082141561190857634e487b7160e01b86526022600452602486fd5b81801561191c576001811461192d5761195a565b60ff1986168952848901965061195a565b60008b81526020902060005b868110156119525781548b820152908501908301611939565b505084890196505b50505050505061196a81856118b0565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119a690830184611884565b9695505050505050565b6020815260006108106020830184611884565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115611ac457611ac4611b8a565b500190565b600082611ad857611ad8611ba0565b500490565b600082821015611aef57611aef611b8a565b500390565b60005b83811015611b0f578181015183820152602001611af7565b83811115610d045750506000910152565b600181811c90821680611b3457607f821691505b60208210811415611b5557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611b6f57611b6f611b8a565b5060010190565b600082611b8557611b85611ba0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611bf757600080fd5b50565b6001600160e01b031981168114611bf757600080fdfea26469706673582212206afae34ad6f1760dee70349c4aa1c769a6ec503483367604728bc5c0ccb0d43164736f6c63430008070033

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

00000000000000000000000082fe896e4969a3270c0bec103cf1ebdbda6e6bfc000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000002b68747470733a2f2f6170692e776e73646f6d61696e732e696f2f6d657461646174612f746f6b656e69643d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001157656233204e616d6520536572766963650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003574e530000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : registry_ (address): 0x82FE896E4969A3270c0BEC103CF1ebdBdA6E6bfc
Arg [1] : _baseURI (string): https://api.wnsdomains.io/metadata/tokenid=
Arg [2] : name_ (string): Web3 Name Service
Arg [3] : symbol_ (string): WNS

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000082fe896e4969a3270c0bec103cf1ebdbda6e6bfc
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 000000000000000000000000000000000000000000000000000000000000002b
Arg [5] : 68747470733a2f2f6170692e776e73646f6d61696e732e696f2f6d6574616461
Arg [6] : 74612f746f6b656e69643d000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [8] : 57656233204e616d652053657276696365000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 574e530000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

26858:640:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25000:224;;;;;;:::i;:::-;;:::i;:::-;;;7839:14:1;;7832:22;7814:41;;7802:2;7787:18;25000:224:0;;;;;;;;13487:100;;;:::i;:::-;;;;;;;:::i;14498:308::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7137:32:1;;;7119:51;;7107:2;7092:18;14498:308:0;6973:203:1;14025:407:0;;;;;;:::i;:::-;;:::i;:::-;;25300:110;25388:7;:14;25300:110;;;15307:25:1;;;15295:2;15280:18;25300:110:0;15161:177:1;15551:374:0;;;;;;:::i;:::-;;:::i;25776:490::-;;;;;;:::i;:::-;;:::i;15996:185::-;;;;;;:::i;:::-;;:::i;13768:195::-;;;;;;:::i;:::-;;:::i;25487:205::-;;;;;;:::i;:::-;;:::i;26463:89::-;;;;;;:::i;:::-;;:::i;413:222::-;;;;;;:::i;:::-;;:::i;13094:326::-;;;;;;:::i;:::-;;:::i;26352:21::-;;;:::i;12640:392::-;;;;;;:::i;:::-;;:::i;27241:252::-;;;;;;:::i;:::-;;:::i;643:180::-;;;:::i;13656:104::-;;;:::i;14878:321::-;;;;;;:::i;:::-;;:::i;831:149::-;;;;;;:::i;:::-;;:::i;16252:363::-;;;;;;:::i;:::-;;:::i;26560:230::-;;;;;;:::i;:::-;;:::i;27140:93::-;27214:11;;27140:93;;15270:214;;;;;;:::i;:::-;;:::i;25000:224::-;25102:4;-1:-1:-1;;;;;;25126:50:0;;-1:-1:-1;;;25126:50:0;;:90;;;25180:36;25204:11;25180:23;:36::i;:::-;25119:97;25000:224;-1:-1:-1;;25000:224:0:o;13487:100::-;13541:13;13574:5;13567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13487:100;:::o;14498:308::-;14619:7;14666:16;14674:7;14666;:16::i;:::-;14644:110;;;;-1:-1:-1;;;14644:110:0;;13307:2:1;14644:110:0;;;13289:21:1;13346:2;13326:18;;;13319:30;13385:34;13365:18;;;13358:62;-1:-1:-1;;;13436:18:1;;;13429:42;13488:19;;14644:110:0;;;;;;;;;-1:-1:-1;14774:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;14774:24:0;;14498:308::o;14025:407::-;14106:13;14122:23;14137:7;14122:14;:23::i;:::-;14106:39;;14170:5;-1:-1:-1;;;;;14164:11:0;:2;-1:-1:-1;;;;;14164:11:0;;;14156:57;;;;-1:-1:-1;;;14156:57:0;;14130:2:1;14156:57:0;;;14112:21:1;14169:2;14149:18;;;14142:30;14208:34;14188:18;;;14181:62;-1:-1:-1;;;14259:18:1;;;14252:31;14300:19;;14156:57:0;13928:397:1;14156:57:0;14248:10;-1:-1:-1;;;;;14248:19:0;;;;:58;;;14271:35;14288:5;14295:10;14271:16;:35::i;:::-;14226:164;;;;-1:-1:-1;;;14226:164:0;;11006:2:1;14226:164:0;;;10988:21:1;11045:2;11025:18;;;11018:30;11084:34;11064:18;;;11057:62;11155:26;11135:18;;;11128:54;11199:19;;14226:164:0;10804:420:1;14226:164:0;14403:21;14412:2;14416:7;14403:8;:21::i;:::-;14095:337;14025:407;;:::o;15551:374::-;15760:39;15779:10;15791:7;15760:18;:39::i;:::-;15738:138;;;;-1:-1:-1;;;15738:138:0;;;;;;;:::i;:::-;15889:28;15899:4;15905:2;15909:7;15889:9;:28::i;25776:490::-;25873:15;25917:16;25927:5;25917:9;:16::i;:::-;25909:5;:24;25901:80;;;;-1:-1:-1;;;25901:80:0;;;;;;;:::i;:::-;25994:10;26019:6;26015:178;26031:7;:14;26027:18;;26015:178;;;26078:7;26086:1;26078:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;26069:19:0;;;26078:10;;26069:19;26066:116;;;26120:5;26111;:14;26108:58;;;26134:1;-1:-1:-1;26127:8:0;;-1:-1:-1;26127:8:0;26108:58;26159:7;;;;:::i;:::-;;;;26108:58;26047:3;;;;:::i;:::-;;;;26015:178;;;;26205:53;;-1:-1:-1;;;26205:53:0;;;;;;;:::i;15996:185::-;16134:39;16151:4;16157:2;16161:7;16134:39;;;;;;;;;;;;:16;:39::i;13768:195::-;13876:7;:5;:7::i;:::-;-1:-1:-1;;;;;13862:21:0;:10;-1:-1:-1;;;;;13862:21:0;;13854:49;;;;-1:-1:-1;;;13854:49:0;;11431:2:1;13854:49:0;;;11413:21:1;11470:2;11450:18;;;11443:30;-1:-1:-1;;;11489:18:1;;;11482:45;11544:18;;13854:49:0;11229:339:1;13854:49:0;13914:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;13938:17:0;;;;:7;;:17;;;;;:::i;25487:205::-;25598:7;:14;25562:7;;25590:22;;25582:79;;;;-1:-1:-1;;;25582:79:0;;14950:2:1;25582:79:0;;;14932:21:1;14989:2;14969:18;;;14962:30;15028:34;15008:18;;;15001:62;-1:-1:-1;;;15079:18:1;;;15072:42;15131:19;;25582:79:0;14748:408:1;25582:79:0;-1:-1:-1;25679:5:0;25487:205::o;26463:89::-;26526:18;;;;:7;;:18;;;;;:::i;:::-;;26463:89;:::o;413:222::-;488:7;564:11;;594:33;;-1:-1:-1;;;594:33:0;;-1:-1:-1;;;;;564:11:0;;;;;;594:25;;:33;;620:6;;594:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;587:40;413:222;-1:-1:-1;;;413:222:0:o;13094:326::-;13211:7;13236:13;13252:7;13260;13252:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;13252:16:0;;-1:-1:-1;13301:19:0;13279:110;;;;-1:-1:-1;;;13279:110:0;;12186:2:1;13279:110:0;;;12168:21:1;12225:2;12205:18;;;12198:30;12264:34;12244:18;;;12237:62;-1:-1:-1;;;12315:18:1;;;12308:39;12364:19;;13279:110:0;11984:405:1;26352:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12640:392::-;12762:4;-1:-1:-1;;;;;12793:19:0;;12785:74;;;;-1:-1:-1;;;12785:74:0;;11775:2:1;12785:74:0;;;11757:21:1;11814:2;11794:18;;;11787:30;11853:34;11833:18;;;11826:62;-1:-1:-1;;;11904:18:1;;;11897:40;11954:19;;12785:74:0;11573:406:1;12785:74:0;12872:10;12898:6;12893:109;12910:7;:14;12906:18;;12893:109;;;12957:7;12965:1;12957:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;12948:19:0;;;12957:10;;12948:19;12944:46;;;12983:7;;;:::i;:::-;;;12944:46;12926:3;;;:::i;:::-;;;12893:109;;;-1:-1:-1;13019:5:0;12640:392;-1:-1:-1;;12640:392:0:o;27241:252::-;27313:30;;;;;;;;;;;;;;-1:-1:-1;;;27313:30:0;;;:13;:30::i;:::-;-1:-1:-1;;;;;27299:44:0;:10;-1:-1:-1;;;;;27299:44:0;;:92;;;;27361:30;;;;;;;;;;;;;;-1:-1:-1;;;27361:30:0;;;:13;:30::i;:::-;-1:-1:-1;;;;;27347:44:0;:10;-1:-1:-1;;;;;27347:44:0;;27299:92;27291:130;;;;-1:-1:-1;;;27291:130:0;;10652:2:1;27291:130:0;;;10634:21:1;10691:2;10671:18;;;10664:30;10730:27;10710:18;;;10703:55;10775:18;;27291:130:0;10450:349:1;27291:130:0;27432:26;27442:2;27446:11;;27432:9;:26::i;:::-;27484:1;27469:11;;:16;;;;;;;:::i;:::-;;;;-1:-1:-1;;;27241:252:0:o;643:180::-;690:7;766:11;;796:19;;;-1:-1:-1;;;796:19:0;;;;-1:-1:-1;;;;;766:11:0;;;;;;796:17;;:19;;;;;;;;;;;;;;766:11;796:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;789:26;;;643:180;:::o;13656:104::-;13712:13;13745:7;13738:14;;;;;:::i;14878:321::-;-1:-1:-1;;;;;15013:22:0;;15025:10;15013:22;;15005:60;;;;-1:-1:-1;;;15005:60:0;;9885:2:1;15005:60:0;;;9867:21:1;9924:2;9904:18;;;9897:30;9963:27;9943:18;;;9936:55;10008:18;;15005:60:0;9683:349:1;15005:60:0;15097:10;15078:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;15078:40:0;;;;;;;;;;;;:51;;-1:-1:-1;;15078:51:0;;;;;;;;;;15145:46;;7814:41:1;;;15078:40:0;;15097:10;15145:46;;7787:18:1;15145:46:0;;;;;;;14878:321;;:::o;831:149::-;911:7;:5;:7::i;:::-;-1:-1:-1;;;;;897:21:0;:10;-1:-1:-1;;;;;897:21:0;;889:49;;;;-1:-1:-1;;;889:49:0;;11431:2:1;889:49:0;;;11413:21:1;11470:2;11450:18;;;11443:30;-1:-1:-1;;;11489:18:1;;;11482:45;11544:18;;889:49:0;11229:339:1;889:49:0;949:11;:23;;-1:-1:-1;;;;;;949:23:0;-1:-1:-1;;;;;949:23:0;;;;;;;;;;831:149::o;16252:363::-;16441:39;16460:10;16472:7;16441:18;:39::i;:::-;16419:138;;;;-1:-1:-1;;;16419:138:0;;;;;;;:::i;:::-;16568:39;16582:4;16588:2;16592:7;16601:5;16568:13;:39::i;:::-;16252:363;;;;:::o;26560:230::-;26626:13;26660:17;26668:8;26660:7;:17::i;:::-;26652:51;;;;-1:-1:-1;;;26652:51:0;;12957:2:1;26652:51:0;;;12939:21:1;12996:2;12976:18;;;12969:30;-1:-1:-1;;;13015:18:1;;;13008:51;13076:18;;26652:51:0;12755:345:1;26652:51:0;26745:7;26754:26;26771:8;26754:16;:26::i;:::-;26728:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26714:68;;26560:230;;;:::o;15270:214::-;-1:-1:-1;;;;;15441:25:0;;;15412:4;15441:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;15270:214::o;12221:355::-;12368:4;-1:-1:-1;;;;;;12410:40:0;;-1:-1:-1;;;12410:40:0;;:105;;-1:-1:-1;;;;;;;12467:48:0;;-1:-1:-1;;;12467:48:0;12410:105;:158;;;-1:-1:-1;;;;;;;;;;2919:40:0;;;12532:36;2810:157;18162:155;18261:7;:14;18227:4;;18251:24;;:58;;;;;18307:1;-1:-1:-1;;;;;18279:30:0;:7;18287;18279:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18279:16:0;:30;;18244:65;18162:155;-1:-1:-1;;18162:155:0:o;22128:174::-;22203:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;22203:29:0;-1:-1:-1;;;;;22203:29:0;;;;;;;;:24;;22257:23;22203:24;22257:14;:23::i;:::-;-1:-1:-1;;;;;22248:46:0;;;;;;;;;;;22128:174;;:::o;18484:395::-;18577:4;18602:16;18610:7;18602;:16::i;:::-;18594:73;;;;-1:-1:-1;;;18594:73:0;;10239:2:1;18594:73:0;;;10221:21:1;10278:2;10258:18;;;10251:30;10317:34;10297:18;;;10290:62;-1:-1:-1;;;10368:18:1;;;10361:42;10420:19;;18594:73:0;10037:408:1;18594:73:0;18678:13;18694:23;18709:7;18694:14;:23::i;:::-;18678:39;;18747:5;-1:-1:-1;;;;;18736:16:0;:7;-1:-1:-1;;;;;18736:16:0;;:51;;;;18780:7;-1:-1:-1;;;;;18756:31:0;:20;18768:7;18756:11;:20::i;:::-;-1:-1:-1;;;;;18756:31:0;;18736:51;:87;;;;18791:32;18808:5;18815:7;18791:16;:32::i;:::-;18736:134;;;;18838:32;;;;;;;;;;;;;;-1:-1:-1;;;18838:32:0;;;:13;:32::i;:::-;-1:-1:-1;;;;;18827:43:0;:7;-1:-1:-1;;;;;18827:43:0;;18736:134;18728:143;18484:395;-1:-1:-1;;;;18484:395:0:o;21457:553::-;21630:4;-1:-1:-1;;;;;21603:31:0;:23;21618:7;21603:14;:23::i;:::-;-1:-1:-1;;;;;21603:31:0;;21581:122;;;;-1:-1:-1;;;21581:122:0;;13720:2:1;21581:122:0;;;13702:21:1;13759:2;13739:18;;;13732:30;13798:34;13778:18;;;13771:62;-1:-1:-1;;;13849:18:1;;;13842:39;13898:19;;21581:122:0;13518:405:1;21581:122:0;-1:-1:-1;;;;;21722:16:0;;21714:65;;;;-1:-1:-1;;;21714:65:0;;9480:2:1;21714:65:0;;;9462:21:1;9519:2;9499:18;;;9492:30;9558:34;9538:18;;;9531:62;-1:-1:-1;;;9609:18:1;;;9602:34;9653:19;;21714:65:0;9278:400:1;21714:65:0;21896:29;21913:1;21917:7;21896:8;:29::i;:::-;21955:2;21936:7;21944;21936:16;;;;;;;;:::i;:::-;;;;;;;;;:21;;-1:-1:-1;;;;;;21936:21:0;-1:-1:-1;;;;;21936:21:0;;;;;;21975:27;;21994:7;;21975:27;;;;;;;;;;21936:16;21975:27;21457:553;;;:::o;19221:110::-;19297:26;19307:2;19311:7;19297:26;;;;;;;;;;;;:9;:26::i;17497:352::-;17654:28;17664:4;17670:2;17674:7;17654:9;:28::i;:::-;17715:48;17738:4;17744:2;17748:7;17757:5;17715:22;:48::i;:::-;17693:148;;;;-1:-1:-1;;;17693:148:0;;;;;;;:::i;3218:723::-;3274:13;3495:10;3491:53;;-1:-1:-1;;3522:10:0;;;;;;;;;;;;-1:-1:-1;;;3522:10:0;;;;;3218:723::o;3491:53::-;3569:5;3554:12;3610:78;3617:9;;3610:78;;3643:8;;;;:::i;:::-;;-1:-1:-1;3666:10:0;;-1:-1:-1;3674:2:0;3666:10;;:::i;:::-;;;3610:78;;;3698:19;3730:6;3720:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3720:17:0;;3698:39;;3748:154;3755:10;;3748:154;;3782:11;3792:1;3782:11;;:::i;:::-;;-1:-1:-1;3851:10:0;3859:2;3851:5;:10;:::i;:::-;3838:24;;:2;:24;:::i;:::-;3825:39;;3808:6;3815;3808:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;3808:56:0;;;;;;;;-1:-1:-1;3879:11:0;3888:2;3879:11;;:::i;:::-;;;3748:154;;19558:321;19688:18;19694:2;19698:7;19688:5;:18::i;:::-;19739:54;19770:1;19774:2;19778:7;19787:5;19739:22;:54::i;:::-;19717:154;;;;-1:-1:-1;;;19717:154:0;;;;;;;:::i;22867:978::-;23022:4;-1:-1:-1;;;;;23043:13:0;;1943:20;1991:8;23039:799;;23096:173;;-1:-1:-1;;;23096:173:0;;-1:-1:-1;;;;;23096:36:0;;;;;:173;;23155:10;;23188:4;;23215:7;;23245:5;;23096:173;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23096:173:0;;;;;;;;-1:-1:-1;;23096:173:0;;;;;;;;;;;;:::i;:::-;;;23075:708;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23452:13:0;;23448:320;;23495:108;;-1:-1:-1;;;23495:108:0;;;;;;;:::i;23448:320::-;23718:6;23712:13;23703:6;23699:2;23695:15;23688:38;23075:708;-1:-1:-1;;;;;;23333:51:0;-1:-1:-1;;;23333:51:0;;-1:-1:-1;23326:58:0;;23039:799;-1:-1:-1;23822:4:0;22867:978;;;;;;:::o;20215:344::-;-1:-1:-1;;;;;20295:16:0;;20287:61;;;;-1:-1:-1;;;20287:61:0;;12596:2:1;20287:61:0;;;12578:21:1;;;12615:18;;;12608:30;12674:34;12654:18;;;12647:62;12726:18;;20287:61:0;12394:356:1;20287:61:0;20368:16;20376:7;20368;:16::i;:::-;20367:17;20359:58;;;;-1:-1:-1;;;20359:58:0;;9123:2:1;20359:58:0;;;9105:21:1;9162:2;9142:18;;;9135:30;9201;9181:18;;;9174:58;9249:18;;20359:58:0;8921:352:1;20359:58:0;20486:7;:16;;;;;;;-1:-1:-1;20486:16:0;;;;;;;-1:-1:-1;;;;;;20486:16:0;-1:-1:-1;;;;;20486:16:0;;;;;;;;20518:33;;20543:7;;-1:-1:-1;20518:33:0;;-1:-1:-1;;20518:33:0;20215:344;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:221::-;693:5;746:3;739:4;731:6;727:17;723:27;713:55;;764:1;761;754:12;713:55;786:79;861:3;852:6;839:20;832:4;824:6;820:17;786:79;:::i;876:247::-;935:6;988:2;976:9;967:7;963:23;959:32;956:52;;;1004:1;1001;994:12;956:52;1043:9;1030:23;1062:31;1087:5;1062:31;:::i;1128:251::-;1198:6;1251:2;1239:9;1230:7;1226:23;1222:32;1219:52;;;1267:1;1264;1257:12;1219:52;1299:9;1293:16;1318:31;1343:5;1318:31;:::i;1384:388::-;1452:6;1460;1513:2;1501:9;1492:7;1488:23;1484:32;1481:52;;;1529:1;1526;1519:12;1481:52;1568:9;1555:23;1587:31;1612:5;1587:31;:::i;:::-;1637:5;-1:-1:-1;1694:2:1;1679:18;;1666:32;1707:33;1666:32;1707:33;:::i;:::-;1759:7;1749:17;;;1384:388;;;;;:::o;1777:456::-;1854:6;1862;1870;1923:2;1911:9;1902:7;1898:23;1894:32;1891:52;;;1939:1;1936;1929:12;1891:52;1978:9;1965:23;1997:31;2022:5;1997:31;:::i;:::-;2047:5;-1:-1:-1;2104:2:1;2089:18;;2076:32;2117:33;2076:32;2117:33;:::i;:::-;1777:456;;2169:7;;-1:-1:-1;;;2223:2:1;2208:18;;;;2195:32;;1777:456::o;2238:794::-;2333:6;2341;2349;2357;2410:3;2398:9;2389:7;2385:23;2381:33;2378:53;;;2427:1;2424;2417:12;2378:53;2466:9;2453:23;2485:31;2510:5;2485:31;:::i;:::-;2535:5;-1:-1:-1;2592:2:1;2577:18;;2564:32;2605:33;2564:32;2605:33;:::i;:::-;2657:7;-1:-1:-1;2711:2:1;2696:18;;2683:32;;-1:-1:-1;2766:2:1;2751:18;;2738:32;2793:18;2782:30;;2779:50;;;2825:1;2822;2815:12;2779:50;2848:22;;2901:4;2893:13;;2889:27;-1:-1:-1;2879:55:1;;2930:1;2927;2920:12;2879:55;2953:73;3018:7;3013:2;3000:16;2995:2;2991;2987:11;2953:73;:::i;:::-;2943:83;;;2238:794;;;;;;;:::o;3037:416::-;3102:6;3110;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;3218:9;3205:23;3237:31;3262:5;3237:31;:::i;:::-;3287:5;-1:-1:-1;3344:2:1;3329:18;;3316:32;3386:15;;3379:23;3367:36;;3357:64;;3417:1;3414;3407:12;3458:315;3526:6;3534;3587:2;3575:9;3566:7;3562:23;3558:32;3555:52;;;3603:1;3600;3593:12;3555:52;3642:9;3629:23;3661:31;3686:5;3661:31;:::i;:::-;3711:5;3763:2;3748:18;;;;3735:32;;-1:-1:-1;;;3458:315:1:o;3778:245::-;3836:6;3889:2;3877:9;3868:7;3864:23;3860:32;3857:52;;;3905:1;3902;3895:12;3857:52;3944:9;3931:23;3963:30;3987:5;3963:30;:::i;4028:249::-;4097:6;4150:2;4138:9;4129:7;4125:23;4121:32;4118:52;;;4166:1;4163;4156:12;4118:52;4198:9;4192:16;4217:30;4241:5;4217:30;:::i;4282:322::-;4351:6;4404:2;4392:9;4383:7;4379:23;4375:32;4372:52;;;4420:1;4417;4410:12;4372:52;4460:9;4447:23;4493:18;4485:6;4482:30;4479:50;;;4525:1;4522;4515:12;4479:50;4548;4590:7;4581:6;4570:9;4566:22;4548:50;:::i;4609:543::-;4697:6;4705;4758:2;4746:9;4737:7;4733:23;4729:32;4726:52;;;4774:1;4771;4764:12;4726:52;4814:9;4801:23;4843:18;4884:2;4876:6;4873:14;4870:34;;;4900:1;4897;4890:12;4870:34;4923:50;4965:7;4956:6;4945:9;4941:22;4923:50;:::i;:::-;4913:60;;5026:2;5015:9;5011:18;4998:32;4982:48;;5055:2;5045:8;5042:16;5039:36;;;5071:1;5068;5061:12;5039:36;;5094:52;5138:7;5127:8;5116:9;5112:24;5094:52;:::i;:::-;5084:62;;;4609:543;;;;;:::o;5157:180::-;5216:6;5269:2;5257:9;5248:7;5244:23;5240:32;5237:52;;;5285:1;5282;5275:12;5237:52;-1:-1:-1;5308:23:1;;5157:180;-1:-1:-1;5157:180:1:o;5342:257::-;5383:3;5421:5;5415:12;5448:6;5443:3;5436:19;5464:63;5520:6;5513:4;5508:3;5504:14;5497:4;5490:5;5486:16;5464:63;:::i;:::-;5581:2;5560:15;-1:-1:-1;;5556:29:1;5547:39;;;;5588:4;5543:50;;5342:257;-1:-1:-1;;5342:257:1:o;5604:185::-;5646:3;5684:5;5678:12;5699:52;5744:6;5739:3;5732:4;5725:5;5721:16;5699:52;:::i;:::-;5767:16;;;;;5604:185;-1:-1:-1;;5604:185:1:o;5794:1174::-;5970:3;5999:1;6032:6;6026:13;6062:3;6084:1;6112:9;6108:2;6104:18;6094:28;;6172:2;6161:9;6157:18;6194;6184:61;;6238:4;6230:6;6226:17;6216:27;;6184:61;6264:2;6312;6304:6;6301:14;6281:18;6278:38;6275:165;;;-1:-1:-1;;;6339:33:1;;6395:4;6392:1;6385:15;6425:4;6346:3;6413:17;6275:165;6456:18;6483:104;;;;6601:1;6596:320;;;;6449:467;;6483:104;-1:-1:-1;;6516:24:1;;6504:37;;6561:16;;;;-1:-1:-1;6483:104:1;;6596:320;15416:1;15409:14;;;15453:4;15440:18;;6691:1;6705:165;6719:6;6716:1;6713:13;6705:165;;;6797:14;;6784:11;;;6777:35;6840:16;;;;6734:10;;6705:165;;;6709:3;;6899:6;6894:3;6890:16;6883:23;;6449:467;;;;;;;6932:30;6958:3;6950:6;6932:30;:::i;:::-;6925:37;5794:1174;-1:-1:-1;;;;;5794:1174:1:o;7181:488::-;-1:-1:-1;;;;;7450:15:1;;;7432:34;;7502:15;;7497:2;7482:18;;7475:43;7549:2;7534:18;;7527:34;;;7597:3;7592:2;7577:18;;7570:31;;;7375:4;;7618:45;;7643:19;;7635:6;7618:45;:::i;:::-;7610:53;7181:488;-1:-1:-1;;;;;;7181:488:1:o;7866:219::-;8015:2;8004:9;7997:21;7978:4;8035:44;8075:2;8064:9;8060:18;8052:6;8035:44;:::i;8090:407::-;8292:2;8274:21;;;8331:2;8311:18;;;8304:30;8370:34;8365:2;8350:18;;8343:62;-1:-1:-1;;;8436:2:1;8421:18;;8414:41;8487:3;8472:19;;8090:407::o;8502:414::-;8704:2;8686:21;;;8743:2;8723:18;;;8716:30;8782:34;8777:2;8762:18;;8755:62;-1:-1:-1;;;8848:2:1;8833:18;;8826:48;8906:3;8891:19;;8502:414::o;14330:413::-;14532:2;14514:21;;;14571:2;14551:18;;;14544:30;14610:34;14605:2;14590:18;;14583:62;-1:-1:-1;;;14676:2:1;14661:18;;14654:47;14733:3;14718:19;;14330:413::o;15469:128::-;15509:3;15540:1;15536:6;15533:1;15530:13;15527:39;;;15546:18;;:::i;:::-;-1:-1:-1;15582:9:1;;15469:128::o;15602:120::-;15642:1;15668;15658:35;;15673:18;;:::i;:::-;-1:-1:-1;15707:9:1;;15602:120::o;15727:125::-;15767:4;15795:1;15792;15789:8;15786:34;;;15800:18;;:::i;:::-;-1:-1:-1;15837:9:1;;15727:125::o;15857:258::-;15929:1;15939:113;15953:6;15950:1;15947:13;15939:113;;;16029:11;;;16023:18;16010:11;;;16003:39;15975:2;15968:10;15939:113;;;16070:6;16067:1;16064:13;16061:48;;;-1:-1:-1;;16105:1:1;16087:16;;16080:27;15857:258::o;16120:380::-;16199:1;16195:12;;;;16242;;;16263:61;;16317:4;16309:6;16305:17;16295:27;;16263:61;16370:2;16362:6;16359:14;16339:18;16336:38;16333:161;;;16416:10;16411:3;16407:20;16404:1;16397:31;16451:4;16448:1;16441:15;16479:4;16476:1;16469:15;16333:161;;16120:380;;;:::o;16505:135::-;16544:3;-1:-1:-1;;16565:17:1;;16562:43;;;16585:18;;:::i;:::-;-1:-1:-1;16632:1:1;16621:13;;16505:135::o;16645:112::-;16677:1;16703;16693:35;;16708:18;;:::i;:::-;-1:-1:-1;16742:9:1;;16645:112::o;16762:127::-;16823:10;16818:3;16814:20;16811:1;16804:31;16854:4;16851:1;16844:15;16878:4;16875:1;16868:15;16894:127;16955:10;16950:3;16946:20;16943:1;16936:31;16986:4;16983:1;16976:15;17010:4;17007:1;17000:15;17026:127;17087:10;17082:3;17078:20;17075:1;17068:31;17118:4;17115:1;17108:15;17142:4;17139:1;17132:15;17158:127;17219:10;17214:3;17210:20;17207:1;17200:31;17250:4;17247:1;17240:15;17274:4;17271:1;17264:15;17290:131;-1:-1:-1;;;;;17365:31:1;;17355:42;;17345:70;;17411:1;17408;17401:12;17345:70;17290:131;:::o;17426:::-;-1:-1:-1;;;;;;17500:32:1;;17490:43;;17480:71;;17547:1;17544;17537:12

Swarm Source

ipfs://6afae34ad6f1760dee70349c4aa1c769a6ec503483367604728bc5c0ccb0d431
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.