ETH Price: $3,392.99 (+1.28%)
Gas: 5 Gwei

Nexus Genesis (NXGS)
 

Overview

TokenID

1

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-
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:
NexusGenesis

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {
                    
                        uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

        modifier nonReentrant() {
                require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

                _status = _ENTERED;

        _;

                        _status = _NOT_ENTERED;
    }
}


library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

        function toString(uint256 value) internal pure returns (string memory) {
                
        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);
    }

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

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


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


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


    modifier onlyOwner() {
        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 Address {
        function isContract(address account) internal view returns (bool) {
                        
        return account.code.length > 0;
    }

        function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

        function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

        function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

        function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

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

        function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

        function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

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

        function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

        function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

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

        function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
                        if (returndata.length > 0) {
                
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC721Receiver {
        function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


interface IERC165 {
        function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}






interface IERC721 is IERC165 {

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


interface IERC721Enumerable is IERC721 {
        function totalSupply() external view returns (uint256);

        function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);

        function tokenByIndex(uint256 index) external view returns (uint256);
}


interface IERC721Metadata is IERC721 {
        function name() external view returns (string memory);

        function symbol() external view returns (string memory);

        function tokenURI(uint256 tokenId) external view returns (string memory);
}



contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 private currentIndex = 0;

    uint256 internal immutable collectionSize;
    uint256 internal immutable maxBatchSize;

        string private _name;

        string private _symbol;

            mapping(uint256 => TokenOwnership) private _ownerships;

        mapping(address => AddressData) private _addressData;

        mapping(uint256 => address) private _tokenApprovals;

        mapping(address => mapping(address => bool)) private _operatorApprovals;


        constructor(
        string memory name_,
        string memory symbol_,
        uint256 maxBatchSize_,
        uint256 collectionSize_
    ) {
        require(
            collectionSize_ > 0,
            "ERC721A: collection must have a nonzero supply"
        );
        require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
        _name = name_;
        _symbol = symbol_;
        maxBatchSize = maxBatchSize_;
        collectionSize = collectionSize_;
    }

        function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }

        function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }

        function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert("ERC721A: unable to get token of owner by index");
    }

        function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

        function balanceOf(address owner) public view override returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: balance query for the zero address"
        );
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: number minted query for the zero address"
        );
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        uint256 lowestTokenToCheck;
        if (tokenId >= maxBatchSize) {
            lowestTokenToCheck = tokenId - maxBatchSize + 1;
        }

        for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }

        function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

        function name() public view virtual override returns (string memory) {
        return _name;
    }

        function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

        function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

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

        function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

        function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

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

        _approve(to, tokenId, owner);
    }

        function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721A: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }

        function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        require(operator != _msgSender(), "ERC721A: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

        function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }

        function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }

        function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, "");
    }

        function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }

        function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }



    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
                require(!_exists(startTokenId), "ERC721A: token already minted");
        require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint64(quantity),
            addressData.numberMinted + uint64(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                "ERC721A: transfer to non ERC721Receiver implementer"
            );
            updatedIndex++;
        }

        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

            
        function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
 
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(
            isApprovedOrOwner,
            "ERC721A: transfer caller is not owner nor approved"
        );

        require(
            prevOwnership.addr == from,
            "ERC721A: transfer from incorrect owner"
        );
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);

                _approve(address(0), tokenId, prevOwnership.addr);

        _addressData[from].balance -= 1;
        _addressData[to].balance += 1;
        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));

                        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(
                    prevOwnership.addr,
                    prevOwnership.startTimestamp
                );
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

        function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    uint256 public nextOwnerToExplicitlySet = 0;

        function _setOwnersExplicit(uint256 quantity) internal {
        uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
        require(quantity > 0, "quantity must be nonzero");
        uint256 endIndex = oldNextOwnerToSet + quantity - 1;
        if (endIndex > collectionSize - 1) {
            endIndex = collectionSize - 1;
        }
                require(_exists(endIndex), "not enough minted yet for this cleanup");
        for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
            if (_ownerships[i].addr == address(0)) {
                TokenOwnership memory ownership = ownershipOf(i);
                _ownerships[i] = TokenOwnership(
                    ownership.addr,
                    ownership.startTimestamp
                );
            }
        }
        nextOwnerToExplicitlySet = endIndex + 1;
    }

        function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try
                IERC721Receiver(to).onERC721Received(
                    _msgSender(),
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

        function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

        function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}


