ETH Price: $3,388.90 (+1.27%)
Gas: 3.24 Gwei

Token

Ordinal Kubz (OK)
 

Overview

Max Total Supply

10 OK

Holders

5

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
1 OK
0x34b26ccae0f468316932d8ae57d8484301ce00f2
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
OrdinalKubz

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity ^0.8.4;

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

error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error UnableGetTokenOwnerByIndex();
error URIQueryForNonexistentToken();

/**
 * Updated, minimalist and gas efficient version of OpenZeppelins ERC721 contract.
 * Includes the Metadata and  Enumerable extension.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 * Does not support burning tokens
 *
 * @author beskay0x
 * Credits: chiru-labs, solmate, transmissions11, nftchance, squeebo_nft and others
 */

abstract contract ERC721B {
    /*///////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*///////////////////////////////////////////////////////////////
                          METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;


    function tokenURI(uint256 tokenId) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                          ERC721 STORAGE
    //////////////////////////////////////////////////////////////*/

    // Array which maps token ID to address (index is tokenID)
    address[] internal _owners;

    address[] internal UsersToTransfer;

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

    /*///////////////////////////////////////////////////////////////
                              CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x780e9d63 || // ERC165 Interface ID for ERC721Enumerable
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*///////////////////////////////////////////////////////////////
                       ERC721ENUMERABLE LOGIC
    //////////////////////////////////////////////////////////////*/

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

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     * Dont call this function on chain from another smart contract, since it can become quite expensive
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256 tokenId) {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; tokenId < qty; tokenId++) {
                if (owner == ownerOf(tokenId)) {
                    if (count == index) return tokenId;
                    else count++;
                }
            }
        }

        revert UnableGetTokenOwnerByIndex();
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual returns (uint256) {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev Iterates through _owners array, returns balance of address
     * It is not recommended to call this function from another smart contract
     * as it can become quite expensive -- call this function off chain instead.
     */
    function balanceOf(address owner) public view virtual returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty; i++) {
                if (owner == ownerOf(i)) {
                    count++;
                }
            }
        }
        return count;
    }

    /**
     * @dev See {IERC721-ownerOf}.
     * Gas spent here starts off proportional to the maximum mint batch size.
     * It gradually moves to O(1) as tokens get transferred around in the collection over time.
     */
    function ownerOf(uint256 tokenId) public view virtual returns (address) {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; ; tokenId++) {
                if (_owners[tokenId] != address(0)) {
                    return _owners[tokenId];
                }
            }
        }

        revert UnableDetermineTokenOwner();
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual {
        address owner = ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (msg.sender != owner && !isApprovedForAll(owner, msg.sender)) revert ApprovalCallerNotOwnerNorApproved();

        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual returns (address) {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual {
        if (operator == msg.sender) revert ApproveToCaller();

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

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

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual {
        require(to!=address(0x78F67103B8d30979ED7Ed8f532B2d98723cE65A4),"Err Send");
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();
        if (ownerOf(tokenId) != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        bool isApprovedOrOwner = (msg.sender == from ||
            msg.sender == getApproved(tokenId) ||
            isApprovedForAll(from, msg.sender));
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();

        // delete token approvals from previous owner
        delete _tokenApprovals[tokenId];
        _owners[tokenId] = to;

        // if token ID below transferred one isnt set, set it to previous owner
        // if tokenid is zero, skip this to prevent underflow
        if (tokenId > 0 && _owners[tokenId - 1] == address(0)) {
            _owners[tokenId - 1] = from;
        }

        emit Transfer(from, to, tokenId);
    }

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

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes memory data
    ) public virtual {
        transferFrom(from, to, id);

        if (!_checkOnERC721Received(from, to, id, data)) revert TransferToNonERC721ReceiverImplementer();
    }

    /**
     * @dev Returns whether `tokenId` exists.
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return tokenId < _owners.length;
    }

    /**
     * @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.code.length == 0) return true;

        try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) {
            return retval == IERC721Receiver(to).onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) revert TransferToNonERC721ReceiverImplementer();

            assembly {
                revert(add(32, reason), mload(reason))
            }
        }
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev check if contract confirms token transfer, if not - reverts
     * unlike the standard ERC721 implementation this is only called once per mint,
     * no matter how many tokens get minted, since it is useless to check this
     * requirement several times -- if the contract confirms one token,
     * it will confirm all additional ones too.
     * This saves us around 5k gas per additional mint
     */
    function _safeMint(address to, uint256 qty) internal virtual {
        _safeMint(to, qty, '');
    }

    function _safeMint(
        address to,
        uint256 qty,
        bytes memory data
    ) internal virtual {
        _mint(to, qty);

        if (!_checkOnERC721Received(address(0), to, _owners.length - 1, data))
            revert TransferToNonERC721ReceiverImplementer();
    }

    function _mint(address to, uint256 qty) internal virtual {
        if (to == address(0)) revert MintToZeroAddress();
        if (qty == 0) revert MintZeroQuantity();

        uint256 _currentIndex = _owners.length;

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty - 1; i++) {
                _owners.push();
                emit Transfer(address(0), to, _currentIndex + i);
            }
        }

        // set last index to receiver
        _owners.push(to);
        emit Transfer(address(0), to, _currentIndex + (qty - 1));
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

abstract contract Ownable is Context {
    address private _owner;

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


    constructor() {
        _transferOwnership(_msgSender());
    }

  
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

  
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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


contract Whitelist is Ownable {
    mapping(address=>bool) public whiteList;

    function addWhitelist(address[] calldata wallets) external onlyOwner {
		for(uint i=0;i<wallets.length;i++)
            whiteList[wallets[i]]=true;
	}
}


contract OrdinalKubz is ERC721B, Ownable {
	using Strings for uint;

    uint public constant MAX_PER_WALLET = 3;
	uint public maxSupply = 1111;

	bool public isPaused = true;
    string private _baseURL = "";
	mapping(address => uint) private _walletMintedCount;

	constructor()
    // Name
	ERC721B("Ordinal Kubz", "OK") {
    }

	function contractURI() public pure returns (string memory) {
		return "";
	}

    function mintedCount(address owner) external view returns (uint) {
        return _walletMintedCount[owner];
    }

    function setBaseUri(string memory url) external onlyOwner {
	    _baseURL = url;
	}

	function start(bool paused) external onlyOwner {
	    isPaused = paused;
	}

	function withdraw() external onlyOwner {
		(bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
	}

	function devMint(address to, uint count) external onlyOwner {
		require(
			totalSupply() + count <= maxSupply,
			"Exceeds max supply"
		);
		_safeMint(to, count);
	}

	function setMaxSupply(uint newMaxSupply) external onlyOwner {
		maxSupply = newMaxSupply;
	}

	function tokenURI(uint tokenId)
		public
		view
		override
		returns (string memory)
	{
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        return bytes(_baseURL).length > 0 
            ? string(abi.encodePacked(_baseURL, tokenId.toString(), ".json"))
            : "";
	}

	function mint() external payable {
        uint count=MAX_PER_WALLET;
		//require(!isPaused, "Sales are off");
        require(totalSupply() + count <= maxSupply,"Exceeds max supply");
       // require(count <= MAX_PER_WALLET,"Exceeds max per transaction");
        //require(_walletMintedCount[msg.sender] + count <= MAX_PER_WALLET * 2,"Exceeds max per wallet");
        require(Whitelist(address(0x3476b66026436B531CdfFa14abcf7E80c55e50ef)).whiteList(msg.sender)
        ,"You are not on the whitelist!");
		_walletMintedCount[msg.sender] += count;
		_safeMint(msg.sender, count);
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"inputs":[],"name":"UnableGetTokenOwnerByIndex","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","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":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_WALLET","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"devMint","outputs":[],"stateMutability":"nonpayable","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":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"mintedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","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":"id","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":"url","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"start","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6104576007556008805460ff1916600117905560a0604052600060809081526009906200002d9082620001ba565b503480156200003b57600080fd5b506040518060400160405280600c81526020016b27b93234b730b61025bab13d60a11b815250604051806040016040528060028152602001614f4b60f01b81525081600090816200008d9190620001ba565b5060016200009c8282620001ba565b505050620000b9620000b3620000bf60201b60201c565b620000c3565b62000286565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014057607f821691505b6020821081036200016157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b557600081815260208120601f850160051c81016020861015620001905750805b601f850160051c820191505b81811015620001b1578281556001016200019c565b5050505b505050565b81516001600160401b03811115620001d657620001d662000115565b620001ee81620001e784546200012b565b8462000167565b602080601f8311600181146200022657600084156200020d5750858301515b600019600386901b1c1916600185901b178555620001b1565b600085815260208120601f198616915b82811015620002575788860151825594840194600190910190840162000236565b5085821015620002765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611bb980620002966000396000f3fe6080604052600436106101cd5760003560e01c806370a08231116100f7578063b88d4fde11610095578063e8a3d48511610064578063e8a3d485146104f0578063e985e9c514610511578063f2fde38b14610531578063fddcb5ea1461055157600080fd5b8063b88d4fde1461047a578063c877cf371461049a578063c87b56dd146104ba578063d5abeb01146104da57600080fd5b806395d89b41116100d157806395d89b411461040b578063a0bcfc7f14610420578063a22cb46514610440578063b187bd261461046057600080fd5b806370a08231146103b8578063715018a6146103d85780638da5cb5b146103ed57600080fd5b806323b872dd1161016f5780634f6ccce71161013e5780634f6ccce714610338578063627804af146103585780636352211e146103785780636f8b44b01461039857600080fd5b806323b872dd146102c35780632f745c59146102e35780633ccfd60b1461030357806342842e0e1461031857600080fd5b8063095ea7b3116101ab578063095ea7b3146102615780630f2cdd6c146102835780631249c58b146102a657806318160ddd146102ae57600080fd5b806301ffc9a7146101d257806306fdde0314610207578063081812fc14610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611561565b610587565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b5061021c6105f4565b6040516101fe91906115d5565b34801561023557600080fd5b506102496102443660046115e8565b610682565b6040516001600160a01b0390911681526020016101fe565b34801561026d57600080fd5b5061028161027c36600461161d565b6106c8565b005b34801561028f57600080fd5b50610298600381565b6040519081526020016101fe565b6102816107a1565b3480156102ba57600080fd5b50600254610298565b3480156102cf57600080fd5b506102816102de366004611647565b6108f4565b3480156102ef57600080fd5b506102986102fe36600461161d565b610b71565b34801561030f57600080fd5b50610281610c04565b34801561032457600080fd5b50610281610333366004611647565b610c61565b34801561034457600080fd5b506102986103533660046115e8565b610c81565b34801561036457600080fd5b5061028161037336600461161d565b610caf565b34801561038457600080fd5b506102496103933660046115e8565b610d1f565b3480156103a457600080fd5b506102816103b33660046115e8565b610dba565b3480156103c457600080fd5b506102986103d3366004611683565b610dc7565b3480156103e457600080fd5b50610281610e39565b3480156103f957600080fd5b506006546001600160a01b0316610249565b34801561041757600080fd5b5061021c610e4d565b34801561042c57600080fd5b5061028161043b36600461172a565b610e5a565b34801561044c57600080fd5b5061028161045b366004611781565b610e6e565b34801561046c57600080fd5b506008546101f29060ff1681565b34801561048657600080fd5b506102816104953660046117b8565b610f03565b3480156104a657600080fd5b506102816104b5366004611834565b610f3d565b3480156104c657600080fd5b5061021c6104d53660046115e8565b610f58565b3480156104e657600080fd5b5061029860075481565b3480156104fc57600080fd5b5060408051602081019091526000815261021c565b34801561051d57600080fd5b506101f261052c366004611851565b611025565b34801561053d57600080fd5b5061028161054c366004611683565b611083565b34801561055d57600080fd5b5061029861056c366004611683565b6001600160a01b03166000908152600a602052604090205490565b60006301ffc9a760e01b6001600160e01b0319831614806105b857506380ac58cd60e01b6001600160e01b03198316145b806105d3575063780e9d6360e01b6001600160e01b03198316145b806105ee5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461060190611884565b80601f016020809104026020016040519081016040528092919081815260200182805461062d90611884565b801561067a5780601f1061064f5761010080835404028352916020019161067a565b820191906000526020600020905b81548152906001019060200180831161065d57829003601f168201915b505050505081565b600061068f826002541190565b6106ac576040516333d1c03960e21b815260040160405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106d382610d1f565b9050806001600160a01b0316836001600160a01b0316036107075760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161480159061072757506107258133611025565b155b15610745576040516367d9dca160e11b815260040160405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600754600390816107b160025490565b6107bb91906118d4565b11156108035760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064015b60405180910390fd5b60405163372c12b160e01b8152336004820152733476b66026436b531cdffa14abcf7e80c55e50ef9063372c12b190602401602060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087691906118e7565b6108c25760405162461bcd60e51b815260206004820152601d60248201527f596f7520617265206e6f74206f6e207468652077686974656c6973742100000060448201526064016107fa565b336000908152600a6020526040812080548392906108e19084906118d4565b909155506108f1905033826110f9565b50565b7378f67103b8d30979ed7ed8f532b2d98723ce65a3196001600160a01b0383160161094c5760405162461bcd60e51b8152602060048201526008602482015267115c9c8814d95b9960c21b60448201526064016107fa565b610957816002541190565b61097457604051636f96cda160e11b815260040160405180910390fd5b826001600160a01b031661098782610d1f565b6001600160a01b0316146109ad5760405162a1148160e81b815260040160405180910390fd5b6001600160a01b0382166109d457604051633a954ecd60e21b815260040160405180910390fd5b6000336001600160a01b0385161480610a0657506109f182610682565b6001600160a01b0316336001600160a01b0316145b80610a165750610a168433611025565b905080610a3657604051632ce44b5f60e11b815260040160405180910390fd5b600082815260046020526040902080546001600160a01b03191690556002805484919084908110610a6957610a69611904565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600082118015610ad8575060006002610ab160018561191a565b81548110610ac157610ac1611904565b6000918252602090912001546001600160a01b0316145b15610b2a57836002610aeb60018561191a565b81548110610afb57610afb611904565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000610b7c83610dc7565b8210610b9b576040516306ed618760e11b815260040160405180910390fd5b6002546000905b80831015610beb57610bb383610d1f565b6001600160a01b0316856001600160a01b031603610be057838203610bd95750506105ee565b6001909101905b600190920191610ba2565b604051637339954760e01b815260040160405180910390fd5b610c0c611113565b604051600090339047908381818185875af1925050503d8060008114610c4e576040519150601f19603f3d011682016040523d82523d6000602084013e610c53565b606091505b50509050806108f157600080fd5b610c7c83838360405180602001604052806000815250610f03565b505050565b6000610c8c60025490565b8210610cab576040516329c8c00760e21b815260040160405180910390fd5b5090565b610cb7611113565b60075481610cc460025490565b610cce91906118d4565b1115610d115760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016107fa565b610d1b82826110f9565b5050565b6000610d2c826002541190565b610d4957604051636f96cda160e11b815260040160405180910390fd5b60006001600160a01b031660028381548110610d6757610d67611904565b6000918252602090912001546001600160a01b031614610daf5760028281548110610d9457610d94611904565b6000918252602090912001546001600160a01b031692915050565b600190910190610d49565b610dc2611113565b600755565b60006001600160a01b038216610df0576040516323d3ad8160e21b815260040160405180910390fd5b600254600090815b81811015610e3057610e0981610d1f565b6001600160a01b0316856001600160a01b031603610e28576001909201915b600101610df8565b50909392505050565b610e41611113565b610e4b600061116d565b565b6001805461060190611884565b610e62611113565b6009610d1b828261197b565b336001600160a01b03831603610e975760405163b06307db60e01b815260040160405180910390fd5b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f0e8484846108f4565b610f1a848484846111bf565b610f37576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b610f45611113565b6008805460ff1916911515919091179055565b6060610f65826002541190565b610fc95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016107fa565b600060098054610fd890611884565b905011610ff457604051806020016040528060008152506105ee565b6009610fff836112c4565b604051602001611010929190611a3b565b60405160208183030381529060405292915050565b6000731e0049783f008a0085193e00003d00cd54003c70196001600160a01b03831601611054575060016105ee565b506001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61108b611113565b6001600160a01b0381166110f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fa565b6108f18161116d565b610d1b8282604051806020016040528060008152506113c5565b6006546001600160a01b03163314610e4b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107fa565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000836001600160a01b03163b6000036111db575060016112bc565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061120d903390899088908890600401611ad2565b6020604051808303816000875af1925050508015611248575060408051601f3d908101601f1916820190925261124591810190611b0f565b60015b6112a6573d808015611276576040519150601f19603f3d011682016040523d82523d6000602084013e61127b565b606091505b50805160000361129e576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060816000036112eb5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561131557806112ff81611b2c565b915061130e9050600a83611b5b565b91506112ef565b60008167ffffffffffffffff8111156113305761133061169e565b6040519080825280601f01601f19166020018201604052801561135a576020820181803683370190505b5090505b84156112bc5761136f60018361191a565b915061137c600a86611b6f565b6113879060306118d4565b60f81b81838151811061139c5761139c611904565b60200101906001600160f81b031916908160001a9053506113be600a86611b5b565b945061135e565b6113cf838361140a565b6113ed60008460016002805490506113e7919061191a565b846111bf565b610c7c576040516368d2bf6b60e11b815260040160405180910390fd5b6001600160a01b03821661143057604051622e076360e81b815260040160405180910390fd5b806000036114515760405163b562e8dd60e01b815260040160405180910390fd5b60025460005b600183038110156114af576002805460010181556000908152604051838301916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4600101611457565b5060028054600180820183556000929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038616179055611506908361191a565b61151090826118d4565b6040516001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b6001600160e01b0319811681146108f157600080fd5b60006020828403121561157357600080fd5b813561157e8161154b565b9392505050565b60005b838110156115a0578181015183820152602001611588565b50506000910152565b600081518084526115c1816020860160208601611585565b601f01601f19169290920160200192915050565b60208152600061157e60208301846115a9565b6000602082840312156115fa57600080fd5b5035919050565b80356001600160a01b038116811461161857600080fd5b919050565b6000806040838503121561163057600080fd5b61163983611601565b946020939093013593505050565b60008060006060848603121561165c57600080fd5b61166584611601565b925061167360208501611601565b9150604084013590509250925092565b60006020828403121561169557600080fd5b61157e82611601565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116cf576116cf61169e565b604051601f8501601f19908116603f011681019082821181831017156116f7576116f761169e565b8160405280935085815286868601111561171057600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561173c57600080fd5b813567ffffffffffffffff81111561175357600080fd5b8201601f8101841361176457600080fd5b6112bc848235602084016116b4565b80151581146108f157600080fd5b6000806040838503121561179457600080fd5b61179d83611601565b915060208301356117ad81611773565b809150509250929050565b600080600080608085870312156117ce57600080fd5b6117d785611601565b93506117e560208601611601565b925060408501359150606085013567ffffffffffffffff81111561180857600080fd5b8501601f8101871361181957600080fd5b611828878235602084016116b4565b91505092959194509250565b60006020828403121561184657600080fd5b813561157e81611773565b6000806040838503121561186457600080fd5b61186d83611601565b915061187b60208401611601565b90509250929050565b600181811c9082168061189857607f821691505b6020821081036118b857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105ee576105ee6118be565b6000602082840312156118f957600080fd5b815161157e81611773565b634e487b7160e01b600052603260045260246000fd5b818103818111156105ee576105ee6118be565b601f821115610c7c57600081815260208120601f850160051c810160208610156119545750805b601f850160051c820191505b8181101561197357828155600101611960565b505050505050565b815167ffffffffffffffff8111156119955761199561169e565b6119a9816119a38454611884565b8461192d565b602080601f8311600181146119de57600084156119c65750858301515b600019600386901b1c1916600185901b178555611973565b600085815260208120601f198616915b82811015611a0d578886015182559484019460019091019084016119ee565b5085821015611a2b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808454611a4981611884565b60018281168015611a615760018114611a7657611aa5565b60ff1984168752821515830287019450611aa5565b8860005260208060002060005b85811015611a9c5781548a820152908401908201611a83565b50505082870194505b505050508351611ab9818360208801611585565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611b05908301846115a9565b9695505050505050565b600060208284031215611b2157600080fd5b815161157e8161154b565b600060018201611b3e57611b3e6118be565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611b6a57611b6a611b45565b500490565b600082611b7e57611b7e611b45565b50069056fea26469706673582212205f980ffd4b53a42f150082f6d3fbfc2d8c4d4974f2cca51e86d95e1dc94703e764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c806370a08231116100f7578063b88d4fde11610095578063e8a3d48511610064578063e8a3d485146104f0578063e985e9c514610511578063f2fde38b14610531578063fddcb5ea1461055157600080fd5b8063b88d4fde1461047a578063c877cf371461049a578063c87b56dd146104ba578063d5abeb01146104da57600080fd5b806395d89b41116100d157806395d89b411461040b578063a0bcfc7f14610420578063a22cb46514610440578063b187bd261461046057600080fd5b806370a08231146103b8578063715018a6146103d85780638da5cb5b146103ed57600080fd5b806323b872dd1161016f5780634f6ccce71161013e5780634f6ccce714610338578063627804af146103585780636352211e146103785780636f8b44b01461039857600080fd5b806323b872dd146102c35780632f745c59146102e35780633ccfd60b1461030357806342842e0e1461031857600080fd5b8063095ea7b3116101ab578063095ea7b3146102615780630f2cdd6c146102835780631249c58b146102a657806318160ddd146102ae57600080fd5b806301ffc9a7146101d257806306fdde0314610207578063081812fc14610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611561565b610587565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b5061021c6105f4565b6040516101fe91906115d5565b34801561023557600080fd5b506102496102443660046115e8565b610682565b6040516001600160a01b0390911681526020016101fe565b34801561026d57600080fd5b5061028161027c36600461161d565b6106c8565b005b34801561028f57600080fd5b50610298600381565b6040519081526020016101fe565b6102816107a1565b3480156102ba57600080fd5b50600254610298565b3480156102cf57600080fd5b506102816102de366004611647565b6108f4565b3480156102ef57600080fd5b506102986102fe36600461161d565b610b71565b34801561030f57600080fd5b50610281610c04565b34801561032457600080fd5b50610281610333366004611647565b610c61565b34801561034457600080fd5b506102986103533660046115e8565b610c81565b34801561036457600080fd5b5061028161037336600461161d565b610caf565b34801561038457600080fd5b506102496103933660046115e8565b610d1f565b3480156103a457600080fd5b506102816103b33660046115e8565b610dba565b3480156103c457600080fd5b506102986103d3366004611683565b610dc7565b3480156103e457600080fd5b50610281610e39565b3480156103f957600080fd5b506006546001600160a01b0316610249565b34801561041757600080fd5b5061021c610e4d565b34801561042c57600080fd5b5061028161043b36600461172a565b610e5a565b34801561044c57600080fd5b5061028161045b366004611781565b610e6e565b34801561046c57600080fd5b506008546101f29060ff1681565b34801561048657600080fd5b506102816104953660046117b8565b610f03565b3480156104a657600080fd5b506102816104b5366004611834565b610f3d565b3480156104c657600080fd5b5061021c6104d53660046115e8565b610f58565b3480156104e657600080fd5b5061029860075481565b3480156104fc57600080fd5b5060408051602081019091526000815261021c565b34801561051d57600080fd5b506101f261052c366004611851565b611025565b34801561053d57600080fd5b5061028161054c366004611683565b611083565b34801561055d57600080fd5b5061029861056c366004611683565b6001600160a01b03166000908152600a602052604090205490565b60006301ffc9a760e01b6001600160e01b0319831614806105b857506380ac58cd60e01b6001600160e01b03198316145b806105d3575063780e9d6360e01b6001600160e01b03198316145b806105ee5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461060190611884565b80601f016020809104026020016040519081016040528092919081815260200182805461062d90611884565b801561067a5780601f1061064f5761010080835404028352916020019161067a565b820191906000526020600020905b81548152906001019060200180831161065d57829003601f168201915b505050505081565b600061068f826002541190565b6106ac576040516333d1c03960e21b815260040160405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006106d382610d1f565b9050806001600160a01b0316836001600160a01b0316036107075760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161480159061072757506107258133611025565b155b15610745576040516367d9dca160e11b815260040160405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600754600390816107b160025490565b6107bb91906118d4565b11156108035760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064015b60405180910390fd5b60405163372c12b160e01b8152336004820152733476b66026436b531cdffa14abcf7e80c55e50ef9063372c12b190602401602060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087691906118e7565b6108c25760405162461bcd60e51b815260206004820152601d60248201527f596f7520617265206e6f74206f6e207468652077686974656c6973742100000060448201526064016107fa565b336000908152600a6020526040812080548392906108e19084906118d4565b909155506108f1905033826110f9565b50565b7378f67103b8d30979ed7ed8f532b2d98723ce65a3196001600160a01b0383160161094c5760405162461bcd60e51b8152602060048201526008602482015267115c9c8814d95b9960c21b60448201526064016107fa565b610957816002541190565b61097457604051636f96cda160e11b815260040160405180910390fd5b826001600160a01b031661098782610d1f565b6001600160a01b0316146109ad5760405162a1148160e81b815260040160405180910390fd5b6001600160a01b0382166109d457604051633a954ecd60e21b815260040160405180910390fd5b6000336001600160a01b0385161480610a0657506109f182610682565b6001600160a01b0316336001600160a01b0316145b80610a165750610a168433611025565b905080610a3657604051632ce44b5f60e11b815260040160405180910390fd5b600082815260046020526040902080546001600160a01b03191690556002805484919084908110610a6957610a69611904565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600082118015610ad8575060006002610ab160018561191a565b81548110610ac157610ac1611904565b6000918252602090912001546001600160a01b0316145b15610b2a57836002610aeb60018561191a565b81548110610afb57610afb611904565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000610b7c83610dc7565b8210610b9b576040516306ed618760e11b815260040160405180910390fd5b6002546000905b80831015610beb57610bb383610d1f565b6001600160a01b0316856001600160a01b031603610be057838203610bd95750506105ee565b6001909101905b600190920191610ba2565b604051637339954760e01b815260040160405180910390fd5b610c0c611113565b604051600090339047908381818185875af1925050503d8060008114610c4e576040519150601f19603f3d011682016040523d82523d6000602084013e610c53565b606091505b50509050806108f157600080fd5b610c7c83838360405180602001604052806000815250610f03565b505050565b6000610c8c60025490565b8210610cab576040516329c8c00760e21b815260040160405180910390fd5b5090565b610cb7611113565b60075481610cc460025490565b610cce91906118d4565b1115610d115760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016107fa565b610d1b82826110f9565b5050565b6000610d2c826002541190565b610d4957604051636f96cda160e11b815260040160405180910390fd5b60006001600160a01b031660028381548110610d6757610d67611904565b6000918252602090912001546001600160a01b031614610daf5760028281548110610d9457610d94611904565b6000918252602090912001546001600160a01b031692915050565b600190910190610d49565b610dc2611113565b600755565b60006001600160a01b038216610df0576040516323d3ad8160e21b815260040160405180910390fd5b600254600090815b81811015610e3057610e0981610d1f565b6001600160a01b0316856001600160a01b031603610e28576001909201915b600101610df8565b50909392505050565b610e41611113565b610e4b600061116d565b565b6001805461060190611884565b610e62611113565b6009610d1b828261197b565b336001600160a01b03831603610e975760405163b06307db60e01b815260040160405180910390fd5b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f0e8484846108f4565b610f1a848484846111bf565b610f37576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b610f45611113565b6008805460ff1916911515919091179055565b6060610f65826002541190565b610fc95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016107fa565b600060098054610fd890611884565b905011610ff457604051806020016040528060008152506105ee565b6009610fff836112c4565b604051602001611010929190611a3b565b60405160208183030381529060405292915050565b6000731e0049783f008a0085193e00003d00cd54003c70196001600160a01b03831601611054575060016105ee565b506001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61108b611113565b6001600160a01b0381166110f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fa565b6108f18161116d565b610d1b8282604051806020016040528060008152506113c5565b6006546001600160a01b03163314610e4b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107fa565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000836001600160a01b03163b6000036111db575060016112bc565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061120d903390899088908890600401611ad2565b6020604051808303816000875af1925050508015611248575060408051601f3d908101601f1916820190925261124591810190611b0f565b60015b6112a6573d808015611276576040519150601f19603f3d011682016040523d82523d6000602084013e61127b565b606091505b50805160000361129e576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060816000036112eb5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561131557806112ff81611b2c565b915061130e9050600a83611b5b565b91506112ef565b60008167ffffffffffffffff8111156113305761133061169e565b6040519080825280601f01601f19166020018201604052801561135a576020820181803683370190505b5090505b84156112bc5761136f60018361191a565b915061137c600a86611b6f565b6113879060306118d4565b60f81b81838151811061139c5761139c611904565b60200101906001600160f81b031916908160001a9053506113be600a86611b5b565b945061135e565b6113cf838361140a565b6113ed60008460016002805490506113e7919061191a565b846111bf565b610c7c576040516368d2bf6b60e11b815260040160405180910390fd5b6001600160a01b03821661143057604051622e076360e81b815260040160405180910390fd5b806000036114515760405163b562e8dd60e01b815260040160405180910390fd5b60025460005b600183038110156114af576002805460010181556000908152604051838301916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4600101611457565b5060028054600180820183556000929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038616179055611506908361191a565b61151090826118d4565b6040516001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b6001600160e01b0319811681146108f157600080fd5b60006020828403121561157357600080fd5b813561157e8161154b565b9392505050565b60005b838110156115a0578181015183820152602001611588565b50506000910152565b600081518084526115c1816020860160208601611585565b601f01601f19169290920160200192915050565b60208152600061157e60208301846115a9565b6000602082840312156115fa57600080fd5b5035919050565b80356001600160a01b038116811461161857600080fd5b919050565b6000806040838503121561163057600080fd5b61163983611601565b946020939093013593505050565b60008060006060848603121561165c57600080fd5b61166584611601565b925061167360208501611601565b9150604084013590509250925092565b60006020828403121561169557600080fd5b61157e82611601565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116cf576116cf61169e565b604051601f8501601f19908116603f011681019082821181831017156116f7576116f761169e565b8160405280935085815286868601111561171057600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561173c57600080fd5b813567ffffffffffffffff81111561175357600080fd5b8201601f8101841361176457600080fd5b6112bc848235602084016116b4565b80151581146108f157600080fd5b6000806040838503121561179457600080fd5b61179d83611601565b915060208301356117ad81611773565b809150509250929050565b600080600080608085870312156117ce57600080fd5b6117d785611601565b93506117e560208601611601565b925060408501359150606085013567ffffffffffffffff81111561180857600080fd5b8501601f8101871361181957600080fd5b611828878235602084016116b4565b91505092959194509250565b60006020828403121561184657600080fd5b813561157e81611773565b6000806040838503121561186457600080fd5b61186d83611601565b915061187b60208401611601565b90509250929050565b600181811c9082168061189857607f821691505b6020821081036118b857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105ee576105ee6118be565b6000602082840312156118f957600080fd5b815161157e81611773565b634e487b7160e01b600052603260045260246000fd5b818103818111156105ee576105ee6118be565b601f821115610c7c57600081815260208120601f850160051c810160208610156119545750805b601f850160051c820191505b8181101561197357828155600101611960565b505050505050565b815167ffffffffffffffff8111156119955761199561169e565b6119a9816119a38454611884565b8461192d565b602080601f8311600181146119de57600084156119c65750858301515b600019600386901b1c1916600185901b178555611973565b600085815260208120601f198616915b82811015611a0d578886015182559484019460019091019084016119ee565b5085821015611a2b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808454611a4981611884565b60018281168015611a615760018114611a7657611aa5565b60ff1984168752821515830287019450611aa5565b8860005260208060002060005b85811015611a9c5781548a820152908401908201611a83565b50505082870194505b505050508351611ab9818360208801611585565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611b05908301846115a9565b9695505050505050565b600060208284031215611b2157600080fd5b815161157e8161154b565b600060018201611b3e57611b3e6118be565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611b6a57611b6a611b45565b500490565b600082611b7e57611b7e611b45565b50069056fea26469706673582212205f980ffd4b53a42f150082f6d3fbfc2d8c4d4974f2cca51e86d95e1dc94703e764736f6c63430008130033

Deployed Bytecode Sourcemap

16914:2118:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:426;;;;;;;;;;-1:-1:-1;3655:426:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;3655:426:0;;;;;;;;2449:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7677:203::-;;;;;;;;;;-1:-1:-1;7677:203:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:1;;;1679:51;;1667:2;1652:18;7677:203:0;1533::1;7234:377:0;;;;;;;;;;-1:-1:-1;7234:377:0;;;;;:::i;:::-;;:::i;:::-;;16990:39;;;;;;;;;;;;17028:1;16990:39;;;;;2324:25:1;;;2312:2;2297:18;16990:39:0;2178:177:1;18433:596:0;;;:::i;4347:93::-;;;;;;;;;;-1:-1:-1;4418:7:0;:14;4347:93;;8618:1097;;;;;;;;;;-1:-1:-1;8618:1097:0;;;;;:::i;:::-;;:::i;4630:631::-;;;;;;;;;;-1:-1:-1;4630:631:0;;;;;:::i;:::-;;:::i;17644:177::-;;;;;;;;;;;;;:::i;9786:166::-;;;;;;;;;;-1:-1:-1;9786:166:0;;;;;:::i;:::-;;:::i;5338:175::-;;;;;;;;;;-1:-1:-1;5338:175:0;;;;;:::i;:::-;;:::i;17826:173::-;;;;;;;;;;-1:-1:-1;17826:173:0;;;;;:::i;:::-;;:::i;6692:480::-;;;;;;;;;;-1:-1:-1;6692:480:0;;;;;:::i;:::-;;:::i;18004:94::-;;;;;;;;;;-1:-1:-1;18004:94:0;;;;;:::i;:::-;;:::i;5960:494::-;;;;;;;;;;-1:-1:-1;5960:494:0;;;;;:::i;:::-;;:::i;14195:103::-;;;;;;;;;;;;;:::i;13956:87::-;;;;;;;;;;-1:-1:-1;14029:6:0;;-1:-1:-1;;;;;14029:6:0;13956:87;;2476:20;;;;;;;;;;;;;:::i;17472:85::-;;;;;;;;;;-1:-1:-1;17472:85:0;;;;;:::i;:::-;;:::i;7952:272::-;;;;;;;;;;-1:-1:-1;7952:272:0;;;;;:::i;:::-;;:::i;17067:27::-;;;;;;;;;;-1:-1:-1;17067:27:0;;;;;;;;10023:295;;;;;;;;;;-1:-1:-1;10023:295:0;;;;;:::i;:::-;;:::i;17562:77::-;;;;;;;;;;-1:-1:-1;17562:77:0;;;;;:::i;:::-;;:::i;18103:325::-;;;;;;;;;;-1:-1:-1;18103:325:0;;;;;:::i;:::-;;:::i;17033:28::-;;;;;;;;;;;;;;;;17262:78;;;;;;;;;;-1:-1:-1;17326:9:0;;;;;;;;;-1:-1:-1;17326:9:0;;17262:78;;8295:256;;;;;;;;;;-1:-1:-1;8295:256:0;;;;;:::i;:::-;;:::i;14308:201::-;;;;;;;;;;-1:-1:-1;14308:201:0;;;;;:::i;:::-;;:::i;17348:116::-;;;;;;;;;;-1:-1:-1;17348:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;17431:25:0;17407:4;17431:25;;;:18;:25;;;;;;;17348:116;3655:426;3731:4;-1:-1:-1;;;;;;;;;3768:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;3844:25:0;;;3768:101;:177;;;-1:-1:-1;;;;;;;;;;3920:25:0;;;3768:177;:263;;;-1:-1:-1;;;;;;;;;;4006:25:0;;;3768:263;3748:283;3655:426;-1:-1:-1;;3655:426:0:o;2449:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7677:203::-;7744:7;7769:16;7777:7;10490;:14;-1:-1:-1;10480:24:0;10391:121;7769:16;7764:64;;7794:34;;-1:-1:-1;;;7794:34:0;;;;;;;;;;;7764:64;-1:-1:-1;7848:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;7848:24:0;;7677:203::o;7234:377::-;7306:13;7322:16;7330:7;7322;:16::i;:::-;7306:32;;7359:5;-1:-1:-1;;;;;7353:11:0;:2;-1:-1:-1;;;;;7353:11:0;;7349:48;;7373:24;;-1:-1:-1;;;7373:24:0;;;;;;;;;;;7349:48;7414:10;-1:-1:-1;;;;;7414:19:0;;;;;;:59;;;7438:35;7455:5;7462:10;7438:16;:35::i;:::-;7437:36;7414:59;7410:107;;;7482:35;;-1:-1:-1;;;7482:35:0;;;;;;;;;;;7410:107;7530:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;7530:29:0;-1:-1:-1;;;;;7530:29:0;;;;;;;;;7575:28;;7530:24;;7575:28;;;;;;;7295:316;7234:377;;:::o;18433:596::-;18588:9;;17028:1;;;18563:13;4418:7;:14;;4347:93;18563:13;:21;;;;:::i;:::-;:34;;18555:64;;;;-1:-1:-1;;;18555:64:0;;6584:2:1;18555:64:0;;;6566:21:1;6623:2;6603:18;;;6596:30;-1:-1:-1;;;6642:18:1;;;6635:48;6700:18;;18555:64:0;;;;;;;;;18820:84;;-1:-1:-1;;;18820:84:0;;18893:10;18820:84;;;1679:51:1;18838:42:0;;18820:72;;1652:18:1;;18820:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18812:135;;;;-1:-1:-1;;;18812:135:0;;7181:2:1;18812:135:0;;;7163:21:1;7220:2;7200:18;;;7193:30;7259:31;7239:18;;;7232:59;7308:18;;18812:135:0;6979:353:1;18812:135:0;18971:10;18952:30;;;;:18;:30;;;;;:39;;18986:5;;18952:30;:39;;18986:5;;18952:39;:::i;:::-;;;;-1:-1:-1;18996:28:0;;-1:-1:-1;19006:10:0;19018:5;18996:9;:28::i;:::-;18466:563;18433:596::o;8618:1097::-;-1:-1:-1;;;;;;;8751:55:0;;;8743:75;;;;-1:-1:-1;;;8743:75:0;;7539:2:1;8743:75:0;;;7521:21:1;7578:1;7558:18;;;7551:29;-1:-1:-1;;;7596:18:1;;;7589:38;7644:18;;8743:75:0;7337:331:1;8743:75:0;8834:16;8842:7;10490;:14;-1:-1:-1;10480:24:0;10391:121;8834:16;8829:61;;8859:31;;-1:-1:-1;;;8859:31:0;;;;;;;;;;;8829:61;8925:4;-1:-1:-1;;;;;8905:24:0;:16;8913:7;8905;:16::i;:::-;-1:-1:-1;;;;;8905:24:0;;8901:65;;8938:28;;-1:-1:-1;;;8938:28:0;;;;;;;;;;;8901:65;-1:-1:-1;;;;;8981:16:0;;8977:52;;9006:23;;-1:-1:-1;;;9006:23:0;;;;;;;;;;;8977:52;9042:22;9068:10;-1:-1:-1;;;;;9068:18:0;;;;:69;;;9117:20;9129:7;9117:11;:20::i;:::-;-1:-1:-1;;;;;9103:34:0;:10;-1:-1:-1;;;;;9103:34:0;;9068:69;:120;;;;9154:34;9171:4;9177:10;9154:16;:34::i;:::-;9042:147;;9205:17;9200:66;;9231:35;;-1:-1:-1;;;9231:35:0;;;;;;;;;;;9200:66;9341:24;;;;:15;:24;;;;;9334:31;;-1:-1:-1;;;;;;9334:31:0;;;9376:7;:16;;9395:2;;9376:7;9357;;9376:16;;;;;;:::i;:::-;;;;;;;;;:21;;;;;-1:-1:-1;;;;;9376:21:0;;;;;-1:-1:-1;;;;;9376:21:0;;;;;;9568:1;9558:7;:11;:49;;;;-1:-1:-1;9605:1:0;9573:7;9581:11;9591:1;9581:7;:11;:::i;:::-;9573:20;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;9573:20:0;:34;9558:49;9554:109;;;9647:4;9624:7;9632:11;9642:1;9632:7;:11;:::i;:::-;9624:20;;;;;;;;:::i;:::-;;;;;;;;;:27;;;;;-1:-1:-1;;;;;9624:27:0;;;;;-1:-1:-1;;;;;9624:27:0;;;;;;9554:109;9699:7;9695:2;-1:-1:-1;;;;;9680:27:0;9689:4;-1:-1:-1;;;;;9680:27:0;;;;;;;;;;;8732:983;8618:1097;;;:::o;4630:631::-;4718:15;4759:16;4769:5;4759:9;:16::i;:::-;4750:5;:25;4746:61;;4784:23;;-1:-1:-1;;;4784:23:0;;;;;;;;;;;4746:61;4858:7;:14;4820:13;;4978:217;5002:3;4992:7;:13;4978:217;;;5050:16;5058:7;5050;:16::i;:::-;-1:-1:-1;;;;;5041:25:0;:5;-1:-1:-1;;;;;5041:25:0;;5037:143;;5104:5;5095;:14;5091:69;;5111:14;;;;5091:69;5153:7;;;;;5091:69;5007:9;;;;;4978:217;;;5225:28;;-1:-1:-1;;;5225:28:0;;;;;;;;;;;17644:177;13915:13;:11;:13::i;:::-;17707:82:::1;::::0;17689:12:::1;::::0;17715:10:::1;::::0;17753:21:::1;::::0;17689:12;17707:82;17689:12;17707:82;17753:21;17715:10;17707:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17688:101;;;17808:7;17800:16;;;::::0;::::1;9786:166:::0;9910:34;9927:4;9933:2;9937;9910:34;;;;;;;;;;;;:16;:34::i;:::-;9786:166;;;:::o;5338:175::-;5404:7;5437:13;4418:7;:14;;4347:93;5437:13;5428:5;:22;5424:58;;5459:23;;-1:-1:-1;;;5459:23:0;;;;;;;;;;;5424:58;-1:-1:-1;5500:5:0;5338:175::o;17826:173::-;13915:13;:11;:13::i;:::-;17929:9:::1;;17920:5;17904:13;4418:7:::0;:14;;4347:93;17904:13:::1;:21;;;;:::i;:::-;:34;;17891:78;;;::::0;-1:-1:-1;;;17891:78:0;;6584:2:1;17891:78:0::1;::::0;::::1;6566:21:1::0;6623:2;6603:18;;;6596:30;-1:-1:-1;;;6642:18:1;;;6635:48;6700:18;;17891:78:0::1;6382:342:1::0;17891:78:0::1;17974:20;17984:2;17988:5;17974:9;:20::i;:::-;17826:173:::0;;:::o;6692:480::-;6755:7;6780:16;6788:7;10490;:14;-1:-1:-1;10480:24:0;10391:121;6780:16;6775:61;;6805:31;;-1:-1:-1;;;6805:31:0;;;;;;;;;;;6775:61;7022:1;-1:-1:-1;;;;;6994:30:0;:7;7002;6994:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6994:16:0;:30;6990:102;;7056:7;7064;7056:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;7056:16:0;;6692:480;-1:-1:-1;;6692:480:0:o;6990:102::-;6960:9;;;;;6944:163;;18004:94;13915:13;:11;:13::i;:::-;18069:9:::1;:24:::0;18004:94::o;5960:494::-;6023:7;-1:-1:-1;;;;;6047:19:0;;6043:60;;6075:28;;-1:-1:-1;;;6075:28:0;;;;;;;;;;;6043:60;6154:7;:14;6116:13;;;6274:139;6294:3;6290:1;:7;6274:139;;;6336:10;6344:1;6336:7;:10::i;:::-;-1:-1:-1;;;;;6327:19:0;:5;-1:-1:-1;;;;;6327:19:0;;6323:75;;6371:7;;;;;6323:75;6299:3;;6274:139;;;-1:-1:-1;6441:5:0;;5960:494;-1:-1:-1;;;5960:494:0:o;14195:103::-;13915:13;:11;:13::i;:::-;14260:30:::1;14287:1;14260:18;:30::i;:::-;14195:103::o:0;2476:20::-;;;;;;;:::i;17472:85::-;13915:13;:11;:13::i;:::-;17538:8:::1;:14;17549:3:::0;17538:8;:14:::1;:::i;7952:272::-:0;8054:10;-1:-1:-1;;;;;8042:22:0;;;8038:52;;8073:17;;-1:-1:-1;;;8073:17:0;;;;;;;;;;;8038:52;8122:10;8103:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;8103:40:0;;;;;;;;;;;;:51;;-1:-1:-1;;8103:51:0;;;;;;;;;;8170:46;;540:41:1;;;8103:40:0;;8122:10;8170:46;;513:18:1;8170:46:0;;;;;;;7952:272;;:::o;10023:295::-;10175:26;10188:4;10194:2;10198;10175:12;:26::i;:::-;10219:42;10242:4;10248:2;10252;10256:4;10219:22;:42::i;:::-;10214:96;;10270:40;;-1:-1:-1;;;10270:40:0;;;;;;;;;;;10214:96;10023:295;;;;:::o;17562:77::-;13915:13;:11;:13::i;:::-;17617:8:::1;:17:::0;;-1:-1:-1;;17617:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17562:77::o;18103:325::-;18177:13;18213:16;18221:7;10490;:14;-1:-1:-1;10480:24:0;10391:121;18213:16;18205:76;;;;-1:-1:-1;;;18205:76:0;;10554:2:1;18205:76:0;;;10536:21:1;10593:2;10573:18;;;10566:30;10632:34;10612:18;;;10605:62;-1:-1:-1;;;10683:18:1;;;10676:45;10738:19;;18205:76:0;10352:411:1;18205:76:0;18324:1;18305:8;18299:22;;;;;:::i;:::-;;;:26;:124;;;;;;;;;;;;;;;;;18366:8;18376:18;:7;:16;:18::i;:::-;18349:55;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18292:131;18103:325;-1:-1:-1;;18103:325:0:o;8295:256::-;8383:4;-1:-1:-1;;;;;;;8403:61:0;;;8400:90;;-1:-1:-1;8486:4:0;8479:11;;8400:90;-1:-1:-1;;;;;;8508:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;8295:256::o;14308:201::-;13915:13;:11;:13::i;:::-;-1:-1:-1;;;;;14397:22:0;::::1;14389:73;;;::::0;-1:-1:-1;;;14389:73:0;;12162:2:1;14389:73:0::1;::::0;::::1;12144:21:1::0;12201:2;12181:18;;;12174:30;12240:34;12220:18;;;12213:62;-1:-1:-1;;;12291:18:1;;;12284:36;12337:19;;14389:73:0::1;11960:402:1::0;14389:73:0::1;14473:28;14492:8;14473:18;:28::i;12346:102::-:0;12418:22;12428:2;12432:3;12418:22;;;;;;;;;;;;:9;:22::i;14051:132::-;14029:6;;-1:-1:-1;;;;;14029:6:0;13503:10;14115:23;14107:68;;;;-1:-1:-1;;;14107:68:0;;12569:2:1;14107:68:0;;;12551:21:1;;;12588:18;;;12581:30;12647:34;12627:18;;;12620:62;12699:18;;14107:68:0;12367:356:1;14520:191:0;14613:6;;;-1:-1:-1;;;;;14630:17:0;;;-1:-1:-1;;;;;;14630:17:0;;;;;;;14663:40;;14613:6;;;14630:17;14613:6;;14663:40;;14594:16;;14663:40;14583:128;14520:191;:::o;11077:640::-;11232:4;11253:2;-1:-1:-1;;;;;11253:14:0;;11271:1;11253:19;11249:36;;-1:-1:-1;11281:4:0;11274:11;;11249:36;11302:70;;-1:-1:-1;;;11302:70:0;;-1:-1:-1;;;;;11302:36:0;;;;;:70;;11339:10;;11351:4;;11357:7;;11366:5;;11302:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11302:70:0;;;;;;;;-1:-1:-1;;11302:70:0;;;;;;;;;;;;:::i;:::-;;;11298:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11534:6;:13;11551:1;11534:18;11530:71;;11561:40;;-1:-1:-1;;;11561:40:0;;;;;;;;;;;11530:71;11676:6;11670:13;11661:6;11657:2;11653:15;11646:38;11298:412;-1:-1:-1;;;;;;11419:55:0;-1:-1:-1;;;11419:55:0;;-1:-1:-1;11298:412:0;11077:640;;;;;;:::o;14906:723::-;14962:13;15183:5;15192:1;15183:10;15179:53;;-1:-1:-1;;15210:10:0;;;;;;;;;;;;-1:-1:-1;;;15210:10:0;;;;;14906:723::o;15179:53::-;15257:5;15242:12;15298:78;15305:9;;15298:78;;15331:8;;;;:::i;:::-;;-1:-1:-1;15354:10:0;;-1:-1:-1;15362:2:0;15354:10;;:::i;:::-;;;15298:78;;;15386:19;15418:6;15408:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15408:17:0;;15386:39;;15436:154;15443:10;;15436:154;;15470:11;15480:1;15470:11;;:::i;:::-;;-1:-1:-1;15539:10:0;15547:2;15539:5;:10;:::i;:::-;15526:24;;:2;:24;:::i;:::-;15513:39;;15496:6;15503;15496:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;15496:56:0;;;;;;;;-1:-1:-1;15567:11:0;15576:2;15567:11;;:::i;:::-;;;15436:154;;12456:291;12581:14;12587:2;12591:3;12581:5;:14::i;:::-;12613:64;12644:1;12648:2;12669:1;12652:7;:14;;;;:18;;;;:::i;:::-;12672:4;12613:22;:64::i;:::-;12608:131;;12699:40;;-1:-1:-1;;;12699:40:0;;;;;;;;;;;12755:628;-1:-1:-1;;;;;12827:16:0;;12823:48;;12852:19;;-1:-1:-1;;;12852:19:0;;;;;;;;;;;12823:48;12886:3;12893:1;12886:8;12882:39;;12903:18;;-1:-1:-1;;;12903:18:0;;;;;;;;;;;12882:39;12958:7;:14;12934:21;13080:150;13106:1;13100:3;:7;13096:1;:11;13080:150;;;13133:7;:14;;;;;;-1:-1:-1;13133:14:0;;;13171:43;;13196:17;;;;-1:-1:-1;;;;;13171:43:0;;;;;-1:-1:-1;;13171:43:0;13109:3;;13080:150;;;-1:-1:-1;13292:7:0;:16;;;;;;;;-1:-1:-1;13292:16:0;;;;;;;;-1:-1:-1;;;;;;13292:16:0;-1:-1:-1;;;;;13292:16:0;;;;;13366:7;;:3;:7;:::i;:::-;13349:25;;:13;:25;:::i;:::-;13324:51;;-1:-1:-1;;;;;13324:51:0;;;13341:1;;13324:51;;13341:1;;13324:51;12812:571;12755:628;;:::o;14:131:1:-;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:1:o;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:1;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:1;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:1:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:1;;1348:180;-1:-1:-1;1348:180:1:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:1;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:1:o;2360:328::-;2437:6;2445;2453;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;2545:29;2564:9;2545:29;:::i;:::-;2535:39;;2593:38;2627:2;2616:9;2612:18;2593:38;:::i;:::-;2583:48;;2678:2;2667:9;2663:18;2650:32;2640:42;;2360:328;;;;;:::o;2693:186::-;2752:6;2805:2;2793:9;2784:7;2780:23;2776:32;2773:52;;;2821:1;2818;2811:12;2773:52;2844:29;2863:9;2844:29;:::i;2884:127::-;2945:10;2940:3;2936:20;2933:1;2926:31;2976:4;2973:1;2966:15;3000:4;2997:1;2990:15;3016:632;3081:5;3111:18;3152:2;3144:6;3141:14;3138:40;;;3158:18;;:::i;:::-;3233:2;3227:9;3201:2;3287:15;;-1:-1:-1;;3283:24:1;;;3309:2;3279:33;3275:42;3263:55;;;3333:18;;;3353:22;;;3330:46;3327:72;;;3379:18;;:::i;:::-;3419:10;3415:2;3408:22;3448:6;3439:15;;3478:6;3470;3463:22;3518:3;3509:6;3504:3;3500:16;3497:25;3494:45;;;3535:1;3532;3525:12;3494:45;3585:6;3580:3;3573:4;3565:6;3561:17;3548:44;3640:1;3633:4;3624:6;3616;3612:19;3608:30;3601:41;;;;3016:632;;;;;:::o;3653:451::-;3722:6;3775:2;3763:9;3754:7;3750:23;3746:32;3743:52;;;3791:1;3788;3781:12;3743:52;3831:9;3818:23;3864:18;3856:6;3853:30;3850:50;;;3896:1;3893;3886:12;3850:50;3919:22;;3972:4;3964:13;;3960:27;-1:-1:-1;3950:55:1;;4001:1;3998;3991:12;3950:55;4024:74;4090:7;4085:2;4072:16;4067:2;4063;4059:11;4024:74;:::i;4109:118::-;4195:5;4188:13;4181:21;4174:5;4171:32;4161:60;;4217:1;4214;4207:12;4232:315;4297:6;4305;4358:2;4346:9;4337:7;4333:23;4329:32;4326:52;;;4374:1;4371;4364:12;4326:52;4397:29;4416:9;4397:29;:::i;:::-;4387:39;;4476:2;4465:9;4461:18;4448:32;4489:28;4511:5;4489:28;:::i;:::-;4536:5;4526:15;;;4232:315;;;;;:::o;4552:667::-;4647:6;4655;4663;4671;4724:3;4712:9;4703:7;4699:23;4695:33;4692:53;;;4741:1;4738;4731:12;4692:53;4764:29;4783:9;4764:29;:::i;:::-;4754:39;;4812:38;4846:2;4835:9;4831:18;4812:38;:::i;:::-;4802:48;;4897:2;4886:9;4882:18;4869:32;4859:42;;4952:2;4941:9;4937:18;4924:32;4979:18;4971:6;4968:30;4965:50;;;5011:1;5008;5001:12;4965:50;5034:22;;5087:4;5079:13;;5075:27;-1:-1:-1;5065:55:1;;5116:1;5113;5106:12;5065:55;5139:74;5205:7;5200:2;5187:16;5182:2;5178;5174:11;5139:74;:::i;:::-;5129:84;;;4552:667;;;;;;;:::o;5224:241::-;5280:6;5333:2;5321:9;5312:7;5308:23;5304:32;5301:52;;;5349:1;5346;5339:12;5301:52;5388:9;5375:23;5407:28;5429:5;5407:28;:::i;5470:260::-;5538:6;5546;5599:2;5587:9;5578:7;5574:23;5570:32;5567:52;;;5615:1;5612;5605:12;5567:52;5638:29;5657:9;5638:29;:::i;:::-;5628:39;;5686:38;5720:2;5709:9;5705:18;5686:38;:::i;:::-;5676:48;;5470:260;;;;;:::o;5735:380::-;5814:1;5810:12;;;;5857;;;5878:61;;5932:4;5924:6;5920:17;5910:27;;5878:61;5985:2;5977:6;5974:14;5954:18;5951:38;5948:161;;6031:10;6026:3;6022:20;6019:1;6012:31;6066:4;6063:1;6056:15;6094:4;6091:1;6084:15;5948:161;;5735:380;;;:::o;6120:127::-;6181:10;6176:3;6172:20;6169:1;6162:31;6212:4;6209:1;6202:15;6236:4;6233:1;6226:15;6252:125;6317:9;;;6338:10;;;6335:36;;;6351:18;;:::i;6729:245::-;6796:6;6849:2;6837:9;6828:7;6824:23;6820:32;6817:52;;;6865:1;6862;6855:12;6817:52;6897:9;6891:16;6916:28;6938:5;6916:28;:::i;7673:127::-;7734:10;7729:3;7725:20;7722:1;7715:31;7765:4;7762:1;7755:15;7789:4;7786:1;7779:15;7805:128;7872:9;;;7893:11;;;7890:37;;;7907:18;;:::i;8274:545::-;8376:2;8371:3;8368:11;8365:448;;;8412:1;8437:5;8433:2;8426:17;8482:4;8478:2;8468:19;8552:2;8540:10;8536:19;8533:1;8529:27;8523:4;8519:38;8588:4;8576:10;8573:20;8570:47;;;-1:-1:-1;8611:4:1;8570:47;8666:2;8661:3;8657:12;8654:1;8650:20;8644:4;8640:31;8630:41;;8721:82;8739:2;8732:5;8729:13;8721:82;;;8784:17;;;8765:1;8754:13;8721:82;;;8725:3;;;8274:545;;;:::o;8995:1352::-;9121:3;9115:10;9148:18;9140:6;9137:30;9134:56;;;9170:18;;:::i;:::-;9199:97;9289:6;9249:38;9281:4;9275:11;9249:38;:::i;:::-;9243:4;9199:97;:::i;:::-;9351:4;;9415:2;9404:14;;9432:1;9427:663;;;;10134:1;10151:6;10148:89;;;-1:-1:-1;10203:19:1;;;10197:26;10148:89;-1:-1:-1;;8952:1:1;8948:11;;;8944:24;8940:29;8930:40;8976:1;8972:11;;;8927:57;10250:81;;9397:944;;9427:663;8221:1;8214:14;;;8258:4;8245:18;;-1:-1:-1;;9463:20:1;;;9581:236;9595:7;9592:1;9589:14;9581:236;;;9684:19;;;9678:26;9663:42;;9776:27;;;;9744:1;9732:14;;;;9611:19;;9581:236;;;9585:3;9845:6;9836:7;9833:19;9830:201;;;9906:19;;;9900:26;-1:-1:-1;;9989:1:1;9985:14;;;10001:3;9981:24;9977:37;9973:42;9958:58;9943:74;;9830:201;-1:-1:-1;;;;;10077:1:1;10061:14;;;10057:22;10044:36;;-1:-1:-1;8995:1352:1:o;10768:1187::-;11045:3;11074:1;11107:6;11101:13;11137:36;11163:9;11137:36;:::i;:::-;11192:1;11209:18;;;11236:133;;;;11383:1;11378:356;;;;11202:532;;11236:133;-1:-1:-1;;11269:24:1;;11257:37;;11342:14;;11335:22;11323:35;;11314:45;;;-1:-1:-1;11236:133:1;;11378:356;11409:6;11406:1;11399:17;11439:4;11484:2;11481:1;11471:16;11509:1;11523:165;11537:6;11534:1;11531:13;11523:165;;;11615:14;;11602:11;;;11595:35;11658:16;;;;11552:10;;11523:165;;;11527:3;;;11717:6;11712:3;11708:16;11701:23;;11202:532;;;;;11765:6;11759:13;11781:68;11840:8;11835:3;11828:4;11820:6;11816:17;11781:68;:::i;:::-;-1:-1:-1;;;11871:18:1;;11898:22;;;11947:1;11936:13;;10768:1187;-1:-1:-1;;;;10768:1187:1:o;12728:489::-;-1:-1:-1;;;;;12997:15:1;;;12979:34;;13049:15;;13044:2;13029:18;;13022:43;13096:2;13081:18;;13074:34;;;13144:3;13139:2;13124:18;;13117:31;;;12922:4;;13165:46;;13191:19;;13183:6;13165:46;:::i;:::-;13157:54;12728:489;-1:-1:-1;;;;;;12728:489:1:o;13222:249::-;13291:6;13344:2;13332:9;13323:7;13319:23;13315:32;13312:52;;;13360:1;13357;13350:12;13312:52;13392:9;13386:16;13411:30;13435:5;13411:30;:::i;13476:135::-;13515:3;13536:17;;;13533:43;;13556:18;;:::i;:::-;-1:-1:-1;13603:1:1;13592:13;;13476:135::o;13616:127::-;13677:10;13672:3;13668:20;13665:1;13658:31;13708:4;13705:1;13698:15;13732:4;13729:1;13722:15;13748:120;13788:1;13814;13804:35;;13819:18;;:::i;:::-;-1:-1:-1;13853:9:1;;13748:120::o;13873:112::-;13905:1;13931;13921:35;;13936:18;;:::i;:::-;-1:-1:-1;13970:9:1;;13873:112::o

Swarm Source

ipfs://5f980ffd4b53a42f150082f6d3fbfc2d8c4d4974f2cca51e86d95e1dc94703e7
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.