contract NexusGenesis  is Ownable, ERC721A, ReentrancyGuard {
    uint256 public immutable maxPerAddressDuringMint;

    struct SaleConfig {
        uint128 publicSaleStartTime;
        uint128 publicPrice;
    }

    SaleConfig private saleConfig;


    constructor(
        uint256 maxBatchSize_,
        uint256 collectionSize_
                    ) ERC721A("Nexus Genesis", "NXGS", maxBatchSize_, collectionSize_) {
        maxPerAddressDuringMint = maxBatchSize_;
                    }

        function publicMint(uint256 quantity) external payable {
        uint256 publicPrice = uint256(saleConfig.publicPrice);
        uint256 publicSaleStartTime = uint256(saleConfig.publicSaleStartTime);
        require(
            totalSupply() + quantity <= collectionSize,
            "reached max supply"
        );
        require(
            isPublicSaleOn(publicPrice, publicSaleStartTime),
            "Public sale has not begun yet"
        );
        require(msg.value == publicPrice * quantity, "Check Ether amount sent");

        _safeMint(msg.sender, quantity);
    }

                                                                        
                        

            
    function refundIfOver(uint256 price) private {
        require(msg.value >= price, "Need to send more ETH.");
        if (msg.value > price) {
            payable(msg.sender).transfer(msg.value - price);
        }
    }

    function isPublicSaleOn(uint256 publicPriceWei, uint256 publicSaleStartTime)
        public
        view
        returns (bool)
    {
        return publicPriceWei != 0 && block.timestamp >= publicSaleStartTime;
    }

            
    function getSaleConfig() public view returns(SaleConfig memory){
        return saleConfig;
    }

    function setPublicMintInfo(
                uint128 publicPriceWei,
        uint128 publicSaleStartTime
    ) external onlyOwner {
        saleConfig = SaleConfig(
            publicSaleStartTime,
            publicPriceWei
        );
    }

                                                            
        string private _baseTokenURI;

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

    function setBaseURI(string calldata baseURI) external onlyOwner {
        _baseTokenURI = baseURI;
    }

    function withdrawEth() external onlyOwner nonReentrant {
        (bool success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "Transfer failed.");
    }

    function setOwnersExplicit(uint256 quantity)
        external
        onlyOwner
        nonReentrant
    {
        _setOwnersExplicit(quantity);
    }

    function numberMinted(address owner) public view returns (uint256) {
        return _numberMinted(owner);
    }

    function getOwnershipData(uint256 tokenId)
        external
        view
        returns (TokenOwnership memory)
    {
        return ownershipOf(tokenId);
    }

    function renounceOwnership() public virtual override onlyOwner {
        require(false, "Can't renounceOwnership");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"maxBatchSize_","type":"uint256"},{"internalType":"uint256","name":"collectionSize_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSaleConfig","outputs":[{"components":[{"internalType":"uint128","name":"publicSaleStartTime","type":"uint128"},{"internalType":"uint128","name":"publicPrice","type":"uint128"}],"internalType":"struct NexusGenesis.SaleConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"publicPriceWei","type":"uint256"},{"internalType":"uint256","name":"publicSaleStartTime","type":"uint256"}],"name":"isPublicSaleOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddressDuringMint","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":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"setOwnersExplicit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"publicPriceWei","type":"uint128"},{"internalType":"uint128","name":"publicSaleStartTime","type":"uint128"}],"name":"setPublicMintInfo","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":"","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":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e0604052600060015560006008553480156200001b57600080fd5b5060405162002a9438038062002a948339810160408190526200003e91620001f8565b6040518060400160405280600d81526020016c4e657875732047656e6573697360981b815250604051806040016040528060048152602001634e58475360e01b81525083836200009d62000097620001a460201b60201c565b620001a8565b600081116200010a5760405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060448201526d6e6f6e7a65726f20737570706c7960901b60648201526084015b60405180910390fd5b600082116200016c5760405162461bcd60e51b815260206004820152602760248201527f455243373231413a206d61782062617463682073697a65206d757374206265206044820152666e6f6e7a65726f60c81b606482015260840162000101565b60026200017a8582620002c2565b506003620001898482620002c2565b5060a091909152608052505060016009555060c0526200038e565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156200020c57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024857607f821691505b6020821081036200026957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002bd57600081815260208120601f850160051c81016020861015620002985750805b601f850160051c820191505b81811015620002b957828155600101620002a4565b5050505b505050565b81516001600160401b03811115620002de57620002de6200021d565b620002f681620002ef845462000233565b846200026f565b602080601f8311600181146200032e5760008415620003155750858301515b600019600386901b1c1916600185901b178555620002b9565b600085815260208120601f198616915b828110156200035f578886015182559484019460019091019084016200033e565b50858210156200037e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c0516126ba620003da60003960006103dc015260008181611883015281816118ad0152611d6601526000818161098d0152818161166b015261169d01526126ba6000f3fe6080604052600436106101cd5760003560e01c80638bc35c2f116100f7578063c87b56dd11610095578063dbcad76f11610064578063dbcad76f14610589578063dc33e681146105a9578063e985e9c5146105c9578063f2fde38b1461061257600080fd5b8063c87b56dd146104d3578063cea943ee146104f3578063d7224ba014610553578063d9c5d8fc1461056957600080fd5b806395d89b41116100d157806395d89b4114610469578063a0ef91df1461047e578063a22cb46514610493578063b88d4fde146104b357600080fd5b80638bc35c2f146103ca5780638da5cb5b146103fe5780639231ab2a1461041c57600080fd5b80632db115441161016f57806355f804b31161013e57806355f804b3146103555780636352211e1461037557806370a0823114610395578063715018a6146103b557600080fd5b80632db11544146102e25780632f745c59146102f557806342842e0e146103155780634f6ccce71461033557600080fd5b8063095ea7b3116101ab578063095ea7b31461026157806318160ddd1461028357806323b872dd146102a25780632d20fb60146102c257600080fd5b806301ffc9a7146101d257806306fdde0314610207578063081812fc14610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611fab565b610632565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b5061021c61069f565b6040516101fe9190612018565b34801561023557600080fd5b5061024961024436600461202b565b610731565b6040516001600160a01b0390911681526020016101fe565b34801561026d57600080fd5b5061028161027c366004612060565b6107c1565b005b34801561028f57600080fd5b506001545b6040519081526020016101fe565b3480156102ae57600080fd5b506102816102bd36600461208a565b6108d8565b3480156102ce57600080fd5b506102816102dd36600461202b565b6108e3565b6102816102f036600461202b565b610975565b34801561030157600080fd5b50610294610310366004612060565b610abb565b34801561032157600080fd5b5061028161033036600461208a565b610c31565b34801561034157600080fd5b5061029461035036600461202b565b610c4c565b34801561036157600080fd5b506102816103703660046120c6565b610cb5565b34801561038157600080fd5b5061024961039036600461202b565b610cec565b3480156103a157600080fd5b506102946103b0366004612137565b610cfe565b3480156103c157600080fd5b50610281610d8f565b3480156103d657600080fd5b506102947f000000000000000000000000000000000000000000000000000000000000000081565b34801561040a57600080fd5b506000546001600160a01b0316610249565b34801561042857600080fd5b5061043c61043736600461202b565b610e01565b6040805182516001600160a01b031681526020928301516001600160401b031692810192909252016101fe565b34801561047557600080fd5b5061021c610e1e565b34801561048a57600080fd5b50610281610e2d565b34801561049f57600080fd5b506102816104ae366004612152565b610f39565b3480156104bf57600080fd5b506102816104ce3660046121a4565b610ffd565b3480156104df57600080fd5b5061021c6104ee36600461202b565b611036565b3480156104ff57600080fd5b50604080518082018252600080825260209182015281518083018352600a546001600160801b03808216808452600160801b90920481169284019283528451918252915190911691810191909152016101fe565b34801561055f57600080fd5b5061029460085481565b34801561057557600080fd5b50610281610584366004612296565b611103565b34801561059557600080fd5b506101f26105a43660046122c9565b61115d565b3480156105b557600080fd5b506102946105c4366004612137565b611172565b3480156105d557600080fd5b506101f26105e43660046122eb565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561061e57600080fd5b5061028161062d366004612137565b61117d565b60006001600160e01b031982166380ac58cd60e01b148061066357506001600160e01b03198216635b5e139f60e01b145b8061067e57506001600160e01b0319821663780e9d6360e01b145b8061069957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600280546106ae90612315565b80601f01602080910402602001604051908101604052809291908181526020018280546106da90612315565b80156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b5050505050905090565b600061073e826001541190565b6107a55760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006107cc82610cec565b9050806001600160a01b0316836001600160a01b03160361083a5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b606482015260840161079c565b336001600160a01b0382161480610856575061085681336105e4565b6108c85760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000606482015260840161079c565b6108d3838383611218565b505050565b6108d3838383611274565b6000546001600160a01b0316331461090d5760405162461bcd60e51b815260040161079c9061234f565b60026009540361095f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161079c565b600260095561096d816115fa565b506001600955565b600a546001600160801b03600160801b8204811691167f0000000000000000000000000000000000000000000000000000000000000000836109b660015490565b6109c0919061239a565b1115610a035760405162461bcd60e51b815260206004820152601260248201527172656163686564206d617820737570706c7960701b604482015260640161079c565b610a0d828261115d565b610a595760405162461bcd60e51b815260206004820152601d60248201527f5075626c69632073616c6520686173206e6f7420626567756e20796574000000604482015260640161079c565b610a6383836123ad565b3414610ab15760405162461bcd60e51b815260206004820152601760248201527f436865636b20457468657220616d6f756e742073656e74000000000000000000604482015260640161079c565b6108d333846117e3565b6000610ac683610cfe565b8210610b1f5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b606482015260840161079c565b6000610b2a60015490565b905060008060005b83811015610bd1576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b03169183019190915215610b8457805192505b876001600160a01b0316836001600160a01b031603610bbe57868403610bb05750935061069992505050565b83610bba816123c4565b9450505b5080610bc9816123c4565b915050610b32565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b606482015260840161079c565b6108d383838360405180602001604052806000815250610ffd565b6000610c5760015490565b8210610cb15760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b606482015260840161079c565b5090565b6000546001600160a01b03163314610cdf5760405162461bcd60e51b815260040161079c9061234f565b600b6108d3828483612423565b6000610cf782611801565b5192915050565b60006001600160a01b038216610d6a5760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b606482015260840161079c565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b03163314610db95760405162461bcd60e51b815260040161079c9061234f565b60405162461bcd60e51b815260206004820152601760248201527f43616e27742072656e6f756e63654f776e657273686970000000000000000000604482015260640161079c565b604080518082019091526000808252602082015261069982611801565b6060600380546106ae90612315565b6000546001600160a01b03163314610e575760405162461bcd60e51b815260040161079c9061234f565b600260095403610ea95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161079c565b6002600955604051600090339047908381818185875af1925050503d8060008114610ef0576040519150601f19603f3d011682016040523d82523d6000602084013e610ef5565b606091505b505090508061096d5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015260640161079c565b336001600160a01b03831603610f915760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c6572000000000000604482015260640161079c565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611008848484611274565b611014848484846119aa565b6110305760405162461bcd60e51b815260040161079c906124e3565b50505050565b6060611043826001541190565b6110a75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161079c565b60006110b1611aac565b905060008151116110d157604051806020016040528060008152506110fc565b806110db84611abb565b6040516020016110ec929190612536565b6040516020818303038152906040525b9392505050565b6000546001600160a01b0316331461112d5760405162461bcd60e51b815260040161079c9061234f565b604080518082019091526001600160801b03918216808252929091166020909101819052600160801b0217600a55565b600082158015906110fc575050421015919050565b600061069982611bbb565b6000546001600160a01b031633146111a75760405162461bcd60e51b815260040161079c9061234f565b6001600160a01b03811661120c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079c565b61121581611c59565b50565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061127f82611801565b80519091506000906001600160a01b0316336001600160a01b031614806112b65750336112ab84610731565b6001600160a01b0316145b806112c8575081516112c890336105e4565b9050806113325760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161079c565b846001600160a01b031682600001516001600160a01b0316146113a65760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b606482015260840161079c565b6001600160a01b03841661140a5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161079c565b61141a6000848460000151611218565b6001600160a01b038516600090815260056020526040812080546001929061144c9084906001600160801b0316612565565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038616600090815260056020526040812080546001945090926114989185911661258c565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b0380871682526001600160401b03428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b0319909116919092161717905561151f84600161239a565b6000818152600460205260409020549091506001600160a01b03166115b057611549816001541190565b156115b05760408051808201825284516001600160a01b0390811682526020808701516001600160401b039081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6008548161164a5760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f0000000000000000604482015260640161079c565b60006001611658848461239a565b61166291906125ac565b905061168f60017f00000000000000000000000000000000000000000000000000000000000000006125ac565b8111156116c4576116c160017f00000000000000000000000000000000000000000000000000000000000000006125ac565b90505b6116cf816001541190565b61172a5760405162461bcd60e51b815260206004820152602660248201527f6e6f7420656e6f756768206d696e7465642079657420666f722074686973206360448201526506c65616e75760d41b606482015260840161079c565b815b8181116117cf576000818152600460205260409020546001600160a01b03166117bd57600061175a82611801565b60408051808201825282516001600160a01b0390811682526020938401516001600160401b039081168584019081526000888152600490965293909420915182549351909416600160a01b026001600160e01b0319909316931692909217179055505b806117c7816123c4565b91505061172c565b506117db81600161239a565b600855505050565b6117fd828260405180602001604052806000815250611ca9565b5050565b6040805180820190915260008082526020820152611820826001541190565b61187f5760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b606482015260840161079c565b60007f000000000000000000000000000000000000000000000000000000000000000083106118e0576118d27f0000000000000000000000000000000000000000000000000000000000000000846125ac565b6118dd90600161239a565b90505b825b818110611949576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b0316918301919091521561193657949350505050565b5080611941816125bf565b9150506118e2565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b606482015260840161079c565b60006001600160a01b0384163b15611aa057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906119ee9033908990889088906004016125d6565b6020604051808303816000875af1925050508015611a29575060408051601f3d908101601f19168201909252611a2691810190612613565b60015b611a86573d808015611a57576040519150601f19603f3d011682016040523d82523d6000602084013e611a5c565b606091505b508051600003611a7e5760405162461bcd60e51b815260040161079c906124e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611aa4565b5060015b949350505050565b6060600b80546106ae90612315565b606081600003611ae25750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611b0c5780611af6816123c4565b9150611b059050600a83612646565b9150611ae6565b6000816001600160401b03811115611b2657611b2661218e565b6040519080825280601f01601f191660200182016040528015611b50576020820181803683370190505b5090505b8415611aa457611b656001836125ac565b9150611b72600a8661265a565b611b7d90603061239a565b60f81b818381518110611b9257611b9261266e565b60200101906001600160f81b031916908160001a905350611bb4600a86612646565b9450611b54565b60006001600160a01b038216611c2d5760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b606482015260840161079c565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546001600160a01b038416611d0c5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161079c565b611d17816001541190565b15611d645760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e746564000000604482015260640161079c565b7f0000000000000000000000000000000000000000000000000000000000000000831115611ddf5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b606482015260840161079c565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190611e44906001600160401b0388169061258c565b6001600160801b03168152602001856001600160401b03168360200151611e6b919061258c565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b029790961696909617909455845180860186529182526001600160401b034281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015611f8a5760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611f4e60008884886119aa565b611f6a5760405162461bcd60e51b815260040161079c906124e3565b81611f74816123c4565b9250508080611f82906123c4565b915050611f01565b5060018190556115f2565b6001600160e01b03198116811461121557600080fd5b600060208284031215611fbd57600080fd5b81356110fc81611f95565b60005b83811015611fe3578181015183820152602001611fcb565b50506000910152565b60008151808452612004816020860160208601611fc8565b601f01601f19169290920160200192915050565b6020815260006110fc6020830184611fec565b60006020828403121561203d57600080fd5b5035919050565b80356001600160a01b038116811461205b57600080fd5b919050565b6000806040838503121561207357600080fd5b61207c83612044565b946020939093013593505050565b60008060006060848603121561209f57600080fd5b6120a884612044565b92506120b660208501612044565b9150604084013590509250925092565b600080602083850312156120d957600080fd5b82356001600160401b03808211156120f057600080fd5b818501915085601f83011261210457600080fd5b81358181111561211357600080fd5b86602082850101111561212557600080fd5b60209290920196919550909350505050565b60006020828403121561214957600080fd5b6110fc82612044565b6000806040838503121561216557600080fd5b61216e83612044565b91506020830135801515811461218357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156121ba57600080fd5b6121c385612044565b93506121d160208601612044565b92506040850135915060608501356001600160401b03808211156121f457600080fd5b818701915087601f83011261220857600080fd5b81358181111561221a5761221a61218e565b604051601f8201601f19908116603f011681019083821181831017156122425761224261218e565b816040528281528a602084870101111561225b57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b80356001600160801b038116811461205b57600080fd5b600080604083850312156122a957600080fd5b6122b28361227f565b91506122c06020840161227f565b90509250929050565b600080604083850312156122dc57600080fd5b50508035926020909101359150565b600080604083850312156122fe57600080fd5b61230783612044565b91506122c060208401612044565b600181811c9082168061232957607f821691505b60208210810361234957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561069957610699612384565b808202811582820484141761069957610699612384565b6000600182016123d6576123d6612384565b5060010190565b601f8211156108d357600081815260208120601f850160051c810160208610156124045750805b601f850160051c820191505b818110156115f257828155600101612410565b6001600160401b0383111561243a5761243a61218e565b61244e836124488354612315565b836123dd565b6000601f841160018114612482576000851561246a5750838201355b600019600387901b1c1916600186901b1783556124dc565b600083815260209020601f19861690835b828110156124b35786850135825560209485019460019092019101612493565b50868210156124d05760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008351612548818460208801611fc8565b83519083019061255c818360208801611fc8565b01949350505050565b6001600160801b0382811682821603908082111561258557612585612384565b5092915050565b6001600160801b0381811683821601908082111561258557612585612384565b8181038181111561069957610699612384565b6000816125ce576125ce612384565b506000190190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061260990830184611fec565b9695505050505050565b60006020828403121561262557600080fd5b81516110fc81611f95565b634e487b7160e01b600052601260045260246000fd5b60008261265557612655612630565b500490565b60008261266957612669612630565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220dc17b42d431836949564b1a812c2445fb3ff051276df906a0b1d9f0eda47ecd364736f6c63430008110033000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000001f4

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c80638bc35c2f116100f7578063c87b56dd11610095578063dbcad76f11610064578063dbcad76f14610589578063dc33e681146105a9578063e985e9c5146105c9578063f2fde38b1461061257600080fd5b8063c87b56dd146104d3578063cea943ee146104f3578063d7224ba014610553578063d9c5d8fc1461056957600080fd5b806395d89b41116100d157806395d89b4114610469578063a0ef91df1461047e578063a22cb46514610493578063b88d4fde146104b357600080fd5b80638bc35c2f146103ca5780638da5cb5b146103fe5780639231ab2a1461041c57600080fd5b80632db115441161016f57806355f804b31161013e57806355f804b3146103555780636352211e1461037557806370a0823114610395578063715018a6146103b557600080fd5b80632db11544146102e25780632f745c59146102f557806342842e0e146103155780634f6ccce71461033557600080fd5b8063095ea7b3116101ab578063095ea7b31461026157806318160ddd1461028357806323b872dd146102a25780632d20fb60146102c257600080fd5b806301ffc9a7146101d257806306fdde0314610207578063081812fc14610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611fab565b610632565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b5061021c61069f565b6040516101fe9190612018565b34801561023557600080fd5b5061024961024436600461202b565b610731565b6040516001600160a01b0390911681526020016101fe565b34801561026d57600080fd5b5061028161027c366004612060565b6107c1565b005b34801561028f57600080fd5b506001545b6040519081526020016101fe565b3480156102ae57600080fd5b506102816102bd36600461208a565b6108d8565b3480156102ce57600080fd5b506102816102dd36600461202b565b6108e3565b6102816102f036600461202b565b610975565b34801561030157600080fd5b50610294610310366004612060565b610abb565b34801561032157600080fd5b5061028161033036600461208a565b610c31565b34801561034157600080fd5b5061029461035036600461202b565b610c4c565b34801561036157600080fd5b506102816103703660046120c6565b610cb5565b34801561038157600080fd5b5061024961039036600461202b565b610cec565b3480156103a157600080fd5b506102946103b0366004612137565b610cfe565b3480156103c157600080fd5b50610281610d8f565b3480156103d657600080fd5b506102947f000000000000000000000000000000000000000000000000000000000000003281565b34801561040a57600080fd5b506000546001600160a01b0316610249565b34801561042857600080fd5b5061043c61043736600461202b565b610e01565b6040805182516001600160a01b031681526020928301516001600160401b031692810192909252016101fe565b34801561047557600080fd5b5061021c610e1e565b34801561048a57600080fd5b50610281610e2d565b34801561049f57600080fd5b506102816104ae366004612152565b610f39565b3480156104bf57600080fd5b506102816104ce3660046121a4565b610ffd565b3480156104df57600080fd5b5061021c6104ee36600461202b565b611036565b3480156104ff57600080fd5b50604080518082018252600080825260209182015281518083018352600a546001600160801b03808216808452600160801b90920481169284019283528451918252915190911691810191909152016101fe565b34801561055f57600080fd5b5061029460085481565b34801561057557600080fd5b50610281610584366004612296565b611103565b34801561059557600080fd5b506101f26105a43660046122c9565b61115d565b3480156105b557600080fd5b506102946105c4366004612137565b611172565b3480156105d557600080fd5b506101f26105e43660046122eb565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561061e57600080fd5b5061028161062d366004612137565b61117d565b60006001600160e01b031982166380ac58cd60e01b148061066357506001600160e01b03198216635b5e139f60e01b145b8061067e57506001600160e01b0319821663780e9d6360e01b145b8061069957506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600280546106ae90612315565b80601f01602080910402602001604051908101604052809291908181526020018280546106da90612315565b80156107275780601f106106fc57610100808354040283529160200191610727565b820191906000526020600020905b81548152906001019060200180831161070a57829003601f168201915b5050505050905090565b600061073e826001541190565b6107a55760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006107cc82610cec565b9050806001600160a01b0316836001600160a01b03160361083a5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b606482015260840161079c565b336001600160a01b0382161480610856575061085681336105e4565b6108c85760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000606482015260840161079c565b6108d3838383611218565b505050565b6108d3838383611274565b6000546001600160a01b0316331461090d5760405162461bcd60e51b815260040161079c9061234f565b60026009540361095f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161079c565b600260095561096d816115fa565b506001600955565b600a546001600160801b03600160801b8204811691167f00000000000000000000000000000000000000000000000000000000000001f4836109b660015490565b6109c0919061239a565b1115610a035760405162461bcd60e51b815260206004820152601260248201527172656163686564206d617820737570706c7960701b604482015260640161079c565b610a0d828261115d565b610a595760405162461bcd60e51b815260206004820152601d60248201527f5075626c69632073616c6520686173206e6f7420626567756e20796574000000604482015260640161079c565b610a6383836123ad565b3414610ab15760405162461bcd60e51b815260206004820152601760248201527f436865636b20457468657220616d6f756e742073656e74000000000000000000604482015260640161079c565b6108d333846117e3565b6000610ac683610cfe565b8210610b1f5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b606482015260840161079c565b6000610b2a60015490565b905060008060005b83811015610bd1576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b03169183019190915215610b8457805192505b876001600160a01b0316836001600160a01b031603610bbe57868403610bb05750935061069992505050565b83610bba816123c4565b9450505b5080610bc9816123c4565b915050610b32565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b606482015260840161079c565b6108d383838360405180602001604052806000815250610ffd565b6000610c5760015490565b8210610cb15760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b606482015260840161079c565b5090565b6000546001600160a01b03163314610cdf5760405162461bcd60e51b815260040161079c9061234f565b600b6108d3828483612423565b6000610cf782611801565b5192915050565b60006001600160a01b038216610d6a5760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b606482015260840161079c565b506001600160a01b03166000908152600560205260409020546001600160801b031690565b6000546001600160a01b03163314610db95760405162461bcd60e51b815260040161079c9061234f565b60405162461bcd60e51b815260206004820152601760248201527f43616e27742072656e6f756e63654f776e657273686970000000000000000000604482015260640161079c565b604080518082019091526000808252602082015261069982611801565b6060600380546106ae90612315565b6000546001600160a01b03163314610e575760405162461bcd60e51b815260040161079c9061234f565b600260095403610ea95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161079c565b6002600955604051600090339047908381818185875af1925050503d8060008114610ef0576040519150601f19603f3d011682016040523d82523d6000602084013e610ef5565b606091505b505090508061096d5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b604482015260640161079c565b336001600160a01b03831603610f915760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c6572000000000000604482015260640161079c565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611008848484611274565b611014848484846119aa565b6110305760405162461bcd60e51b815260040161079c906124e3565b50505050565b6060611043826001541190565b6110a75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161079c565b60006110b1611aac565b905060008151116110d157604051806020016040528060008152506110fc565b806110db84611abb565b6040516020016110ec929190612536565b6040516020818303038152906040525b9392505050565b6000546001600160a01b0316331461112d5760405162461bcd60e51b815260040161079c9061234f565b604080518082019091526001600160801b03918216808252929091166020909101819052600160801b0217600a55565b600082158015906110fc575050421015919050565b600061069982611bbb565b6000546001600160a01b031633146111a75760405162461bcd60e51b815260040161079c9061234f565b6001600160a01b03811661120c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079c565b61121581611c59565b50565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061127f82611801565b80519091506000906001600160a01b0316336001600160a01b031614806112b65750336112ab84610731565b6001600160a01b0316145b806112c8575081516112c890336105e4565b9050806113325760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161079c565b846001600160a01b031682600001516001600160a01b0316146113a65760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b606482015260840161079c565b6001600160a01b03841661140a5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161079c565b61141a6000848460000151611218565b6001600160a01b038516600090815260056020526040812080546001929061144c9084906001600160801b0316612565565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038616600090815260056020526040812080546001945090926114989185911661258c565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b0380871682526001600160401b03428116602080850191825260008981526004909152948520935184549151909216600160a01b026001600160e01b0319909116919092161717905561151f84600161239a565b6000818152600460205260409020549091506001600160a01b03166115b057611549816001541190565b156115b05760408051808201825284516001600160a01b0390811682526020808701516001600160401b039081168285019081526000878152600490935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6008548161164a5760405162461bcd60e51b815260206004820152601860248201527f7175616e74697479206d757374206265206e6f6e7a65726f0000000000000000604482015260640161079c565b60006001611658848461239a565b61166291906125ac565b905061168f60017f00000000000000000000000000000000000000000000000000000000000001f46125ac565b8111156116c4576116c160017f00000000000000000000000000000000000000000000000000000000000001f46125ac565b90505b6116cf816001541190565b61172a5760405162461bcd60e51b815260206004820152602660248201527f6e6f7420656e6f756768206d696e7465642079657420666f722074686973206360448201526506c65616e75760d41b606482015260840161079c565b815b8181116117cf576000818152600460205260409020546001600160a01b03166117bd57600061175a82611801565b60408051808201825282516001600160a01b0390811682526020938401516001600160401b039081168584019081526000888152600490965293909420915182549351909416600160a01b026001600160e01b0319909316931692909217179055505b806117c7816123c4565b91505061172c565b506117db81600161239a565b600855505050565b6117fd828260405180602001604052806000815250611ca9565b5050565b6040805180820190915260008082526020820152611820826001541190565b61187f5760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b606482015260840161079c565b60007f000000000000000000000000000000000000000000000000000000000000003283106118e0576118d27f0000000000000000000000000000000000000000000000000000000000000032846125ac565b6118dd90600161239a565b90505b825b818110611949576000818152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160401b0316918301919091521561193657949350505050565b5080611941816125bf565b9150506118e2565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b606482015260840161079c565b60006001600160a01b0384163b15611aa057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906119ee9033908990889088906004016125d6565b6020604051808303816000875af1925050508015611a29575060408051601f3d908101601f19168201909252611a2691810190612613565b60015b611a86573d808015611a57576040519150601f19603f3d011682016040523d82523d6000602084013e611a5c565b606091505b508051600003611a7e5760405162461bcd60e51b815260040161079c906124e3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611aa4565b5060015b949350505050565b6060600b80546106ae90612315565b606081600003611ae25750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611b0c5780611af6816123c4565b9150611b059050600a83612646565b9150611ae6565b6000816001600160401b03811115611b2657611b2661218e565b6040519080825280601f01601f191660200182016040528015611b50576020820181803683370190505b5090505b8415611aa457611b656001836125ac565b9150611b72600a8661265a565b611b7d90603061239a565b60f81b818381518110611b9257611b9261266e565b60200101906001600160f81b031916908160001a905350611bb4600a86612646565b9450611b54565b60006001600160a01b038216611c2d5760405162461bcd60e51b815260206004820152603160248201527f455243373231413a206e756d626572206d696e74656420717565727920666f7260448201527020746865207a65726f206164647265737360781b606482015260840161079c565b506001600160a01b0316600090815260056020526040902054600160801b90046001600160801b031690565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546001600160a01b038416611d0c5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161079c565b611d17816001541190565b15611d645760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e746564000000604482015260640161079c565b7f0000000000000000000000000000000000000000000000000000000000000032831115611ddf5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b606482015260840161079c565b6001600160a01b0384166000908152600560209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190611e44906001600160401b0388169061258c565b6001600160801b03168152602001856001600160401b03168360200151611e6b919061258c565b6001600160801b039081169091526001600160a01b0380881660008181526005602090815260408083208751978301518716600160801b029790961696909617909455845180860186529182526001600160401b034281168386019081528883526004909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015611f8a5760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611f4e60008884886119aa565b611f6a5760405162461bcd60e51b815260040161079c906124e3565b81611f74816123c4565b9250508080611f82906123c4565b915050611f01565b5060018190556115f2565b6001600160e01b03198116811461121557600080fd5b600060208284031215611fbd57600080fd5b81356110fc81611f95565b60005b83811015611fe3578181015183820152602001611fcb565b50506000910152565b60008151808452612004816020860160208601611fc8565b601f01601f19169290920160200192915050565b6020815260006110fc6020830184611fec565b60006020828403121561203d57600080fd5b5035919050565b80356001600160a01b038116811461205b57600080fd5b919050565b6000806040838503121561207357600080fd5b61207c83612044565b946020939093013593505050565b60008060006060848603121561209f57600080fd5b6120a884612044565b92506120b660208501612044565b9150604084013590509250925092565b600080602083850312156120d957600080fd5b82356001600160401b03808211156120f057600080fd5b818501915085601f83011261210457600080fd5b81358181111561211357600080fd5b86602082850101111561212557600080fd5b60209290920196919550909350505050565b60006020828403121561214957600080fd5b6110fc82612044565b6000806040838503121561216557600080fd5b61216e83612044565b91506020830135801515811461218357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156121ba57600080fd5b6121c385612044565b93506121d160208601612044565b92506040850135915060608501356001600160401b03808211156121f457600080fd5b818701915087601f83011261220857600080fd5b81358181111561221a5761221a61218e565b604051601f8201601f19908116603f011681019083821181831017156122425761224261218e565b816040528281528a602084870101111561225b57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b80356001600160801b038116811461205b57600080fd5b600080604083850312156122a957600080fd5b6122b28361227f565b91506122c06020840161227f565b90509250929050565b600080604083850312156122dc57600080fd5b50508035926020909101359150565b600080604083850312156122fe57600080fd5b61230783612044565b91506122c060208401612044565b600181811c9082168061232957607f821691505b60208210810361234957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561069957610699612384565b808202811582820484141761069957610699612384565b6000600182016123d6576123d6612384565b5060010190565b601f8211156108d357600081815260208120601f850160051c810160208610156124045750805b601f850160051c820191505b818110156115f257828155600101612410565b6001600160401b0383111561243a5761243a61218e565b61244e836124488354612315565b836123dd565b6000601f841160018114612482576000851561246a5750838201355b600019600387901b1c1916600186901b1783556124dc565b600083815260209020601f19861690835b828110156124b35786850135825560209485019460019092019101612493565b50868210156124d05760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008351612548818460208801611fc8565b83519083019061255c818360208801611fc8565b01949350505050565b6001600160801b0382811682821603908082111561258557612585612384565b5092915050565b6001600160801b0381811683821601908082111561258557612585612384565b8181038181111561069957610699612384565b6000816125ce576125ce612384565b506000190190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061260990830184611fec565b9695505050505050565b60006020828403121561262557600080fd5b81516110fc81611f95565b634e487b7160e01b600052601260045260246000fd5b60008261265557612655612630565b500490565b60008261266957612669612630565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220dc17b42d431836949564b1a812c2445fb3ff051276df906a0b1d9f0eda47ecd364736f6c63430008110033

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

000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000001f4

-----Decoded View---------------
Arg [0] : maxBatchSize_ (uint256): 50
Arg [1] : collectionSize_ (uint256): 500

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001f4


Deployed Bytecode Sourcemap

21804:3196:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11707:422;;;;;;;;;;-1:-1:-1;11707:422:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;11707:422:0;;;;;;;;13511:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14750:292::-;;;;;;;;;;-1:-1:-1;14750:292:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:1;;;1679:51;;1667:2;1652:18;14750:292:0;1533:203:1;14325:413:0;;;;;;;;;;-1:-1:-1;14325:413:0;;;;;:::i;:::-;;:::i;:::-;;10479:100;;;;;;;;;;-1:-1:-1;10559:12:0;;10479:100;;;2324:25:1;;;2312:2;2297:18;10479:100:0;2178:177:1;15603:162:0;;;;;;;;;;-1:-1:-1;15603:162:0;;;;;:::i;:::-;;:::i;24414:156::-;;;;;;;;;;-1:-1:-1;24414:156:0;;;;;:::i;:::-;;:::i;22322:592::-;;;;;;:::i;:::-;;:::i;10831:864::-;;;;;;;;;;-1:-1:-1;10831:864:0;;;;;:::i;:::-;;:::i;15777:177::-;;;;;;;;;;-1:-1:-1;15777:177:0;;;;;:::i;:::-;;:::i;10591:228::-;;;;;;;;;;-1:-1:-1;10591:228:0;;;;;:::i;:::-;;:::i;24103:106::-;;;;;;;;;;-1:-1:-1;24103:106:0;;;;;:::i;:::-;;:::i;13375:124::-;;;;;;;;;;-1:-1:-1;13375:124:0;;;;;:::i;:::-;;:::i;12141:258::-;;;;;;;;;;-1:-1:-1;12141:258:0;;;;;:::i;:::-;;:::i;24874:123::-;;;;;;;;;;;;;:::i;21871:48::-;;;;;;;;;;;;;;;2524:87;;;;;;;;;;-1:-1:-1;2570:7:0;2597:6;-1:-1:-1;;;;;2597:6:0;2524:87;;24699:167;;;;;;;;;;-1:-1:-1;24699:167:0;;;;;:::i;:::-;;:::i;:::-;;;;3711:13:1;;-1:-1:-1;;;;;3707:39:1;3689:58;;3807:4;3795:17;;;3789:24;-1:-1:-1;;;;;3785:49:1;3763:20;;;3756:79;;;;3662:18;24699:167:0;3481:360:1;13623:104:0;;;;;;;;;;;;;:::i;24217:189::-;;;;;;;;;;;;;:::i;15054:311::-;;;;;;;;;;-1:-1:-1;15054:311:0;;;;;:::i;:::-;;:::i;15966:355::-;;;;;;;;;;-1:-1:-1;15966:355:0;;;;;:::i;:::-;;:::i;13739:468::-;;;;;;;;;;-1:-1:-1;13739:468:0;;;;;:::i;:::-;;:::i;23515:99::-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;23589:17:0;;;;;;;23596:10;23589:17;-1:-1:-1;;;;;23589:17:0;;;;;;-1:-1:-1;;;23589:17:0;;;;;;;;;;;23515:99;;5728:41:1;;;5811:24;;5807:33;;;5785:20;;;5778:63;;;;5648:18;23515:99:0;5473:374:1;19548:43:0;;;;;;;;;;;;;;;;23622:248;;;;;;;;;;-1:-1:-1;23622:248:0;;;;;:::i;:::-;;:::i;23270:223::-;;;;;;;;;;-1:-1:-1;23270:223:0;;;;;:::i;:::-;;:::i;24578:113::-;;;;;;;;;;-1:-1:-1;24578:113:0;;;;;:::i;:::-;;:::i;15377:214::-;;;;;;;;;;-1:-1:-1;15377:214:0;;;;;:::i;:::-;-1:-1:-1;;;;;15548:25:0;;;15519:4;15548:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;15377:214;2862:201;;;;;;;;;;-1:-1:-1;2862:201:0;;;;;:::i;:::-;;:::i;11707:422::-;11854:4;-1:-1:-1;;;;;;11896:40:0;;-1:-1:-1;;;11896:40:0;;:105;;-1:-1:-1;;;;;;;11953:48:0;;-1:-1:-1;;;11953:48:0;11896:105;:172;;;-1:-1:-1;;;;;;;12018:50:0;;-1:-1:-1;;;12018:50:0;11896:172;:225;;;-1:-1:-1;;;;;;;;;;7308:40:0;;;12085:36;11876:245;11707:422;-1:-1:-1;;11707:422:0:o;13511:100::-;13565:13;13598:5;13591:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13511:100;:::o;14750:292::-;14854:7;14901:16;14909:7;16424:12;;-1:-1:-1;16414:22:0;16333:111;14901:16;14879:111;;;;-1:-1:-1;;;14879:111:0;;7415:2:1;14879:111:0;;;7397:21:1;7454:2;7434:18;;;7427:30;7493:34;7473:18;;;7466:62;-1:-1:-1;;;7544:18:1;;;7537:43;7597:19;;14879:111:0;;;;;;;;;-1:-1:-1;15010:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;15010:24:0;;14750:292::o;14325:413::-;14398:13;14414:24;14430:7;14414:15;:24::i;:::-;14398:40;;14463:5;-1:-1:-1;;;;;14457:11:0;:2;-1:-1:-1;;;;;14457:11:0;;14449:58;;;;-1:-1:-1;;;14449:58:0;;7829:2:1;14449:58:0;;;7811:21:1;7868:2;7848:18;;;7841:30;7907:34;7887:18;;;7880:62;-1:-1:-1;;;7958:18:1;;;7951:32;8000:19;;14449:58:0;7627:398:1;14449:58:0;2144:10;-1:-1:-1;;;;;14542:21:0;;;;:62;;-1:-1:-1;14567:37:0;14584:5;2144:10;15377:214;:::i;14567:37::-;14520:169;;;;-1:-1:-1;;;14520:169:0;;8232:2:1;14520:169:0;;;8214:21:1;8271:2;8251:18;;;8244:30;8310:34;8290:18;;;8283:62;8381:27;8361:18;;;8354:55;8426:19;;14520:169:0;8030:421:1;14520:169:0;14702:28;14711:2;14715:7;14724:5;14702:8;:28::i;:::-;14387:351;14325:413;;:::o;15603:162::-;15729:28;15739:4;15745:2;15749:7;15729:9;:28::i;24414:156::-;2570:7;2597:6;-1:-1:-1;;;;;2597:6:0;2144:10;2661:23;2653:68;;;;-1:-1:-1;;;2653:68:0;;;;;;;:::i;:::-;227:1:::1;387:7;;:19:::0;379:63:::1;;;::::0;-1:-1:-1;;;379:63:0;;9019:2:1;379:63:0::1;::::0;::::1;9001:21:1::0;9058:2;9038:18;;;9031:30;9097:33;9077:18;;;9070:61;9148:18;;379:63:0::1;8817:355:1::0;379:63:0::1;227:1;463:7;:18:::0;24534:28:::2;24553:8:::0;24534:18:::2;:28::i;:::-;-1:-1:-1::0;183:1:0::1;524:7;:22:::0;24414:156::o;22322:592::-;22418:10;:22;-1:-1:-1;;;;;;;;22418:22:0;;;;;22490:30;22582:14;22570:8;22554:13;10559:12;;;10479:100;22554:13;:24;;;;:::i;:::-;:42;;22532:110;;;;-1:-1:-1;;;22532:110:0;;9641:2:1;22532:110:0;;;9623:21:1;9680:2;9660:18;;;9653:30;-1:-1:-1;;;9699:18:1;;;9692:48;9757:18;;22532:110:0;9439:342:1;22532:110:0;22675:48;22690:11;22703:19;22675:14;:48::i;:::-;22653:127;;;;-1:-1:-1;;;22653:127:0;;9988:2:1;22653:127:0;;;9970:21:1;10027:2;10007:18;;;10000:30;10066:31;10046:18;;;10039:59;10115:18;;22653:127:0;9786:353:1;22653:127:0;22812:22;22826:8;22812:11;:22;:::i;:::-;22799:9;:35;22791:71;;;;-1:-1:-1;;;22791:71:0;;10519:2:1;22791:71:0;;;10501:21:1;10558:2;10538:18;;;10531:30;10597:25;10577:18;;;10570:53;10640:18;;22791:71:0;10317:347:1;22791:71:0;22875:31;22885:10;22897:8;22875:9;:31::i;10831:864::-;10956:7;10997:16;11007:5;10997:9;:16::i;:::-;10989:5;:24;10981:71;;;;-1:-1:-1;;;10981:71:0;;10871:2:1;10981:71:0;;;10853:21:1;10910:2;10890:18;;;10883:30;10949:34;10929:18;;;10922:62;-1:-1:-1;;;11000:18:1;;;10993:32;11042:19;;10981:71:0;10669:398:1;10981:71:0;11063:22;11088:13;10559:12;;;10479:100;11088:13;11063:38;;11112:19;11146:25;11200:9;11195:426;11219:14;11215:1;:18;11195:426;;;11255:31;11289:14;;;:11;:14;;;;;;;;;11255:48;;;;;;;;;-1:-1:-1;;;;;11255:48:0;;;;;-1:-1:-1;;;11255:48:0;;;-1:-1:-1;;;;;11255:48:0;;;;;;;;11322:28;11318:103;;11391:14;;;-1:-1:-1;11318:103:0;11460:5;-1:-1:-1;;;;;11439:26:0;:17;-1:-1:-1;;;;;11439:26:0;;11435:175;;11505:5;11490:11;:20;11486:77;;-1:-1:-1;11542:1:0;-1:-1:-1;11535:8:0;;-1:-1:-1;;;11535:8:0;11486:77;11581:13;;;;:::i;:::-;;;;11435:175;-1:-1:-1;11235:3:0;;;;:::i;:::-;;;;11195:426;;;-1:-1:-1;11631:56:0;;-1:-1:-1;;;11631:56:0;;11414:2:1;11631:56:0;;;11396:21:1;11453:2;11433:18;;;11426:30;11492:34;11472:18;;;11465:62;-1:-1:-1;;;11543:18:1;;;11536:44;11597:19;;11631:56:0;11212:410:1;15777:177:0;15907:39;15924:4;15930:2;15934:7;15907:39;;;;;;;;;;;;:16;:39::i;10591:228::-;10694:7;10735:13;10559:12;;;10479:100;10735:13;10727:5;:21;10719:69;;;;-1:-1:-1;;;10719:69:0;;11829:2:1;10719:69:0;;;11811:21:1;11868:2;11848:18;;;11841:30;11907:34;11887:18;;;11880:62;-1:-1:-1;;;11958:18:1;;;11951:33;12001:19;;10719:69:0;11627:399:1;10719:69:0;-1:-1:-1;10806:5:0;10591:228::o;24103:106::-;2570:7;2597:6;-1:-1:-1;;;;;2597:6:0;2144:10;2661:23;2653:68;;;;-1:-1:-1;;;2653:68:0;;;;;;;:::i;:::-;24178:13:::1;:23;24194:7:::0;;24178:13;:23:::1;:::i;13375:124::-:0;13439:7;13466:20;13478:7;13466:11;:20::i;:::-;:25;;13375:124;-1:-1:-1;;13375:124:0:o;12141:258::-;12205:7;-1:-1:-1;;;;;12247:19:0;;12225:112;;;;-1:-1:-1;;;12225:112:0;;14291:2:1;12225:112:0;;;14273:21:1;14330:2;14310:18;;;14303:30;14369:34;14349:18;;;14342:62;-1:-1:-1;;;14420:18:1;;;14413:41;14471:19;;12225:112:0;14089:407:1;12225:112:0;-1:-1:-1;;;;;;12363:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;12363:27:0;;12141:258::o;24874:123::-;2570:7;2597:6;-1:-1:-1;;;;;2597:6:0;2144:10;2661:23;2653:68;;;;-1:-1:-1;;;2653:68:0;;;;;;;:::i;:::-;24948:41:::1;::::0;-1:-1:-1;;;24948:41:0;;14703:2:1;24948:41:0::1;::::0;::::1;14685:21:1::0;14742:2;14722:18;;;14715:30;14781:25;14761:18;;;14754:53;14824:18;;24948:41:0::1;14501:347:1::0;24699:167:0;-1:-1:-1;;;;;;;;;;;;;;;;;24838:20:0;24850:7;24838:11;:20::i;13623:104::-;13679:13;13712:7;13705:14;;;;;:::i;24217:189::-;2570:7;2597:6;-1:-1:-1;;;;;2597:6:0;2144:10;2661:23;2653:68;;;;-1:-1:-1;;;2653:68:0;;;;;;;:::i;:::-;227:1:::1;387:7;;:19:::0;379:63:::1;;;::::0;-1:-1:-1;;;379:63:0;;9019:2:1;379:63:0::1;::::0;::::1;9001:21:1::0;9058:2;9038:18;;;9031:30;9097:33;9077:18;;;9070:61;9148:18;;379:63:0::1;8817:355:1::0;379:63:0::1;227:1;463:7;:18:::0;24302:49:::2;::::0;24284:12:::2;::::0;24302:10:::2;::::0;24325:21:::2;::::0;24284:12;24302:49;24284:12;24302:49;24325:21;24302:10;:49:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24283:68;;;24370:7;24362:36;;;::::0;-1:-1:-1;;;24362:36:0;;15265:2:1;24362:36:0::2;::::0;::::2;15247:21:1::0;15304:2;15284:18;;;15277:30;-1:-1:-1;;;15323:18:1;;;15316:46;15379:18;;24362:36:0::2;15063:340:1::0;15054:311:0;2144:10;-1:-1:-1;;;;;15172:24:0;;;15164:63;;;;-1:-1:-1;;;15164:63:0;;15610:2:1;15164:63:0;;;15592:21:1;15649:2;15629:18;;;15622:30;15688:28;15668:18;;;15661:56;15734:18;;15164:63:0;15408:350:1;15164:63:0;2144:10;15240:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;15240:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;15240:53:0;;;;;;;;;;15309:48;;540:41:1;;;15240:42:0;;2144:10;15309:48;;513:18:1;15309:48:0;;;;;;;15054:311;;:::o;15966:355::-;16125:28;16135:4;16141:2;16145:7;16125:9;:28::i;:::-;16186:48;16209:4;16215:2;16219:7;16228:5;16186:22;:48::i;:::-;16164:149;;;;-1:-1:-1;;;16164:149:0;;;;;;;:::i;:::-;15966:355;;;;:::o;13739:468::-;13857:13;13910:16;13918:7;16424:12;;-1:-1:-1;16414:22:0;16333:111;13910:16;13888:113;;;;-1:-1:-1;;;13888:113:0;;16385:2:1;13888:113:0;;;16367:21:1;16424:2;16404:18;;;16397:30;16463:34;16443:18;;;16436:62;-1:-1:-1;;;16514:18:1;;;16507:45;16569:19;;13888:113:0;16183:411:1;13888:113:0;14014:21;14038:10;:8;:10::i;:::-;14014:34;;14103:1;14085:7;14079:21;:25;:120;;;;;;;;;;;;;;;;;14148:7;14157:18;:7;:16;:18::i;:::-;14131:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14079:120;14059:140;13739:468;-1:-1:-1;;;13739:468:0:o;23622:248::-;2570:7;2597:6;-1:-1:-1;;;;;2597:6:0;2144:10;2661:23;2653:68;;;;-1:-1:-1;;;2653:68:0;;;;;;;:::i;:::-;23778:84:::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;23778:84:0;;::::1;::::0;;;;;;::::1;;::::0;;::::1;::::0;;;-1:-1:-1;;;23765:97:0::1;;:10;:97:::0;23622:248::o;23270:223::-;23395:4;23424:19;;;;;:61;;-1:-1:-1;;23447:15:0;:38;;;23417:68;-1:-1:-1;23270:223:0:o;24578:113::-;24636:7;24663:20;24677:5;24663:13;:20::i;2862:201::-;2570:7;2597:6;-1:-1:-1;;;;;2597:6:0;2144:10;2661:23;2653:68;;;;-1:-1:-1;;;2653:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2951:22:0;::::1;2943:73;;;::::0;-1:-1:-1;;;2943:73:0;;17302:2:1;2943:73:0::1;::::0;::::1;17284:21:1::0;17341:2;17321:18;;;17314:30;17380:34;17360:18;;;17353:62;-1:-1:-1;;;17431:18:1;;;17424:36;17477:19;;2943:73:0::1;17100:402:1::0;2943:73:0::1;3027:28;3046:8;3027:18;:28::i;:::-;2862:201:::0;:::o;19344:196::-;19459:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;19459:29:0;-1:-1:-1;;;;;19459:29:0;;;;;;;;;19504:28;;19459:24;;19504:28;;;;;;;19344:196;;;:::o;17875:1457::-;17993:35;18031:20;18043:7;18031:11;:20::i;:::-;18106:18;;17993:58;;-1:-1:-1;18064:22:0;;-1:-1:-1;;;;;18090:34:0;2144:10;-1:-1:-1;;;;;18090:34:0;;:87;;;-1:-1:-1;2144:10:0;18141:20;18153:7;18141:11;:20::i;:::-;-1:-1:-1;;;;;18141:36:0;;18090:87;:154;;;-1:-1:-1;18211:18:0;;18194:50;;2144:10;15377:214;:::i;18194:50::-;18064:181;;18280:17;18258:117;;;;-1:-1:-1;;;18258:117:0;;17709:2:1;18258:117:0;;;17691:21:1;17748:2;17728:18;;;17721:30;17787:34;17767:18;;;17760:62;-1:-1:-1;;;17838:18:1;;;17831:48;17896:19;;18258:117:0;17507:414:1;18258:117:0;18432:4;-1:-1:-1;;;;;18410:26:0;:13;:18;;;-1:-1:-1;;;;;18410:26:0;;18388:114;;;;-1:-1:-1;;;18388:114:0;;18128:2:1;18388:114:0;;;18110:21:1;18167:2;18147:18;;;18140:30;18206:34;18186:18;;;18179:62;-1:-1:-1;;;18257:18:1;;;18250:36;18303:19;;18388:114:0;17926:402:1;18388:114:0;-1:-1:-1;;;;;18521:16:0;;18513:66;;;;-1:-1:-1;;;18513:66:0;;18535:2:1;18513:66:0;;;18517:21:1;18574:2;18554:18;;;18547:30;18613:34;18593:18;;;18586:62;-1:-1:-1;;;18664:18:1;;;18657:35;18709:19;;18513:66:0;18333:401:1;18513:66:0;18656:49;18673:1;18677:7;18686:13;:18;;;18656:8;:49::i;:::-;-1:-1:-1;;;;;18718:18:0;;;;;;:12;:18;;;;;:31;;18748:1;;18718:18;:31;;18748:1;;-1:-1:-1;;;;;18718:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;18718:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18760:16:0;;-1:-1:-1;18760:16:0;;;:12;:16;;;;;:29;;-1:-1:-1;;;18760:16:0;;:29;;-1:-1:-1;;18760:29:0;;:::i;:::-;;;-1:-1:-1;;;;;18760:29:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18823:43:0;;;;;;;;-1:-1:-1;;;;;18823:43:0;;;;;-1:-1:-1;;;;;18849:15:0;18823:43;;;;;;;;;-1:-1:-1;18800:20:0;;;:11;:20;;;;;;:66;;;;;;;;;-1:-1:-1;;;18800:66:0;-1:-1:-1;;;;;;18800:66:0;;;;;;;;;;;18917:11;18812:7;-1:-1:-1;18917:11:0;:::i;:::-;18984:1;18943:24;;;:11;:24;;;;;:29;18895:33;;-1:-1:-1;;;;;;18943:29:0;18939:288;;19007:20;19015:11;16424:12;;-1:-1:-1;16414:22:0;16333:111;19007:20;19003:213;;;19075:125;;;;;;;;19112:18;;-1:-1:-1;;;;;19075:125:0;;;;;;19153:28;;;;-1:-1:-1;;;;;19075:125:0;;;;;;;;;-1:-1:-1;19048:24:0;;;:11;:24;;;;;;;:152;;;;;;;;;-1:-1:-1;;;19048:152:0;-1:-1:-1;;;;;;19048:152:0;;;;;;;;;;;;19003:213;19263:7;19259:2;-1:-1:-1;;;;;19244:27:0;19253:4;-1:-1:-1;;;;;19244:27:0;;;;;;;;;;;19282:42;17979:1353;;;17875:1457;;;:::o;19604:853::-;19698:24;;19741:12;19733:49;;;;-1:-1:-1;;;19733:49:0;;19348:2:1;19733:49:0;;;19330:21:1;19387:2;19367:18;;;19360:30;19426:26;19406:18;;;19399:54;19470:18;;19733:49:0;19146:348:1;19733:49:0;19793:16;19843:1;19812:28;19832:8;19812:17;:28;:::i;:::-;:32;;;;:::i;:::-;19793:51;-1:-1:-1;19870:18:0;19887:1;19870:14;:18;:::i;:::-;19859:8;:29;19855:91;;;19916:18;19933:1;19916:14;:18;:::i;:::-;19905:29;;19855:91;19972:17;19980:8;16424:12;;-1:-1:-1;16414:22:0;16333:111;19972:17;19964:68;;;;-1:-1:-1;;;19964:68:0;;19834:2:1;19964:68:0;;;19816:21:1;19873:2;19853:18;;;19846:30;19912:34;19892:18;;;19885:62;-1:-1:-1;;;19963:18:1;;;19956:36;20009:19;;19964:68:0;19632:402:1;19964:68:0;20060:17;20043:357;20084:8;20079:1;:13;20043:357;;20149:1;20118:14;;;:11;:14;;;;;:19;-1:-1:-1;;;;;20118:19:0;20114:275;;20172:31;20206:14;20218:1;20206:11;:14::i;:::-;20256:117;;;;;;;;20293:14;;-1:-1:-1;;;;;20256:117:0;;;;;;20330:24;;;;-1:-1:-1;;;;;20256:117:0;;;;;;;;;-1:-1:-1;20239:14:0;;;:11;:14;;;;;;;:134;;;;;;;;;-1:-1:-1;;;20239:134:0;-1:-1:-1;;;;;;20239:134:0;;;;;;;;;;;;-1:-1:-1;20114:275:0;20094:3;;;;:::i;:::-;;;;20043:357;;;-1:-1:-1;20437:12:0;:8;20448:1;20437:12;:::i;:::-;20410:24;:39;-1:-1:-1;;;19604:853:0:o;16452:104::-;16521:27;16531:2;16535:8;16521:27;;;;;;;;;;;;:9;:27::i;:::-;16452:104;;:::o;12681:682::-;-1:-1:-1;;;;;;;;;;;;;;;;;12816:16:0;12824:7;16424:12;;-1:-1:-1;16414:22:0;16333:111;12816:16;12808:71;;;;-1:-1:-1;;;12808:71:0;;20241:2:1;12808:71:0;;;20223:21:1;20280:2;20260:18;;;20253:30;20319:34;20299:18;;;20292:62;-1:-1:-1;;;20370:18:1;;;20363:40;20420:19;;12808:71:0;20039:406:1;12808:71:0;12892:26;12944:12;12933:7;:23;12929:103;;12994:22;13004:12;12994:7;:22;:::i;:::-;:26;;13019:1;12994:26;:::i;:::-;12973:47;;12929:103;13064:7;13044:242;13081:18;13073:4;:26;13044:242;;13124:31;13158:17;;;:11;:17;;;;;;;;;13124:51;;;;;;;;;-1:-1:-1;;;;;13124:51:0;;;;;-1:-1:-1;;;13124:51:0;;;-1:-1:-1;;;;;13124:51:0;;;;;;;;13194:28;13190:85;;13250:9;12681:682;-1:-1:-1;;;;12681:682:0:o;13190:85::-;-1:-1:-1;13101:6:0;;;;:::i;:::-;;;;13044:242;;;-1:-1:-1;13298:57:0;;-1:-1:-1;;;13298:57:0;;20793:2:1;13298:57:0;;;20775:21:1;20832:2;20812:18;;;20805:30;20871:34;20851:18;;;20844:62;-1:-1:-1;;;20922:18:1;;;20915:45;20977:19;;13298:57:0;20591:411:1;20469:985:0;20624:4;-1:-1:-1;;;;;20645:13:0;;3414:19;:23;20641:806;;20698:175;;-1:-1:-1;;;20698:175:0;;-1:-1:-1;;;;;20698:36:0;;;;;:175;;2144:10;;20792:4;;20819:7;;20849:5;;20698:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20698:175:0;;;;;;;;-1:-1:-1;;20698:175:0;;;;;;;;;;;;:::i;:::-;;;20677:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21060:6;:13;21077:1;21060:18;21056:321;;21103:109;;-1:-1:-1;;;21103:109:0;;;;;;;:::i;21056:321::-;21327:6;21321:13;21312:6;21308:2;21304:15;21297:38;20677:715;-1:-1:-1;;;;;;20937:55:0;-1:-1:-1;;;20937:55:0;;-1:-1:-1;20930:62:0;;20641:806;-1:-1:-1;21431:4:0;20641:806;20469:985;;;;;;:::o;23981:114::-;24041:13;24074;24067:20;;;;;:::i;657:550::-;713:13;761:5;770:1;761:10;757:53;;-1:-1:-1;;788:10:0;;;;;;;;;;;;-1:-1:-1;;;788:10:0;;;;;657:550::o;757:53::-;835:5;820:12;876:78;883:9;;876:78;;909:8;;;;:::i;:::-;;-1:-1:-1;932:10:0;;-1:-1:-1;940:2:0;932:10;;:::i;:::-;;;876:78;;;964:19;996:6;-1:-1:-1;;;;;986:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;986:17:0;;964:39;;1014:154;1021:10;;1014:154;;1048:11;1058:1;1048:11;;:::i;:::-;;-1:-1:-1;1117:10:0;1125:2;1117:5;:10;:::i;:::-;1104:24;;:2;:24;:::i;:::-;1091:39;;1074:6;1081;1074:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1074:56:0;;;;;;;;-1:-1:-1;1145:11:0;1154:2;1145:11;;:::i;:::-;;;1014:154;;12407:266;12468:7;-1:-1:-1;;;;;12510:19:0;;12488:118;;;;-1:-1:-1;;;12488:118:0;;22463:2:1;12488:118:0;;;22445:21:1;22502:2;22482:18;;;22475:30;22541:34;22521:18;;;22514:62;-1:-1:-1;;;22592:18:1;;;22585:47;22649:19;;12488:118:0;22261:413:1;12488:118:0;-1:-1:-1;;;;;;12632:19:0;;;;;:12;:19;;;;;:32;-1:-1:-1;;;12632:32:0;;-1:-1:-1;;;;;12632:32:0;;12407:266::o;3073:191::-;3147:16;3166:6;;-1:-1:-1;;;;;3183:17:0;;;-1:-1:-1;;;;;;3183:17:0;;;;;;3216:40;;3166:6;;;;;;;3216:40;;3147:16;3216:40;3136:128;3073:191;:::o;16568:1281::-;16714:12;;-1:-1:-1;;;;;16745:16:0;;16737:62;;;;-1:-1:-1;;;16737:62:0;;22881:2:1;16737:62:0;;;22863:21:1;22920:2;22900:18;;;22893:30;22959:34;22939:18;;;22932:62;-1:-1:-1;;;23010:18:1;;;23003:31;23051:19;;16737:62:0;22679:397:1;16737:62:0;16827:21;16835:12;16424;;-1:-1:-1;16414:22:0;16333:111;16827:21;16826:22;16818:64;;;;-1:-1:-1;;;16818:64:0;;23283:2:1;16818:64:0;;;23265:21:1;23322:2;23302:18;;;23295:30;23361:31;23341:18;;;23334:59;23410:18;;16818:64:0;23081:353:1;16818:64:0;16913:12;16901:8;:24;;16893:71;;;;-1:-1:-1;;;16893:71:0;;23641:2:1;16893:71:0;;;23623:21:1;23680:2;23660:18;;;23653:30;23719:34;23699:18;;;23692:62;-1:-1:-1;;;23770:18:1;;;23763:32;23812:19;;16893:71:0;23439:398:1;16893:71:0;-1:-1:-1;;;;;17084:16:0;;17051:30;17084:16;;;:12;:16;;;;;;;;;17051:49;;;;;;;;;-1:-1:-1;;;;;17051:49:0;;;;;-1:-1:-1;;;17051:49:0;;;;;;;;;;;17130:133;;;;;;;;17156:19;;17051:49;;17130:133;;;17156:38;;-1:-1:-1;;;;;17156:38:0;;;;:::i;:::-;-1:-1:-1;;;;;17130:133:0;;;;;17243:8;-1:-1:-1;;;;;17209:43:0;:11;:24;;;:43;;;;:::i;:::-;-1:-1:-1;;;;;17130:133:0;;;;;;-1:-1:-1;;;;;17111:16:0;;;;;;;:12;:16;;;;;;;;:152;;;;;;;;-1:-1:-1;;;17111:152:0;;;;;;;;;;;;17302:43;;;;;;;;;;-1:-1:-1;;;;;17328:15:0;17302:43;;;;;;;;17274:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;17274:71:0;-1:-1:-1;;;;;;17274:71:0;;;;;;;;;;;;;;;;;;17286:12;;17406:325;17430:8;17426:1;:12;17406:325;;;17465:38;;17490:12;;-1:-1:-1;;;;;17465:38:0;;;17482:1;;17465:38;;17482:1;;17465:38;17544:59;17575:1;17579:2;17583:12;17597:5;17544:22;:59::i;:::-;17518:172;;;;-1:-1:-1;;;17518:172:0;;;;;;;:::i;:::-;17705:14;;;;:::i;:::-;;;;17440:3;;;;;:::i;:::-;;;;17406:325;;;-1:-1:-1;17743:12:0;:27;;;17781:60;15966:355;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;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:592::-;2764:6;2772;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;2881:9;2868:23;-1:-1:-1;;;;;2951:2:1;2943:6;2940:14;2937:34;;;2967:1;2964;2957:12;2937:34;3005:6;2994:9;2990:22;2980:32;;3050:7;3043:4;3039:2;3035:13;3031:27;3021:55;;3072:1;3069;3062:12;3021:55;3112:2;3099:16;3138:2;3130:6;3127:14;3124:34;;;3154:1;3151;3144:12;3124:34;3199:7;3194:2;3185:6;3181:2;3177:15;3173:24;3170:37;3167:57;;;3220:1;3217;3210:12;3167:57;3251:2;3243:11;;;;;3273:6;;-1:-1:-1;2693:592:1;;-1:-1:-1;;;;2693:592:1:o;3290:186::-;3349:6;3402:2;3390:9;3381:7;3377:23;3373:32;3370:52;;;3418:1;3415;3408:12;3370:52;3441:29;3460:9;3441:29;:::i;3846:347::-;3911:6;3919;3972:2;3960:9;3951:7;3947:23;3943:32;3940:52;;;3988:1;3985;3978:12;3940:52;4011:29;4030:9;4011:29;:::i;:::-;4001:39;;4090:2;4079:9;4075:18;4062:32;4137:5;4130:13;4123:21;4116:5;4113:32;4103:60;;4159:1;4156;4149:12;4103:60;4182:5;4172:15;;;3846:347;;;;;:::o;4198:127::-;4259:10;4254:3;4250:20;4247:1;4240:31;4290:4;4287:1;4280:15;4314:4;4311:1;4304:15;4330:1138;4425:6;4433;4441;4449;4502:3;4490:9;4481:7;4477:23;4473:33;4470:53;;;4519:1;4516;4509:12;4470:53;4542:29;4561:9;4542:29;:::i;:::-;4532:39;;4590:38;4624:2;4613:9;4609:18;4590:38;:::i;:::-;4580:48;;4675:2;4664:9;4660:18;4647:32;4637:42;;4730:2;4719:9;4715:18;4702:32;-1:-1:-1;;;;;4794:2:1;4786:6;4783:14;4780:34;;;4810:1;4807;4800:12;4780:34;4848:6;4837:9;4833:22;4823:32;;4893:7;4886:4;4882:2;4878:13;4874:27;4864:55;;4915:1;4912;4905:12;4864:55;4951:2;4938:16;4973:2;4969;4966:10;4963:36;;;4979:18;;:::i;:::-;5054:2;5048:9;5022:2;5108:13;;-1:-1:-1;;5104:22:1;;;5128:2;5100:31;5096:40;5084:53;;;5152:18;;;5172:22;;;5149:46;5146:72;;;5198:18;;:::i;:::-;5238:10;5234:2;5227:22;5273:2;5265:6;5258:18;5313:7;5308:2;5303;5299;5295:11;5291:20;5288:33;5285:53;;;5334:1;5331;5324:12;5285:53;5390:2;5385;5381;5377:11;5372:2;5364:6;5360:15;5347:46;5435:1;5430:2;5425;5417:6;5413:15;5409:24;5402:35;5456:6;5446:16;;;;;;;4330:1138;;;;;;;:::o;5852:188::-;5920:20;;-1:-1:-1;;;;;5969:46:1;;5959:57;;5949:85;;6030:1;6027;6020:12;6045:260;6113:6;6121;6174:2;6162:9;6153:7;6149:23;6145:32;6142:52;;;6190:1;6187;6180:12;6142:52;6213:29;6232:9;6213:29;:::i;:::-;6203:39;;6261:38;6295:2;6284:9;6280:18;6261:38;:::i;:::-;6251:48;;6045:260;;;;;:::o;6310:248::-;6378:6;6386;6439:2;6427:9;6418:7;6414:23;6410:32;6407:52;;;6455:1;6452;6445:12;6407:52;-1:-1:-1;;6478:23:1;;;6548:2;6533:18;;;6520:32;;-1:-1:-1;6310:248:1:o;6563:260::-;6631:6;6639;6692:2;6680:9;6671:7;6667:23;6663:32;6660:52;;;6708:1;6705;6698:12;6660:52;6731:29;6750:9;6731:29;:::i;:::-;6721:39;;6779:38;6813:2;6802:9;6798:18;6779:38;:::i;6828:380::-;6907:1;6903:12;;;;6950;;;6971:61;;7025:4;7017:6;7013:17;7003:27;;6971:61;7078:2;7070:6;7067:14;7047:18;7044:38;7041:161;;7124:10;7119:3;7115:20;7112:1;7105:31;7159:4;7156:1;7149:15;7187:4;7184:1;7177:15;7041:161;;6828:380;;;:::o;8456:356::-;8658:2;8640:21;;;8677:18;;;8670:30;8736:34;8731:2;8716:18;;8709:62;8803:2;8788:18;;8456:356::o;9177:127::-;9238:10;9233:3;9229:20;9226:1;9219:31;9269:4;9266:1;9259:15;9293:4;9290:1;9283:15;9309:125;9374:9;;;9395:10;;;9392:36;;;9408:18;;:::i;10144:168::-;10217:9;;;10248;;10265:15;;;10259:22;;10245:37;10235:71;;10286:18;;:::i;11072:135::-;11111:3;11132:17;;;11129:43;;11152:18;;:::i;:::-;-1:-1:-1;11199:1:1;11188:13;;11072:135::o;12157:545::-;12259:2;12254:3;12251:11;12248:448;;;12295:1;12320:5;12316:2;12309:17;12365:4;12361:2;12351:19;12435:2;12423:10;12419:19;12416:1;12412:27;12406:4;12402:38;12471:4;12459:10;12456:20;12453:47;;;-1:-1:-1;12494:4:1;12453:47;12549:2;12544:3;12540:12;12537:1;12533:20;12527:4;12523:31;12513:41;;12604:82;12622:2;12615:5;12612:13;12604:82;;;12667:17;;;12648:1;12637:13;12604:82;;12878:1206;-1:-1:-1;;;;;12997:3:1;12994:27;12991:53;;;13024:18;;:::i;:::-;13053:94;13143:3;13103:38;13135:4;13129:11;13103:38;:::i;:::-;13097:4;13053:94;:::i;:::-;13173:1;13198:2;13193:3;13190:11;13215:1;13210:616;;;;13870:1;13887:3;13884:93;;;-1:-1:-1;13943:19:1;;;13930:33;13884:93;-1:-1:-1;;12835:1:1;12831:11;;;12827:24;12823:29;12813:40;12859:1;12855:11;;;12810:57;13990:78;;13183:895;;13210:616;12104:1;12097:14;;;12141:4;12128:18;;-1:-1:-1;;13246:17:1;;;13347:9;13369:229;13383:7;13380:1;13377:14;13369:229;;;13472:19;;;13459:33;13444:49;;13579:4;13564:20;;;;13532:1;13520:14;;;;13399:12;13369:229;;;13373:3;13626;13617:7;13614:16;13611:159;;;13750:1;13746:6;13740:3;13734;13731:1;13727:11;13723:21;13719:34;13715:39;13702:9;13697:3;13693:19;13680:33;13676:79;13668:6;13661:95;13611:159;;;13813:1;13807:3;13804:1;13800:11;13796:19;13790:4;13783:33;13183:895;;;12878:1206;;;:::o;15763:415::-;15965:2;15947:21;;;16004:2;15984:18;;;15977:30;16043:34;16038:2;16023:18;;16016:62;-1:-1:-1;;;16109:2:1;16094:18;;16087:49;16168:3;16153:19;;15763:415::o;16599:496::-;16778:3;16816:6;16810:13;16832:66;16891:6;16886:3;16879:4;16871:6;16867:17;16832:66;:::i;:::-;16961:13;;16920:16;;;;16983:70;16961:13;16920:16;17030:4;17018:17;;16983:70;:::i;:::-;17069:20;;16599:496;-1:-1:-1;;;;16599:496:1:o;18739:200::-;-1:-1:-1;;;;;18875:10:1;;;18863;;;18859:27;;18898:12;;;18895:38;;;18913:18;;:::i;:::-;18895:38;18739:200;;;;:::o;18944:197::-;-1:-1:-1;;;;;19066:10:1;;;19078;;;19062:27;;19101:11;;;19098:37;;;19115:18;;:::i;19499:128::-;19566:9;;;19587:11;;;19584:37;;;19601:18;;:::i;20450:136::-;20489:3;20517:5;20507:39;;20526:18;;:::i;:::-;-1:-1:-1;;;20562:18:1;;20450:136::o;21007:489::-;-1:-1:-1;;;;;21276:15:1;;;21258:34;;21328:15;;21323:2;21308:18;;21301:43;21375:2;21360:18;;21353:34;;;21423:3;21418:2;21403:18;;21396:31;;;21201:4;;21444:46;;21470:19;;21462:6;21444:46;:::i;:::-;21436:54;21007:489;-1:-1:-1;;;;;;21007:489:1:o;21501:249::-;21570:6;21623:2;21611:9;21602:7;21598:23;21594:32;21591:52;;;21639:1;21636;21629:12;21591:52;21671:9;21665:16;21690:30;21714:5;21690:30;:::i;21755:127::-;21816:10;21811:3;21807:20;21804:1;21797:31;21847:4;21844:1;21837:15;21871:4;21868:1;21861:15;21887:120;21927:1;21953;21943:35;;21958:18;;:::i;:::-;-1:-1:-1;21992:9:1;;21887:120::o;22012:112::-;22044:1;22070;22060:35;;22075:18;;:::i;:::-;-1:-1:-1;22109:9:1;;22012:112::o;22129:127::-;22190:10;22185:3;22181:20;22178:1;22171:31;22221:4;22218:1;22211:15;22245:4;22242:1;22235:15

Swarm Source

ipfs://dc17b42d431836949564b1a812c2445fb3ff051276df906a0b1d9f0eda47ecd3
Loading...
Loading
Loading...
Loading
[ 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.