ETH Price: $3,027.60 (+4.30%)

Fido Dido Genesis Cards (FDGC)
 

Overview

TokenID

221

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

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED
// © Copyright 2022. All rights reserved. Perpetual Altruism Ltd.
pragma solidity ^0.8.19;

/// @title IERC721TokenReceiver
/// @dev See https://eips.ethereum.org/EIPS/eip-721. Note: the ERC-165 identifier for this interface is 0x150b7a02.
interface IERC721TokenReceiver {
    /// @notice Handle the receipt of an NFT
    /// @dev The ERC721 smart contract calls this function on the recipient
    ///  after a `transfer`. This function MAY throw to revert and reject the
    ///  transfer. Return of other than the magic value MUST result in the
    ///  transaction being reverted.
    ///  Note: the contract address is always the message sender.
    /// @param _operator The address which called `safeTransferFrom` function
    /// @param _from The address which previously owned the token
    /// @param _tokenId The NFT identifier which is being transferred
    /// @param _data Additional data with no specified format
    /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
    ///  unless throwing
    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4);
}

/// @title IERC165
/// @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md
interface IERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceID The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://eips.ethereum.org/EIPS/eip-721
///  Note: the ERC-165 identifier for this interface is 0x80ac58cd.
interface IERC721 /* is ERC165 */ {
    /// @dev This emits when ownership of any NFT changes by any mechanism.
    ///  This event emits when NFTs are created (`from` == 0) and destroyed
    ///  (`to` == 0). Exception: during contract creation, any number of NFTs
    ///  may be created and assigned without emitting Transfer. At the time of
    ///  any transfer, the approved address for that NFT (if any) is reset to none.
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);

    /// @dev This emits when the approved address for an NFT is changed or
    ///  reaffirmed. The zero address indicates there is no approved address.
    ///  When a Transfer event emits, this also indicates that the approved
    ///  address for that NFT (if any) is reset to none.
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);

    /// @dev This emits when an operator is enabled or disabled for an owner.
    ///  The operator can manage all NFTs of the owner.
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    /// @notice Count all NFTs assigned to an owner
    /// @dev NFTs assigned to the zero address are considered invalid, and this
    ///  function throws for queries about the zero address.
    /// @param _owner An address for whom to query the balance
    /// @return The number of NFTs owned by `_owner`, possibly zero
    function balanceOf(address _owner) external view returns (uint256);

    /// @notice Find the owner of an NFT
    /// @dev NFTs assigned to zero address are considered invalid, and queries
    ///  about them do throw.
    /// @param _tokenId The identifier for an NFT
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 _tokenId) external view returns (address);

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `_to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `_to`
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable;

    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to "".
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;

    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

    /// @notice Change or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    ///  Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param _approved The new approved NFT controller
    /// @param _tokenId The NFT to approve
    function approve(address _approved, uint256 _tokenId) external payable;

    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all of `msg.sender`'s assets
    /// @dev Emits the ApprovalForAll event. The contract MUST allow
    ///  multiple operators per owner.
    /// @param _operator Address to add to the set of authorized operators
    /// @param _approved True if the operator is approved, false to revoke approval
    function setApprovalForAll(address _operator, bool _approved) external;

    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `_tokenId` is not a valid NFT.
    /// @param _tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 _tokenId) external view returns (address);

    /// @notice Query if an address is an authorized operator for another address
    /// @param _owner The address that owns the NFTs
    /// @param _operator The address that acts on behalf of the owner
    /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}



/// @author Guillaume Gonnaud 2023
/// @title ERC721 for lazy minted drops.
/// How to use : 
/// Constructor, then setTokenURIPrefix to setup a prefix (default is tokenID as suffix)
/// call setAuthorizedLazyMinters(GBMDIamondAddress, true) to allow Lazy minting by the GBM contract
contract ER721LazyMinted is IERC721, IERC165 {

    string public name; // Returns the name of the token - e.g. "Generic ERC721".
    string public symbol; // Returns the symbol of the token. E.g. GEN721.
    mapping(address => uint256) public override balanceOf; //The number of token an address own
    uint256 public totalSupply; //The total amount of minted tokens
    mapping(uint256 => string) tokenURIs;

    string public tokenURIPrefix;
    bool public usingTokenIDAsSuffix;
    mapping(address => bool) public authorizedLazyMinters;

    address public owner;

    mapping(uint256 => address) internal ownerOfVar;
    mapping(uint256 => address) internal approvedTransferAddress; //Address allowed to Transfer a token
    mapping(address => mapping(address => bool)) internal approvedOperator; //Approved operators mapping: owner => operator => allowed?

    mapping(bytes4 => bool) supportedInterfaces;

    /// @notice Constructor
    /// @dev Please change the values in here if you want more specific values, or make the constructor takes arguments
    constructor(string memory _name, string memory _symbol)
    {
        owner = msg.sender;
        name = _name;
        symbol = _symbol;

        usingTokenIDAsSuffix = true;

        supportedInterfaces[0x2a55205a] = true; //Royalty standard ERC2981
        supportedInterfaces[0x80ac58cd] = true; //ERC721
        supportedInterfaces[0x5b5e139f] = true; //ERC721Metadata  support (NFT images/json)
        supportedInterfaces[0x01ffc9a7] = true; //ERC165
        
    }   

    /// @notice Find the owner of an NFT
    /// @param _tokenId The identifier for an NFT
    /// @return The address of the owner of the NFT
    function ownerOf(uint256 _tokenId) external override view returns (address){
        return ownerOfVar[_tokenId];
    }


    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
    ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
    ///  `onERC721Received` on `_to` and throws if the return value is not
    ///  `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    /// @param data Additional data with no specified format, sent in call to `_to`
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external override payable{
        safeTransferFromInternal(_from, _to, _tokenId, data);
    }


    /// @notice Transfers the ownership of an NFT from one address to another address
    /// @dev This works identically to the other function with an extra data parameter,
    ///  except this function just sets data to "".
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external override payable{
        safeTransferFromInternal(_from, _to, _tokenId, "");
    }


    /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
    ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
    ///  THEY MAY BE PERMANENTLY LOST
    /// @dev Throws unless `msg.sender` is the current owner, an authorized
    ///  operator, or the approved address for this NFT. Throws if `_from` is
    ///  not the current owner. Throws if `_to` is the zero address. Throws if
    ///  `_tokenId` is not a valid NFT.
    /// @param _from The current owner of the NFT
    /// @param _to The new owner
    /// @param _tokenId The NFT to transfer
    function transferFrom(address _from, address _to, uint256 _tokenId) external override payable{
        transferFromInternal(_from, _to, _tokenId);
    }

    /// @notice Change or reaffirm the approved address for an NFT
    /// @dev The zero address indicates there is no approved address.
    ///  Throws unless `msg.sender` is the current NFT owner, or an authorized
    ///  operator of the current owner.
    /// @param _approved The new approved NFT controller
    /// @param _tokenId The NFT to approve
    function approve(address _approved, uint256 _tokenId) external override payable{
        require(msg.sender == ownerOfVar[_tokenId] || 
            approvedOperator[ownerOfVar[_tokenId]][msg.sender],
            "approve: msg.sender is not allowed to approve the token"
        );

        approvedTransferAddress[_tokenId] = _approved;
        emit Approval(ownerOfVar[_tokenId], _approved, _tokenId);
    }


    /// @notice Enable or disable approval for a third party ("operator") to manage
    ///  all of `msg.sender`'s assets
    /// @dev Emits the ApprovalForAll event. The contract MUST allow
    ///  multiple operators per owner.
    /// @param _operator Address to add to the set of authorized operators
    /// @param _approved True if the operator is approved, false to revoke approval
    function setApprovalForAll(address _operator, bool _approved) external override {
        approvedOperator[msg.sender][_operator] = _approved;
        emit ApprovalForAll(msg.sender, _operator, _approved);
    }

    
    /// @notice Get the approved address for a single NFT
    /// @dev Throws if `_tokenId` is not a valid NFT.
    /// @param _tokenId The NFT to find the approved address for
    /// @return The approved address for this NFT, or the zero address if there is none
    function getApproved(uint256 _tokenId) external override view returns (address){
        return approvedTransferAddress[_tokenId];
    }


    /// @notice Query if an address is an authorized operator for another address
    /// @param _owner The address that owns the NFTs
    /// @param _operator The address that acts on behalf of the owner
    /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
    function isApprovedForAll(address _owner, address _operator) external override view returns (bool){
        return  approvedOperator[_owner][_operator];
    }


    /// @notice Query if a contract implements an interface
    /// @param interfaceID The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceID) external override view returns (bool){
        return (supportedInterfaces[interfaceID]);
    }


    function setTokenURIPrefix(string calldata prefix) external {
        require(owner == msg.sender, "Only the owner can set the prefix");
        tokenURIPrefix = prefix;
    }

    function setUsingTokenIDAsSuffix(bool usingSuffix) external {
        require(owner == msg.sender, "Only the owner can set the suffix rule");
        usingTokenIDAsSuffix = usingSuffix;
    }

    /// @notice Allow or disallow an address from calling transfer (0x0, to, tokenID)
    /// @param minter The address of the minter
    /// @param authorized true if to make the address a lazy minter, false to remove the authorization
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    function setAuthorizedLazyMinters(address minter, bool authorized) external {
        require(owner == msg.sender, "Only the owner can set the lazy minters");
        authorizedLazyMinters[minter] = authorized;
    }


    /// @notice Mint a token for msg.sender
    function mint(string calldata _URI, uint256 _tokenID) external returns (uint256) {
        require(owner == msg.sender, "Only the owner can mint");
        require( ownerOfVar[_tokenID] == address(0), "Token Already minted");
        return internalMint(_URI, _tokenID);
    }


    function internalMint(string calldata _URI, uint256 _tokenID) internal returns (uint256){

        totalSupply++;
        balanceOf[msg.sender] = balanceOf[msg.sender] + 1;

        //Changing ownership
        ownerOfVar[_tokenID] = msg.sender;
        tokenURIs[_tokenID] = _URI;

        //Emitting transfer event
        emit Transfer(address(0x0), msg.sender, _tokenID);

        return totalSupply;
    }


    /// @dev Called by both variants of Safetransfer. Is a transfer followed by a smartContract check and then
    /// an onERC721Received call
    function safeTransferFromInternal(address _from, address _to, uint256 _tokenId, bytes memory data) internal {
        transferFromInternal(_from, _to, _tokenId);
        
        if(isContract(_to)){
            //bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")) == 0x150b7a02
            require(IERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, data) == bytes4(0x150b7a02));
        }
    }


    /// @dev Actual token transfer code called by all the other functions
    function transferFromInternal(address _from, address _to, uint256 _tokenId) internal {
        require(_to != address(0x0), "transferFromInternal: Tokens cannot be send to 0x0. Use 0xdead instead ?");
        require(ownerOfVar[_tokenId] == _from, "transferFromInternal: _from is not the owner of the token");
        require(msg.sender == ownerOfVar[_tokenId] || 
            approvedOperator[ownerOfVar[_tokenId]][msg.sender] ||
            msg.sender == approvedTransferAddress[_tokenId] ||
            (authorizedLazyMinters[msg.sender] && _from == address(0x0)),
            "transferFromInternal: msg.sender is not allowed to manipulate the token"
        );

        // Adjusting token balances
        if(_from != address(0x0)){
            balanceOf[_from] = balanceOf[_from] - 1;
        } else {
            totalSupply++;
        }
        balanceOf[_to] = balanceOf[_to] + 1;

        //Resetting approved addresse permission
        approvedTransferAddress[_tokenId] = address(0x0);

        //Changing ownership
        ownerOfVar[_tokenId] = _to;

        //Emitting transfer event
        emit Transfer(_from, _to, _tokenId);
        
    }
    

    /// @notice Check if an address is a contract
    /// @param _address The adress you want to test
    /// @return true if the address has bytecode, false if not
    function isContract(address _address) internal view returns(bool){
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(_address) }
        return (codehash != accountHash && codehash != 0x0);
    }


    mapping(uint256 => address) royaltyReceiver;
    mapping(uint256 => uint256) royaltyPercentage;

    function setRoyaltyInfo(uint256, address receiver, uint256 percentkage) external {
        require(msg.sender == owner);
        royaltyReceiver[0] = receiver;
        royaltyPercentage[0] = percentkage;
    }


    function royaltyInfo(uint256, uint256 finalAmount) public view returns(address receiver, uint256 royaltyAmount) {
        uint256 royalty = finalAmount * royaltyPercentage[0] / 10000;
        return(royaltyReceiver[0], royalty);
    }


    /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
    /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
    ///  3986. The URI may point to a JSON file that conforms to the "ERC721
    ///  Metadata JSON Schema".
    function tokenURI(uint256 _tokenId) external view returns (string memory){
        if(bytes(tokenURIs[_tokenId]).length != 0){
            return (tokenURIs[_tokenId]);
        } else if(usingTokenIDAsSuffix) {
            return string.concat(tokenURIPrefix, toString(_tokenId), ".json");
        } else {
            return tokenURIPrefix;
        }
    }


    function _setTokenURI(uint256 _tokenId, string memory _tokenURI) internal {
        tokenURIs[_tokenId] = _tokenURI;
    }


    function setTokenURI(uint256 _tokenId, string memory _tokenURI) external {
        require(msg.sender == owner);
        _setTokenURI(_tokenId, _tokenURI);
    }


    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
            /// @solidity memory-safe-assembly
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) { 
                ptr--;
                /// @solidity memory-safe-assembly
                assembly {
                    mstore8(ptr, byte(mod(value, 10), "0123456789"))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }


    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10 ** 64) {
                value /= 10 ** 64;
                result += 64;
            }
            if (value >= 10 ** 32) {
                value /= 10 ** 32;
                result += 32;
            }
            if (value >= 10 ** 16) {
                value /= 10 ** 16;
                result += 16;
            }
            if (value >= 10 ** 8) {
                value /= 10 ** 8;
                result += 8;
            }
            if (value >= 10 ** 4) {
                value /= 10 ** 4;
                result += 4;
            }
            if (value >= 10 ** 2) {
                value /= 10 ** 2;
                result += 2;
            }
            if (value >= 10 ** 1) {
                result += 1;
            }
        }
        return result;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedLazyMinters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_URI","type":"string"},{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"finalAmount","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","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":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"authorized","type":"bool"}],"name":"setAuthorizedLazyMinters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"percentkage","type":"uint256"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"prefix","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"usingSuffix","type":"bool"}],"name":"setUsingTokenIDAsSuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","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":"payable","type":"function"},{"inputs":[],"name":"usingTokenIDAsSuffix","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162003b6b38038062003b6b83398181016040528101906200003791906200039a565b33600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600090816200008991906200066a565b5080600190816200009b91906200066a565b506001600660006101000a81548160ff0219169083151502179055506001600c6000632a55205a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000751565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002708262000225565b810181811067ffffffffffffffff8211171562000292576200029162000236565b5b80604052505050565b6000620002a762000207565b9050620002b5828262000265565b919050565b600067ffffffffffffffff821115620002d857620002d762000236565b5b620002e38262000225565b9050602081019050919050565b60005b8381101562000310578082015181840152602081019050620002f3565b60008484015250505050565b6000620003336200032d84620002ba565b6200029b565b90508281526020810184848401111562000352576200035162000220565b5b6200035f848285620002f0565b509392505050565b600082601f8301126200037f576200037e6200021b565b5b8151620003918482602086016200031c565b91505092915050565b60008060408385031215620003b457620003b362000211565b5b600083015167ffffffffffffffff811115620003d557620003d462000216565b5b620003e38582860162000367565b925050602083015167ffffffffffffffff81111562000407576200040662000216565b5b620004158582860162000367565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200047257607f821691505b6020821081036200048857620004876200042a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004f27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004b3565b620004fe8683620004b3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200054b620005456200053f8462000516565b62000520565b62000516565b9050919050565b6000819050919050565b62000567836200052a565b6200057f620005768262000552565b848454620004c0565b825550505050565b600090565b6200059662000587565b620005a38184846200055c565b505050565b5b81811015620005cb57620005bf6000826200058c565b600181019050620005a9565b5050565b601f8211156200061a57620005e4816200048e565b620005ef84620004a3565b81016020851015620005ff578190505b620006176200060e85620004a3565b830182620005a8565b50505b505050565b600082821c905092915050565b60006200063f600019846008026200061f565b1980831691505092915050565b60006200065a83836200062c565b9150826002028217905092915050565b62000675826200041f565b67ffffffffffffffff81111562000691576200069062000236565b5b6200069d825462000459565b620006aa828285620005cf565b600060209050601f831160018114620006e25760008415620006cd578287015190505b620006d985826200064c565b86555062000749565b601f198416620006f2866200048e565b60005b828110156200071c57848901518255600182019150602085019450602081019050620006f5565b868310156200073c578489015162000738601f8916826200062c565b8355505b6001600288020188555050505b505050505050565b61340a80620007616000396000f3fe6080604052600436106101665760003560e01c806380edaf63116100d1578063a4cc5f571161008a578063c87b56dd11610064578063c87b56dd14610517578063dbd410a814610554578063e985e9c51461057f578063f526b4c7146105bc57610166565b8063a4cc5f57146104a7578063b88d4fde146104d0578063c0ac9983146104ec57610166565b806380edaf63146103ad5780638da5cb5b146103d65780638e1b72cc1461040157806395d89b411461042a57806399e0dd7c14610455578063a22cb4651461047e57610166565b806318160ddd1161012357806318160ddd1461029257806323b872dd146102bd5780632a55205a146102d957806342842e0e146103175780636352211e1461033357806370a082311461037057610166565b806301ffc9a71461016b578063056b01ce146101a857806306fdde03146101e5578063081812fc14610210578063095ea7b31461024d578063162094c414610269575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190611f82565b6105f9565b60405161019f9190611fca565b60405180910390f35b3480156101b457600080fd5b506101cf60048036038101906101ca9190612080565b610661565b6040516101dc91906120ef565b60405180910390f35b3480156101f157600080fd5b506101fa6107a9565b604051610207919061219a565b60405180910390f35b34801561021c57600080fd5b50610237600480360381019061023291906121bc565b610837565b604051610244919061222a565b60405180910390f35b61026760048036038101906102629190612271565b610874565b005b34801561027557600080fd5b50610290600480360381019061028b91906123e1565b610abd565b005b34801561029e57600080fd5b506102a7610b25565b6040516102b491906120ef565b60405180910390f35b6102d760048036038101906102d2919061243d565b610b2b565b005b3480156102e557600080fd5b5061030060048036038101906102fb9190612490565b610b3b565b60405161030e9291906124d0565b60405180910390f35b610331600480360381019061032c919061243d565b610baf565b005b34801561033f57600080fd5b5061035a600480360381019061035591906121bc565b610bcf565b604051610367919061222a565b60405180910390f35b34801561037c57600080fd5b50610397600480360381019061039291906124f9565b610c0c565b6040516103a491906120ef565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190612552565b610c24565b005b3480156103e257600080fd5b506103eb610cd1565b6040516103f8919061222a565b60405180910390f35b34801561040d57600080fd5b506104286004803603810190610423919061257f565b610cf7565b005b34801561043657600080fd5b5061043f610dc0565b60405161044c919061219a565b60405180910390f35b34801561046157600080fd5b5061047c600480360381019061047791906125d2565b610e4e565b005b34801561048a57600080fd5b506104a560048036038101906104a0919061261f565b610ef4565b005b3480156104b357600080fd5b506104ce60048036038101906104c9919061261f565b610ff1565b005b6104ea60048036038101906104e591906126b5565b6110dc565b005b3480156104f857600080fd5b50610501611133565b60405161050e919061219a565b60405180910390f35b34801561052357600080fd5b5061053e600480360381019061053991906121bc565b6111c1565b60405161054b919061219a565b60405180910390f35b34801561056057600080fd5b50610569611367565b6040516105769190611fca565b60405180910390f35b34801561058b57600080fd5b506105a660048036038101906105a1919061273d565b61137a565b6040516105b39190611fca565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de91906124f9565b61140e565b6040516105f09190611fca565b60405180910390f35b6000600c6000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea906127c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c90612835565b60405180910390fd5b6107a084848461142e565b90509392505050565b600080546107b690612884565b80601f01602080910402602001604051908101604052809291908181526020018280546107e290612884565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b505050505081565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099a5750600b60006009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d090612927565b60405180910390fd5b81600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1757600080fd5b610b2182826115b4565b5050565b60035481565b610b368383836115d9565b505050565b6000806000612710600e60008081526020019081526020016000205485610b629190612976565b610b6c91906129e7565b9050600d600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168192509250509250929050565b610bca83838360405180602001604052806000815250611bb8565b505050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60026020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612a8a565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5157600080fd5b81600d600080815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e600080815260200190815260200160002081905550505050565b60018054610dcd90612884565b80601f0160208091040260200160405190810160405280929190818152602001828054610df990612884565b8015610e465780601f10610e1b57610100808354040283529160200191610e46565b820191906000526020600020905b815481529060010190602001808311610e2957829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590612b1c565b60405180910390fd5b818160059182610eef929190612cf3565b505050565b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610fe59190611fca565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107890612e35565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61112c85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611bb8565b5050505050565b6005805461114090612884565b80601f016020809104026020016040519081016040528092919081815260200182805461116c90612884565b80156111b95780601f1061118e576101008083540402835291602001916111b9565b820191906000526020600020905b81548152906001019060200180831161119c57829003601f168201915b505050505081565b606060006004600084815260200190815260200160002080546111e390612884565b90501461128d5760046000838152602001908152602001600020805461120890612884565b80601f016020809104026020016040519081016040528092919081815260200182805461123490612884565b80156112815780601f1061125657610100808354040283529160200191611281565b820191906000526020600020905b81548152906001019060200180831161126457829003601f168201915b50505050509050611362565b600660009054906101000a900460ff16156112d45760056112ad83611caa565b6040516020016112be929190612f3a565b6040516020818303038152906040529050611362565b600580546112e190612884565b80601f016020809104026020016040519081016040528092919081815260200182805461130d90612884565b801561135a5780601f1061132f5761010080835404028352916020019161135a565b820191906000526020600020905b81548152906001019060200180831161133d57829003601f168201915b505050505090505b919050565b600660009054906101000a900460ff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60006003600081548092919061144390612f6d565b91905055506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114949190612fb5565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838360046000858152602001908152602001600020918261154b929190612cf3565b50813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a460035490509392505050565b806004600084815260200190815260200160002090816115d49190612fe9565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f90613153565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e0906131e5565b60405180910390fd5b6009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061180f5750600b60006009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118785750600a600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806119045750600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119035750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a9061329d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a0b576001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c391906132bd565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a24565b60036000815480929190611a1e90612f6d565b91905055505b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a709190612fb5565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611bc38484846115d9565b611bcc83611d78565b15611ca45763150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611c379493929190613346565b6020604051808303816000875af1158015611c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7a91906133a7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ca357600080fd5b5b50505050565b606060006001611cb984611dc3565b01905060008167ffffffffffffffff811115611cd857611cd76122b6565b5b6040519080825280601f01601f191660200182016040528015611d0a5781602001600182028036833780820191505090505b509050600082602001820190505b600115611d6d578080600190039150507f3031323334353637383900000000000000000000000000000000000000000000600a86061a8153600a8581611d6157611d606129b8565b5b04945060008503611d18575b819350505050919050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611dba57506000801b8214155b92505050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611e21577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611e1757611e166129b8565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611e5e576d04ee2d6d415b85acef81000000008381611e5457611e536129b8565b5b0492506020810190505b662386f26fc100008310611e8d57662386f26fc100008381611e8357611e826129b8565b5b0492506010810190505b6305f5e1008310611eb6576305f5e1008381611eac57611eab6129b8565b5b0492506008810190505b6127108310611edb576127108381611ed157611ed06129b8565b5b0492506004810190505b60648310611efe5760648381611ef457611ef36129b8565b5b0492506002810190505b600a8310611f0d576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f5f81611f2a565b8114611f6a57600080fd5b50565b600081359050611f7c81611f56565b92915050565b600060208284031215611f9857611f97611f20565b5b6000611fa684828501611f6d565b91505092915050565b60008115159050919050565b611fc481611faf565b82525050565b6000602082019050611fdf6000830184611fbb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261200a57612009611fe5565b5b8235905067ffffffffffffffff81111561202757612026611fea565b5b60208301915083600182028301111561204357612042611fef565b5b9250929050565b6000819050919050565b61205d8161204a565b811461206857600080fd5b50565b60008135905061207a81612054565b92915050565b60008060006040848603121561209957612098611f20565b5b600084013567ffffffffffffffff8111156120b7576120b6611f25565b5b6120c386828701611ff4565b935093505060206120d68682870161206b565b9150509250925092565b6120e98161204a565b82525050565b600060208201905061210460008301846120e0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612144578082015181840152602081019050612129565b60008484015250505050565b6000601f19601f8301169050919050565b600061216c8261210a565b6121768185612115565b9350612186818560208601612126565b61218f81612150565b840191505092915050565b600060208201905081810360008301526121b48184612161565b905092915050565b6000602082840312156121d2576121d1611f20565b5b60006121e08482850161206b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612214826121e9565b9050919050565b61222481612209565b82525050565b600060208201905061223f600083018461221b565b92915050565b61224e81612209565b811461225957600080fd5b50565b60008135905061226b81612245565b92915050565b6000806040838503121561228857612287611f20565b5b60006122968582860161225c565b92505060206122a78582860161206b565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122ee82612150565b810181811067ffffffffffffffff8211171561230d5761230c6122b6565b5b80604052505050565b6000612320611f16565b905061232c82826122e5565b919050565b600067ffffffffffffffff82111561234c5761234b6122b6565b5b61235582612150565b9050602081019050919050565b82818337600083830152505050565b600061238461237f84612331565b612316565b9050828152602081018484840111156123a05761239f6122b1565b5b6123ab848285612362565b509392505050565b600082601f8301126123c8576123c7611fe5565b5b81356123d8848260208601612371565b91505092915050565b600080604083850312156123f8576123f7611f20565b5b60006124068582860161206b565b925050602083013567ffffffffffffffff81111561242757612426611f25565b5b612433858286016123b3565b9150509250929050565b60008060006060848603121561245657612455611f20565b5b60006124648682870161225c565b93505060206124758682870161225c565b92505060406124868682870161206b565b9150509250925092565b600080604083850312156124a7576124a6611f20565b5b60006124b58582860161206b565b92505060206124c68582860161206b565b9150509250929050565b60006040820190506124e5600083018561221b565b6124f260208301846120e0565b9392505050565b60006020828403121561250f5761250e611f20565b5b600061251d8482850161225c565b91505092915050565b61252f81611faf565b811461253a57600080fd5b50565b60008135905061254c81612526565b92915050565b60006020828403121561256857612567611f20565b5b60006125768482850161253d565b91505092915050565b60008060006060848603121561259857612597611f20565b5b60006125a68682870161206b565b93505060206125b78682870161225c565b92505060406125c88682870161206b565b9150509250925092565b600080602083850312156125e9576125e8611f20565b5b600083013567ffffffffffffffff81111561260757612606611f25565b5b61261385828601611ff4565b92509250509250929050565b6000806040838503121561263657612635611f20565b5b60006126448582860161225c565b92505060206126558582860161253d565b9150509250929050565b60008083601f84011261267557612674611fe5565b5b8235905067ffffffffffffffff81111561269257612691611fea565b5b6020830191508360018202830111156126ae576126ad611fef565b5b9250929050565b6000806000806000608086880312156126d1576126d0611f20565b5b60006126df8882890161225c565b95505060206126f08882890161225c565b94505060406127018882890161206b565b935050606086013567ffffffffffffffff81111561272257612721611f25565b5b61272e8882890161265f565b92509250509295509295909350565b6000806040838503121561275457612753611f20565b5b60006127628582860161225c565b92505060206127738582860161225c565b9150509250929050565b7f4f6e6c7920746865206f776e65722063616e206d696e74000000000000000000600082015250565b60006127b3601783612115565b91506127be8261277d565b602082019050919050565b600060208201905081810360008301526127e2816127a6565b9050919050565b7f546f6b656e20416c7265616479206d696e746564000000000000000000000000600082015250565b600061281f601483612115565b915061282a826127e9565b602082019050919050565b6000602082019050818103600083015261284e81612812565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061289c57607f821691505b6020821081036128af576128ae612855565b5b50919050565b7f617070726f76653a206d73672e73656e646572206973206e6f7420616c6c6f7760008201527f656420746f20617070726f76652074686520746f6b656e000000000000000000602082015250565b6000612911603783612115565b915061291c826128b5565b604082019050919050565b6000602082019050818103600083015261294081612904565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129818261204a565b915061298c8361204a565b925082820261299a8161204a565b915082820484148315176129b1576129b0612947565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129f28261204a565b91506129fd8361204a565b925082612a0d57612a0c6129b8565b5b828204905092915050565b7f4f6e6c7920746865206f776e65722063616e207365742074686520737566666960008201527f782072756c650000000000000000000000000000000000000000000000000000602082015250565b6000612a74602683612115565b9150612a7f82612a18565b604082019050919050565b60006020820190508181036000830152612aa381612a67565b9050919050565b7f4f6e6c7920746865206f776e65722063616e207365742074686520707265666960008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b06602183612115565b9150612b1182612aaa565b604082019050919050565b60006020820190508181036000830152612b3581612af9565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ba97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b6c565b612bb38683612b6c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612bf0612beb612be68461204a565b612bcb565b61204a565b9050919050565b6000819050919050565b612c0a83612bd5565b612c1e612c1682612bf7565b848454612b79565b825550505050565b600090565b612c33612c26565b612c3e818484612c01565b505050565b5b81811015612c6257612c57600082612c2b565b600181019050612c44565b5050565b601f821115612ca757612c7881612b47565b612c8184612b5c565b81016020851015612c90578190505b612ca4612c9c85612b5c565b830182612c43565b50505b505050565b600082821c905092915050565b6000612cca60001984600802612cac565b1980831691505092915050565b6000612ce38383612cb9565b9150826002028217905092915050565b612cfd8383612b3c565b67ffffffffffffffff811115612d1657612d156122b6565b5b612d208254612884565b612d2b828285612c66565b6000601f831160018114612d5a5760008415612d48578287013590505b612d528582612cd7565b865550612dba565b601f198416612d6886612b47565b60005b82811015612d9057848901358255600182019150602085019450602081019050612d6b565b86831015612dad5784890135612da9601f891682612cb9565b8355505b6001600288020188555050505b50505050505050565b7f4f6e6c7920746865206f776e65722063616e2073657420746865206c617a792060008201527f6d696e7465727300000000000000000000000000000000000000000000000000602082015250565b6000612e1f602783612115565b9150612e2a82612dc3565b604082019050919050565b60006020820190508181036000830152612e4e81612e12565b9050919050565b600081905092915050565b60008154612e6d81612884565b612e778186612e55565b94506001821660008114612e925760018114612ea757612eda565b60ff1983168652811515820286019350612eda565b612eb085612b47565b60005b83811015612ed257815481890152600182019150602081019050612eb3565b838801955050505b50505092915050565b6000612eee8261210a565b612ef88185612e55565b9350612f08818560208601612126565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000815250565b6000612f468285612e60565b9150612f528284612ee3565b9150612f5d82612f14565b6005820191508190509392505050565b6000612f788261204a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612faa57612fa9612947565b5b600182019050919050565b6000612fc08261204a565b9150612fcb8361204a565b9250828201905080821115612fe357612fe2612947565b5b92915050565b612ff28261210a565b67ffffffffffffffff81111561300b5761300a6122b6565b5b6130158254612884565b613020828285612c66565b600060209050601f8311600181146130535760008415613041578287015190505b61304b8582612cd7565b8655506130b3565b601f19841661306186612b47565b60005b8281101561308957848901518255600182019150602085019450602081019050613064565b868310156130a657848901516130a2601f891682612cb9565b8355505b6001600288020188555050505b505050505050565b7f7472616e7366657246726f6d496e7465726e616c3a20546f6b656e732063616e60008201527f6e6f742062652073656e6420746f203078302e2055736520307864656164206960208201527f6e7374656164203f000000000000000000000000000000000000000000000000604082015250565b600061313d604883612115565b9150613148826130bb565b606082019050919050565b6000602082019050818103600083015261316c81613130565b9050919050565b7f7472616e7366657246726f6d496e7465726e616c3a205f66726f6d206973206e60008201527f6f7420746865206f776e6572206f662074686520746f6b656e00000000000000602082015250565b60006131cf603983612115565b91506131da82613173565b604082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b7f7472616e7366657246726f6d496e7465726e616c3a206d73672e73656e64657260008201527f206973206e6f7420616c6c6f77656420746f206d616e6970756c61746520746860208201527f6520746f6b656e00000000000000000000000000000000000000000000000000604082015250565b6000613287604783612115565b915061329282613205565b606082019050919050565b600060208201905081810360008301526132b68161327a565b9050919050565b60006132c88261204a565b91506132d38361204a565b92508282039050818111156132eb576132ea612947565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000613318826132f1565b61332281856132fc565b9350613332818560208601612126565b61333b81612150565b840191505092915050565b600060808201905061335b600083018761221b565b613368602083018661221b565b61337560408301856120e0565b8181036060830152613387818461330d565b905095945050505050565b6000815190506133a181611f56565b92915050565b6000602082840312156133bd576133bc611f20565b5b60006133cb84828501613392565b9150509291505056fea264697066735822122014af6bd134ecbb284b36ab18e27ddbfe21f637fe8b11e03dfcdb92383169602c64736f6c634300081300330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000174669646f204469646f2047656e6573697320436172647300000000000000000000000000000000000000000000000000000000000000000000000000000000044644474300000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101665760003560e01c806380edaf63116100d1578063a4cc5f571161008a578063c87b56dd11610064578063c87b56dd14610517578063dbd410a814610554578063e985e9c51461057f578063f526b4c7146105bc57610166565b8063a4cc5f57146104a7578063b88d4fde146104d0578063c0ac9983146104ec57610166565b806380edaf63146103ad5780638da5cb5b146103d65780638e1b72cc1461040157806395d89b411461042a57806399e0dd7c14610455578063a22cb4651461047e57610166565b806318160ddd1161012357806318160ddd1461029257806323b872dd146102bd5780632a55205a146102d957806342842e0e146103175780636352211e1461033357806370a082311461037057610166565b806301ffc9a71461016b578063056b01ce146101a857806306fdde03146101e5578063081812fc14610210578063095ea7b31461024d578063162094c414610269575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190611f82565b6105f9565b60405161019f9190611fca565b60405180910390f35b3480156101b457600080fd5b506101cf60048036038101906101ca9190612080565b610661565b6040516101dc91906120ef565b60405180910390f35b3480156101f157600080fd5b506101fa6107a9565b604051610207919061219a565b60405180910390f35b34801561021c57600080fd5b50610237600480360381019061023291906121bc565b610837565b604051610244919061222a565b60405180910390f35b61026760048036038101906102629190612271565b610874565b005b34801561027557600080fd5b50610290600480360381019061028b91906123e1565b610abd565b005b34801561029e57600080fd5b506102a7610b25565b6040516102b491906120ef565b60405180910390f35b6102d760048036038101906102d2919061243d565b610b2b565b005b3480156102e557600080fd5b5061030060048036038101906102fb9190612490565b610b3b565b60405161030e9291906124d0565b60405180910390f35b610331600480360381019061032c919061243d565b610baf565b005b34801561033f57600080fd5b5061035a600480360381019061035591906121bc565b610bcf565b604051610367919061222a565b60405180910390f35b34801561037c57600080fd5b50610397600480360381019061039291906124f9565b610c0c565b6040516103a491906120ef565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190612552565b610c24565b005b3480156103e257600080fd5b506103eb610cd1565b6040516103f8919061222a565b60405180910390f35b34801561040d57600080fd5b506104286004803603810190610423919061257f565b610cf7565b005b34801561043657600080fd5b5061043f610dc0565b60405161044c919061219a565b60405180910390f35b34801561046157600080fd5b5061047c600480360381019061047791906125d2565b610e4e565b005b34801561048a57600080fd5b506104a560048036038101906104a0919061261f565b610ef4565b005b3480156104b357600080fd5b506104ce60048036038101906104c9919061261f565b610ff1565b005b6104ea60048036038101906104e591906126b5565b6110dc565b005b3480156104f857600080fd5b50610501611133565b60405161050e919061219a565b60405180910390f35b34801561052357600080fd5b5061053e600480360381019061053991906121bc565b6111c1565b60405161054b919061219a565b60405180910390f35b34801561056057600080fd5b50610569611367565b6040516105769190611fca565b60405180910390f35b34801561058b57600080fd5b506105a660048036038101906105a1919061273d565b61137a565b6040516105b39190611fca565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de91906124f9565b61140e565b6040516105f09190611fca565b60405180910390f35b6000600c6000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea906127c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c90612835565b60405180910390fd5b6107a084848461142e565b90509392505050565b600080546107b690612884565b80601f01602080910402602001604051908101604052809291908181526020018280546107e290612884565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b505050505081565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099a5750600b60006009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d090612927565b60405180910390fd5b81600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1757600080fd5b610b2182826115b4565b5050565b60035481565b610b368383836115d9565b505050565b6000806000612710600e60008081526020019081526020016000205485610b629190612976565b610b6c91906129e7565b9050600d600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168192509250509250929050565b610bca83838360405180602001604052806000815250611bb8565b505050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60026020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612a8a565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5157600080fd5b81600d600080815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e600080815260200190815260200160002081905550505050565b60018054610dcd90612884565b80601f0160208091040260200160405190810160405280929190818152602001828054610df990612884565b8015610e465780601f10610e1b57610100808354040283529160200191610e46565b820191906000526020600020905b815481529060010190602001808311610e2957829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590612b1c565b60405180910390fd5b818160059182610eef929190612cf3565b505050565b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610fe59190611fca565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107890612e35565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61112c85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611bb8565b5050505050565b6005805461114090612884565b80601f016020809104026020016040519081016040528092919081815260200182805461116c90612884565b80156111b95780601f1061118e576101008083540402835291602001916111b9565b820191906000526020600020905b81548152906001019060200180831161119c57829003601f168201915b505050505081565b606060006004600084815260200190815260200160002080546111e390612884565b90501461128d5760046000838152602001908152602001600020805461120890612884565b80601f016020809104026020016040519081016040528092919081815260200182805461123490612884565b80156112815780601f1061125657610100808354040283529160200191611281565b820191906000526020600020905b81548152906001019060200180831161126457829003601f168201915b50505050509050611362565b600660009054906101000a900460ff16156112d45760056112ad83611caa565b6040516020016112be929190612f3a565b6040516020818303038152906040529050611362565b600580546112e190612884565b80601f016020809104026020016040519081016040528092919081815260200182805461130d90612884565b801561135a5780601f1061132f5761010080835404028352916020019161135a565b820191906000526020600020905b81548152906001019060200180831161133d57829003601f168201915b505050505090505b919050565b600660009054906101000a900460ff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b60006003600081548092919061144390612f6d565b91905055506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114949190612fb5565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838360046000858152602001908152602001600020918261154b929190612cf3565b50813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a460035490509392505050565b806004600084815260200190815260200160002090816115d49190612fe9565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f90613153565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e0906131e5565b60405180910390fd5b6009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061180f5750600b60006009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118785750600a600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806119045750600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156119035750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a9061329d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a0b576001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c391906132bd565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a24565b60036000815480929190611a1e90612f6d565b91905055505b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a709190612fb5565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611bc38484846115d9565b611bcc83611d78565b15611ca45763150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611c379493929190613346565b6020604051808303816000875af1158015611c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7a91906133a7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ca357600080fd5b5b50505050565b606060006001611cb984611dc3565b01905060008167ffffffffffffffff811115611cd857611cd76122b6565b5b6040519080825280601f01601f191660200182016040528015611d0a5781602001600182028036833780820191505090505b509050600082602001820190505b600115611d6d578080600190039150507f3031323334353637383900000000000000000000000000000000000000000000600a86061a8153600a8581611d6157611d606129b8565b5b04945060008503611d18575b819350505050919050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611dba57506000801b8214155b92505050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611e21577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611e1757611e166129b8565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611e5e576d04ee2d6d415b85acef81000000008381611e5457611e536129b8565b5b0492506020810190505b662386f26fc100008310611e8d57662386f26fc100008381611e8357611e826129b8565b5b0492506010810190505b6305f5e1008310611eb6576305f5e1008381611eac57611eab6129b8565b5b0492506008810190505b6127108310611edb576127108381611ed157611ed06129b8565b5b0492506004810190505b60648310611efe5760648381611ef457611ef36129b8565b5b0492506002810190505b600a8310611f0d576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f5f81611f2a565b8114611f6a57600080fd5b50565b600081359050611f7c81611f56565b92915050565b600060208284031215611f9857611f97611f20565b5b6000611fa684828501611f6d565b91505092915050565b60008115159050919050565b611fc481611faf565b82525050565b6000602082019050611fdf6000830184611fbb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261200a57612009611fe5565b5b8235905067ffffffffffffffff81111561202757612026611fea565b5b60208301915083600182028301111561204357612042611fef565b5b9250929050565b6000819050919050565b61205d8161204a565b811461206857600080fd5b50565b60008135905061207a81612054565b92915050565b60008060006040848603121561209957612098611f20565b5b600084013567ffffffffffffffff8111156120b7576120b6611f25565b5b6120c386828701611ff4565b935093505060206120d68682870161206b565b9150509250925092565b6120e98161204a565b82525050565b600060208201905061210460008301846120e0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612144578082015181840152602081019050612129565b60008484015250505050565b6000601f19601f8301169050919050565b600061216c8261210a565b6121768185612115565b9350612186818560208601612126565b61218f81612150565b840191505092915050565b600060208201905081810360008301526121b48184612161565b905092915050565b6000602082840312156121d2576121d1611f20565b5b60006121e08482850161206b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612214826121e9565b9050919050565b61222481612209565b82525050565b600060208201905061223f600083018461221b565b92915050565b61224e81612209565b811461225957600080fd5b50565b60008135905061226b81612245565b92915050565b6000806040838503121561228857612287611f20565b5b60006122968582860161225c565b92505060206122a78582860161206b565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122ee82612150565b810181811067ffffffffffffffff8211171561230d5761230c6122b6565b5b80604052505050565b6000612320611f16565b905061232c82826122e5565b919050565b600067ffffffffffffffff82111561234c5761234b6122b6565b5b61235582612150565b9050602081019050919050565b82818337600083830152505050565b600061238461237f84612331565b612316565b9050828152602081018484840111156123a05761239f6122b1565b5b6123ab848285612362565b509392505050565b600082601f8301126123c8576123c7611fe5565b5b81356123d8848260208601612371565b91505092915050565b600080604083850312156123f8576123f7611f20565b5b60006124068582860161206b565b925050602083013567ffffffffffffffff81111561242757612426611f25565b5b612433858286016123b3565b9150509250929050565b60008060006060848603121561245657612455611f20565b5b60006124648682870161225c565b93505060206124758682870161225c565b92505060406124868682870161206b565b9150509250925092565b600080604083850312156124a7576124a6611f20565b5b60006124b58582860161206b565b92505060206124c68582860161206b565b9150509250929050565b60006040820190506124e5600083018561221b565b6124f260208301846120e0565b9392505050565b60006020828403121561250f5761250e611f20565b5b600061251d8482850161225c565b91505092915050565b61252f81611faf565b811461253a57600080fd5b50565b60008135905061254c81612526565b92915050565b60006020828403121561256857612567611f20565b5b60006125768482850161253d565b91505092915050565b60008060006060848603121561259857612597611f20565b5b60006125a68682870161206b565b93505060206125b78682870161225c565b92505060406125c88682870161206b565b9150509250925092565b600080602083850312156125e9576125e8611f20565b5b600083013567ffffffffffffffff81111561260757612606611f25565b5b61261385828601611ff4565b92509250509250929050565b6000806040838503121561263657612635611f20565b5b60006126448582860161225c565b92505060206126558582860161253d565b9150509250929050565b60008083601f84011261267557612674611fe5565b5b8235905067ffffffffffffffff81111561269257612691611fea565b5b6020830191508360018202830111156126ae576126ad611fef565b5b9250929050565b6000806000806000608086880312156126d1576126d0611f20565b5b60006126df8882890161225c565b95505060206126f08882890161225c565b94505060406127018882890161206b565b935050606086013567ffffffffffffffff81111561272257612721611f25565b5b61272e8882890161265f565b92509250509295509295909350565b6000806040838503121561275457612753611f20565b5b60006127628582860161225c565b92505060206127738582860161225c565b9150509250929050565b7f4f6e6c7920746865206f776e65722063616e206d696e74000000000000000000600082015250565b60006127b3601783612115565b91506127be8261277d565b602082019050919050565b600060208201905081810360008301526127e2816127a6565b9050919050565b7f546f6b656e20416c7265616479206d696e746564000000000000000000000000600082015250565b600061281f601483612115565b915061282a826127e9565b602082019050919050565b6000602082019050818103600083015261284e81612812565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061289c57607f821691505b6020821081036128af576128ae612855565b5b50919050565b7f617070726f76653a206d73672e73656e646572206973206e6f7420616c6c6f7760008201527f656420746f20617070726f76652074686520746f6b656e000000000000000000602082015250565b6000612911603783612115565b915061291c826128b5565b604082019050919050565b6000602082019050818103600083015261294081612904565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129818261204a565b915061298c8361204a565b925082820261299a8161204a565b915082820484148315176129b1576129b0612947565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129f28261204a565b91506129fd8361204a565b925082612a0d57612a0c6129b8565b5b828204905092915050565b7f4f6e6c7920746865206f776e65722063616e207365742074686520737566666960008201527f782072756c650000000000000000000000000000000000000000000000000000602082015250565b6000612a74602683612115565b9150612a7f82612a18565b604082019050919050565b60006020820190508181036000830152612aa381612a67565b9050919050565b7f4f6e6c7920746865206f776e65722063616e207365742074686520707265666960008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b06602183612115565b9150612b1182612aaa565b604082019050919050565b60006020820190508181036000830152612b3581612af9565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ba97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b6c565b612bb38683612b6c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612bf0612beb612be68461204a565b612bcb565b61204a565b9050919050565b6000819050919050565b612c0a83612bd5565b612c1e612c1682612bf7565b848454612b79565b825550505050565b600090565b612c33612c26565b612c3e818484612c01565b505050565b5b81811015612c6257612c57600082612c2b565b600181019050612c44565b5050565b601f821115612ca757612c7881612b47565b612c8184612b5c565b81016020851015612c90578190505b612ca4612c9c85612b5c565b830182612c43565b50505b505050565b600082821c905092915050565b6000612cca60001984600802612cac565b1980831691505092915050565b6000612ce38383612cb9565b9150826002028217905092915050565b612cfd8383612b3c565b67ffffffffffffffff811115612d1657612d156122b6565b5b612d208254612884565b612d2b828285612c66565b6000601f831160018114612d5a5760008415612d48578287013590505b612d528582612cd7565b865550612dba565b601f198416612d6886612b47565b60005b82811015612d9057848901358255600182019150602085019450602081019050612d6b565b86831015612dad5784890135612da9601f891682612cb9565b8355505b6001600288020188555050505b50505050505050565b7f4f6e6c7920746865206f776e65722063616e2073657420746865206c617a792060008201527f6d696e7465727300000000000000000000000000000000000000000000000000602082015250565b6000612e1f602783612115565b9150612e2a82612dc3565b604082019050919050565b60006020820190508181036000830152612e4e81612e12565b9050919050565b600081905092915050565b60008154612e6d81612884565b612e778186612e55565b94506001821660008114612e925760018114612ea757612eda565b60ff1983168652811515820286019350612eda565b612eb085612b47565b60005b83811015612ed257815481890152600182019150602081019050612eb3565b838801955050505b50505092915050565b6000612eee8261210a565b612ef88185612e55565b9350612f08818560208601612126565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000815250565b6000612f468285612e60565b9150612f528284612ee3565b9150612f5d82612f14565b6005820191508190509392505050565b6000612f788261204a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612faa57612fa9612947565b5b600182019050919050565b6000612fc08261204a565b9150612fcb8361204a565b9250828201905080821115612fe357612fe2612947565b5b92915050565b612ff28261210a565b67ffffffffffffffff81111561300b5761300a6122b6565b5b6130158254612884565b613020828285612c66565b600060209050601f8311600181146130535760008415613041578287015190505b61304b8582612cd7565b8655506130b3565b601f19841661306186612b47565b60005b8281101561308957848901518255600182019150602085019450602081019050613064565b868310156130a657848901516130a2601f891682612cb9565b8355505b6001600288020188555050505b505050505050565b7f7472616e7366657246726f6d496e7465726e616c3a20546f6b656e732063616e60008201527f6e6f742062652073656e6420746f203078302e2055736520307864656164206960208201527f6e7374656164203f000000000000000000000000000000000000000000000000604082015250565b600061313d604883612115565b9150613148826130bb565b606082019050919050565b6000602082019050818103600083015261316c81613130565b9050919050565b7f7472616e7366657246726f6d496e7465726e616c3a205f66726f6d206973206e60008201527f6f7420746865206f776e6572206f662074686520746f6b656e00000000000000602082015250565b60006131cf603983612115565b91506131da82613173565b604082019050919050565b600060208201905081810360008301526131fe816131c2565b9050919050565b7f7472616e7366657246726f6d496e7465726e616c3a206d73672e73656e64657260008201527f206973206e6f7420616c6c6f77656420746f206d616e6970756c61746520746860208201527f6520746f6b656e00000000000000000000000000000000000000000000000000604082015250565b6000613287604783612115565b915061329282613205565b606082019050919050565b600060208201905081810360008301526132b68161327a565b9050919050565b60006132c88261204a565b91506132d38361204a565b92508282039050818111156132eb576132ea612947565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000613318826132f1565b61332281856132fc565b9350613332818560208601612126565b61333b81612150565b840191505092915050565b600060808201905061335b600083018761221b565b613368602083018661221b565b61337560408301856120e0565b8181036060830152613387818461330d565b905095945050505050565b6000815190506133a181611f56565b92915050565b6000602082840312156133bd576133bc611f20565b5b60006133cb84828501613392565b9150509291505056fea264697066735822122014af6bd134ecbb284b36ab18e27ddbfe21f637fe8b11e03dfcdb92383169602c64736f6c63430008130033

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000174669646f204469646f2047656e6573697320436172647300000000000000000000000000000000000000000000000000000000000000000000000000000000044644474300000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Fido Dido Genesis Cards
Arg [1] : _symbol (string): FDGC

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000017
Arg [3] : 4669646f204469646f2047656e65736973204361726473000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4644474300000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

7942:14597:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14828:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15999:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7996:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13827:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12509:416;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20686:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8252:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11985:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19659:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11219:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9673:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8155:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15168:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8502:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19436:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8079:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14982:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13330:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15725:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10661:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8366:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20177:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8401:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14274:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8440:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14828:144;14907:4;14931:19;:32;14951:11;14931:32;;;;;;;;;;;;;;;;;;;;;;;;;;;14923:41;;14828:144;;;:::o;15999:280::-;16071:7;16108:10;16099:19;;:5;;;;;;;;;;;:19;;;16091:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16198:1;16166:34;;:10;:20;16177:8;16166:20;;;;;;;;;;;;;;;;;;;;;:34;;;16157:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16243:28;16256:4;;16262:8;16243:12;:28::i;:::-;16236:35;;15999:280;;;;;:::o;7996:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13827:138::-;13898:7;13924:23;:33;13948:8;13924:33;;;;;;;;;;;;;;;;;;;;;13917:40;;13827:138;;;:::o;12509:416::-;12621:10;:20;12632:8;12621:20;;;;;;;;;;;;;;;;;;;;;12607:34;;:10;:34;;;:102;;;;12659:16;:38;12676:10;:20;12687:8;12676:20;;;;;;;;;;;;;;;;;;;;;12659:38;;;;;;;;;;;;;;;:50;12698:10;12659:50;;;;;;;;;;;;;;;;;;;;;;;;;12607:102;12599:193;;;;;;;;;;;;:::i;:::-;;;;;;;;;12841:9;12805:23;:33;12829:8;12805:33;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;12908:8;12897:9;12866:51;;12875:10;:20;12886:8;12875:20;;;;;;;;;;;;;;;;;;;;;12866:51;;;;;;;;;;;;12509:416;;:::o;20686:164::-;20792:5;;;;;;;;;;;20778:19;;:10;:19;;;20770:28;;;;;;20809:33;20822:8;20832:9;20809:12;:33::i;:::-;20686:164;;:::o;8252:26::-;;;;:::o;11985:154::-;12089:42;12110:5;12117:3;12122:8;12089:20;:42::i;:::-;11985:154;;;:::o;19659:237::-;19730:16;19748:21;19782:15;19837:5;19814:17;:20;19832:1;19814:20;;;;;;;;;;;;19800:11;:34;;;;:::i;:::-;:42;;;;:::i;:::-;19782:60;;19860:15;:18;19876:1;19860:18;;;;;;;;;;;;;;;;;;;;;19880:7;19853:35;;;;;19659:237;;;;;:::o;11219:166::-;11327:50;11352:5;11359:3;11364:8;11327:50;;;;;;;;;;;;:24;:50::i;:::-;11219:166;;;:::o;9673:121::-;9740:7;9766:10;:20;9777:8;9766:20;;;;;;;;;;;;;;;;;;;;;9759:27;;9673:121;;;:::o;8155:53::-;;;;;;;;;;;;;;;;;:::o;15168:194::-;15256:10;15247:19;;:5;;;;;;;;;;;:19;;;15239:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15343:11;15320:20;;:34;;;;;;;;;;;;;;;;;;15168:194;:::o;8502:20::-;;;;;;;;;;;;;:::o;19436:213::-;19550:5;;;;;;;;;;;19536:19;;:10;:19;;;19528:28;;;;;;19588:8;19567:15;:18;19583:1;19567:18;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19630:11;19607:17;:20;19625:1;19607:20;;;;;;;;;;;:34;;;;19436:213;;;:::o;8079:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14982:178::-;15070:10;15061:19;;:5;;;;;;;;;;;:19;;;15053:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15146:6;;15129:14;:23;;;;;;;:::i;:::-;;14982:178;;:::o;13330:214::-;13463:9;13421:16;:28;13438:10;13421:28;;;;;;;;;;;;;;;:39;13450:9;13421:39;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;13515:9;13488:48;;13503:10;13488:48;;;13526:9;13488:48;;;;;;:::i;:::-;;;;;;;;13330:214;;:::o;15725:219::-;15829:10;15820:19;;:5;;;;;;;;;;;:19;;;15812:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15926:10;15894:21;:29;15916:6;15894:29;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15725:219;;:::o;10661:189::-;10790:52;10815:5;10822:3;10827:8;10837:4;;10790:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;:52::i;:::-;10661:189;;;;;:::o;8366:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20177:365::-;20236:13;20301:1;20270:9;:19;20280:8;20270:19;;;;;;;;;;;20264:33;;;;;:::i;:::-;;;:38;20261:274;;20326:9;:19;20336:8;20326:19;;;;;;;;;;;20318:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20261:274;20367:20;;;;;;;;;;;20364:171;;;20425:14;20441:18;20450:8;20441;:18::i;:::-;20411:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20404:65;;;;20364:171;20509:14;20502:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20177:365;;;;:::o;8401:32::-;;;;;;;;;;;;;:::o;14274:160::-;14367:4;14391:16;:24;14408:6;14391:24;;;;;;;;;;;;;;;:35;14416:9;14391:35;;;;;;;;;;;;;;;;;;;;;;;;;14383:43;;14274:160;;;;:::o;8440:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;16289:423::-;16369:7;16390:11;;:13;;;;;;;;;:::i;:::-;;;;;;16462:1;16438:9;:21;16448:10;16438:21;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;16414:9;:21;16424:10;16414:21;;;;;;;;;;;;;;;:49;;;;16529:10;16506;:20;16517:8;16506:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16572:4;;16550:9;:19;16560:8;16550:19;;;;;;;;;;;:26;;;;;;;:::i;:::-;;16664:8;16652:10;16629:44;;16646:3;16629:44;;;;;;;;;;;;16693:11;;16686:18;;16289:423;;;;;:::o;20552:124::-;20659:9;20637;:19;20647:8;20637:19;;;;;;;;;;;:31;;;;;;:::i;:::-;;20552:124;;:::o;17394:1184::-;17513:3;17498:19;;:3;:19;;;17490:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;17637:5;17613:29;;:10;:20;17624:8;17613:20;;;;;;;;;;;;;;;;;;;;;:29;;;17605:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;17737:10;:20;17748:8;17737:20;;;;;;;;;;;;;;;;;;;;;17723:34;;:10;:34;;;:102;;;;17775:16;:38;17792:10;:20;17803:8;17792:20;;;;;;;;;;;;;;;;;;;;;17775:38;;;;;;;;;;;;;;;:50;17814:10;17775:50;;;;;;;;;;;;;;;;;;;;;;;;;17723:102;:166;;;;17856:23;:33;17880:8;17856:33;;;;;;;;;;;;;;;;;;;;;17842:47;;:10;:47;;;17723:166;:243;;;;17907:21;:33;17929:10;17907:33;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;;17961:3;17944:21;;:5;:21;;;17907:58;17723:243;17715:350;;;;;;;;;;;;:::i;:::-;;;;;;;;;18135:3;18118:21;;:5;:21;;;18115:137;;18193:1;18174:9;:16;18184:5;18174:16;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;18155:9;:16;18165:5;18155:16;;;;;;;;;;;;;;;:39;;;;18115:137;;;18227:11;;:13;;;;;;;;;:::i;:::-;;;;;;18115:137;18296:1;18279:9;:14;18289:3;18279:14;;;;;;;;;;;;;;;;:18;;;;:::i;:::-;18262:9;:14;18272:3;18262:14;;;;;;;;;;;;;;;:35;;;;18404:3;18360:23;:33;18384:8;18360:33;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;18474:3;18451:10;:20;18462:8;18451:20;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;18551:8;18546:3;18530:30;;18539:5;18530:30;;;;;;;;;;;;17394:1184;;;:::o;16868:441::-;16987:42;17008:5;17015:3;17020:8;16987:20;:42::i;:::-;17053:15;17064:3;17053:10;:15::i;:::-;17050:252;;;17278:10;17271:18;;17190:99;;;17211:3;17190:42;;;17233:10;17245:5;17252:8;17262:4;17190:77;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:99;;;;17182:108;;;;;;17050:252;16868:441;;;;:::o;20860:716::-;20916:13;20967:14;20999:1;20984:12;20990:5;20984;:12::i;:::-;:16;20967:33;;21015:20;21049:6;21038:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21015:41;;21071:11;21200:6;21196:2;21192:15;21184:6;21180:28;21173:35;;21237:293;21244:4;21237:293;;;21270:5;;;;;;;;21412:12;21407:2;21400:5;21396:14;21391:34;21386:3;21378:48;21472:2;21463:11;;;;;;:::i;:::-;;;;;21506:1;21497:5;:10;21237:293;21493:21;21237:293;21551:6;21544:13;;;;;20860:716;;;:::o;18760:562::-;18820:4;19081:16;19108:19;19130:66;19108:88;;;;19242:8;19230:21;19218:33;;19283:11;19271:8;:23;;:42;;;;;19310:3;19298:15;;:8;:15;;19271:42;19263:51;;;;18760:562;;;:::o;21586:948::-;21639:7;21659:14;21676:1;21659:18;;21726:8;21717:5;:17;21713:106;;21764:8;21755:17;;;;;;:::i;:::-;;;;;21801:2;21791:12;;;;21713:106;21846:8;21837:5;:17;21833:106;;21884:8;21875:17;;;;;;:::i;:::-;;;;;21921:2;21911:12;;;;21833:106;21966:8;21957:5;:17;21953:106;;22004:8;21995:17;;;;;;:::i;:::-;;;;;22041:2;22031:12;;;;21953:106;22086:7;22077:5;:16;22073:103;;22123:7;22114:16;;;;;;:::i;:::-;;;;;22159:1;22149:11;;;;22073:103;22203:7;22194:5;:16;22190:103;;22240:7;22231:16;;;;;;:::i;:::-;;;;;22276:1;22266:11;;;;22190:103;22320:7;22311:5;:16;22307:103;;22357:7;22348:16;;;;;;:::i;:::-;;;;;22393:1;22383:11;;;;22307:103;22437:7;22428:5;:16;22424:68;;22475:1;22465:11;;;;22424:68;22520:6;22513:13;;;21586:948;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:117::-;1627:1;1624;1617:12;1641:117;1750:1;1747;1740:12;1764:117;1873:1;1870;1863:12;1901:553;1959:8;1969:6;2019:3;2012:4;2004:6;2000:17;1996:27;1986:122;;2027:79;;:::i;:::-;1986:122;2140:6;2127:20;2117:30;;2170:18;2162:6;2159:30;2156:117;;;2192:79;;:::i;:::-;2156:117;2306:4;2298:6;2294:17;2282:29;;2360:3;2352:4;2344:6;2340:17;2330:8;2326:32;2323:41;2320:128;;;2367:79;;:::i;:::-;2320:128;1901:553;;;;;:::o;2460:77::-;2497:7;2526:5;2515:16;;2460:77;;;:::o;2543:122::-;2616:24;2634:5;2616:24;:::i;:::-;2609:5;2606:35;2596:63;;2655:1;2652;2645:12;2596:63;2543:122;:::o;2671:139::-;2717:5;2755:6;2742:20;2733:29;;2771:33;2798:5;2771:33;:::i;:::-;2671:139;;;;:::o;2816:674::-;2896:6;2904;2912;2961:2;2949:9;2940:7;2936:23;2932:32;2929:119;;;2967:79;;:::i;:::-;2929:119;3115:1;3104:9;3100:17;3087:31;3145:18;3137:6;3134:30;3131:117;;;3167:79;;:::i;:::-;3131:117;3280:65;3337:7;3328:6;3317:9;3313:22;3280:65;:::i;:::-;3262:83;;;;3058:297;3394:2;3420:53;3465:7;3456:6;3445:9;3441:22;3420:53;:::i;:::-;3410:63;;3365:118;2816:674;;;;;:::o;3496:118::-;3583:24;3601:5;3583:24;:::i;:::-;3578:3;3571:37;3496:118;;:::o;3620:222::-;3713:4;3751:2;3740:9;3736:18;3728:26;;3764:71;3832:1;3821:9;3817:17;3808:6;3764:71;:::i;:::-;3620:222;;;;:::o;3848:99::-;3900:6;3934:5;3928:12;3918:22;;3848:99;;;:::o;3953:169::-;4037:11;4071:6;4066:3;4059:19;4111:4;4106:3;4102:14;4087:29;;3953:169;;;;:::o;4128:246::-;4209:1;4219:113;4233:6;4230:1;4227:13;4219:113;;;4318:1;4313:3;4309:11;4303:18;4299:1;4294:3;4290:11;4283:39;4255:2;4252:1;4248:10;4243:15;;4219:113;;;4366:1;4357:6;4352:3;4348:16;4341:27;4190:184;4128:246;;;:::o;4380:102::-;4421:6;4472:2;4468:7;4463:2;4456:5;4452:14;4448:28;4438:38;;4380:102;;;:::o;4488:377::-;4576:3;4604:39;4637:5;4604:39;:::i;:::-;4659:71;4723:6;4718:3;4659:71;:::i;:::-;4652:78;;4739:65;4797:6;4792:3;4785:4;4778:5;4774:16;4739:65;:::i;:::-;4829:29;4851:6;4829:29;:::i;:::-;4824:3;4820:39;4813:46;;4580:285;4488:377;;;;:::o;4871:313::-;4984:4;5022:2;5011:9;5007:18;4999:26;;5071:9;5065:4;5061:20;5057:1;5046:9;5042:17;5035:47;5099:78;5172:4;5163:6;5099:78;:::i;:::-;5091:86;;4871:313;;;;:::o;5190:329::-;5249:6;5298:2;5286:9;5277:7;5273:23;5269:32;5266:119;;;5304:79;;:::i;:::-;5266:119;5424:1;5449:53;5494:7;5485:6;5474:9;5470:22;5449:53;:::i;:::-;5439:63;;5395:117;5190:329;;;;:::o;5525:126::-;5562:7;5602:42;5595:5;5591:54;5580:65;;5525:126;;;:::o;5657:96::-;5694:7;5723:24;5741:5;5723:24;:::i;:::-;5712:35;;5657:96;;;:::o;5759:118::-;5846:24;5864:5;5846:24;:::i;:::-;5841:3;5834:37;5759:118;;:::o;5883:222::-;5976:4;6014:2;6003:9;5999:18;5991:26;;6027:71;6095:1;6084:9;6080:17;6071:6;6027:71;:::i;:::-;5883:222;;;;:::o;6111:122::-;6184:24;6202:5;6184:24;:::i;:::-;6177:5;6174:35;6164:63;;6223:1;6220;6213:12;6164:63;6111:122;:::o;6239:139::-;6285:5;6323:6;6310:20;6301:29;;6339:33;6366:5;6339:33;:::i;:::-;6239:139;;;;:::o;6384:474::-;6452:6;6460;6509:2;6497:9;6488:7;6484:23;6480:32;6477:119;;;6515:79;;:::i;:::-;6477:119;6635:1;6660:53;6705:7;6696:6;6685:9;6681:22;6660:53;:::i;:::-;6650:63;;6606:117;6762:2;6788:53;6833:7;6824:6;6813:9;6809:22;6788:53;:::i;:::-;6778:63;;6733:118;6384:474;;;;;:::o;6864:117::-;6973:1;6970;6963:12;6987:180;7035:77;7032:1;7025:88;7132:4;7129:1;7122:15;7156:4;7153:1;7146:15;7173:281;7256:27;7278:4;7256:27;:::i;:::-;7248:6;7244:40;7386:6;7374:10;7371:22;7350:18;7338:10;7335:34;7332:62;7329:88;;;7397:18;;:::i;:::-;7329:88;7437:10;7433:2;7426:22;7216:238;7173:281;;:::o;7460:129::-;7494:6;7521:20;;:::i;:::-;7511:30;;7550:33;7578:4;7570:6;7550:33;:::i;:::-;7460:129;;;:::o;7595:308::-;7657:4;7747:18;7739:6;7736:30;7733:56;;;7769:18;;:::i;:::-;7733:56;7807:29;7829:6;7807:29;:::i;:::-;7799:37;;7891:4;7885;7881:15;7873:23;;7595:308;;;:::o;7909:146::-;8006:6;8001:3;7996;7983:30;8047:1;8038:6;8033:3;8029:16;8022:27;7909:146;;;:::o;8061:425::-;8139:5;8164:66;8180:49;8222:6;8180:49;:::i;:::-;8164:66;:::i;:::-;8155:75;;8253:6;8246:5;8239:21;8291:4;8284:5;8280:16;8329:3;8320:6;8315:3;8311:16;8308:25;8305:112;;;8336:79;;:::i;:::-;8305:112;8426:54;8473:6;8468:3;8463;8426:54;:::i;:::-;8145:341;8061:425;;;;;:::o;8506:340::-;8562:5;8611:3;8604:4;8596:6;8592:17;8588:27;8578:122;;8619:79;;:::i;:::-;8578:122;8736:6;8723:20;8761:79;8836:3;8828:6;8821:4;8813:6;8809:17;8761:79;:::i;:::-;8752:88;;8568:278;8506:340;;;;:::o;8852:654::-;8930:6;8938;8987:2;8975:9;8966:7;8962:23;8958:32;8955:119;;;8993:79;;:::i;:::-;8955:119;9113:1;9138:53;9183:7;9174:6;9163:9;9159:22;9138:53;:::i;:::-;9128:63;;9084:117;9268:2;9257:9;9253:18;9240:32;9299:18;9291:6;9288:30;9285:117;;;9321:79;;:::i;:::-;9285:117;9426:63;9481:7;9472:6;9461:9;9457:22;9426:63;:::i;:::-;9416:73;;9211:288;8852:654;;;;;:::o;9512:619::-;9589:6;9597;9605;9654:2;9642:9;9633:7;9629:23;9625:32;9622:119;;;9660:79;;:::i;:::-;9622:119;9780:1;9805:53;9850:7;9841:6;9830:9;9826:22;9805:53;:::i;:::-;9795:63;;9751:117;9907:2;9933:53;9978:7;9969:6;9958:9;9954:22;9933:53;:::i;:::-;9923:63;;9878:118;10035:2;10061:53;10106:7;10097:6;10086:9;10082:22;10061:53;:::i;:::-;10051:63;;10006:118;9512:619;;;;;:::o;10137:474::-;10205:6;10213;10262:2;10250:9;10241:7;10237:23;10233:32;10230:119;;;10268:79;;:::i;:::-;10230:119;10388:1;10413:53;10458:7;10449:6;10438:9;10434:22;10413:53;:::i;:::-;10403:63;;10359:117;10515:2;10541:53;10586:7;10577:6;10566:9;10562:22;10541:53;:::i;:::-;10531:63;;10486:118;10137:474;;;;;:::o;10617:332::-;10738:4;10776:2;10765:9;10761:18;10753:26;;10789:71;10857:1;10846:9;10842:17;10833:6;10789:71;:::i;:::-;10870:72;10938:2;10927:9;10923:18;10914:6;10870:72;:::i;:::-;10617:332;;;;;:::o;10955:329::-;11014:6;11063:2;11051:9;11042:7;11038:23;11034:32;11031:119;;;11069:79;;:::i;:::-;11031:119;11189:1;11214:53;11259:7;11250:6;11239:9;11235:22;11214:53;:::i;:::-;11204:63;;11160:117;10955:329;;;;:::o;11290:116::-;11360:21;11375:5;11360:21;:::i;:::-;11353:5;11350:32;11340:60;;11396:1;11393;11386:12;11340:60;11290:116;:::o;11412:133::-;11455:5;11493:6;11480:20;11471:29;;11509:30;11533:5;11509:30;:::i;:::-;11412:133;;;;:::o;11551:323::-;11607:6;11656:2;11644:9;11635:7;11631:23;11627:32;11624:119;;;11662:79;;:::i;:::-;11624:119;11782:1;11807:50;11849:7;11840:6;11829:9;11825:22;11807:50;:::i;:::-;11797:60;;11753:114;11551:323;;;;:::o;11880:619::-;11957:6;11965;11973;12022:2;12010:9;12001:7;11997:23;11993:32;11990:119;;;12028:79;;:::i;:::-;11990:119;12148:1;12173:53;12218:7;12209:6;12198:9;12194:22;12173:53;:::i;:::-;12163:63;;12119:117;12275:2;12301:53;12346:7;12337:6;12326:9;12322:22;12301:53;:::i;:::-;12291:63;;12246:118;12403:2;12429:53;12474:7;12465:6;12454:9;12450:22;12429:53;:::i;:::-;12419:63;;12374:118;11880:619;;;;;:::o;12505:529::-;12576:6;12584;12633:2;12621:9;12612:7;12608:23;12604:32;12601:119;;;12639:79;;:::i;:::-;12601:119;12787:1;12776:9;12772:17;12759:31;12817:18;12809:6;12806:30;12803:117;;;12839:79;;:::i;:::-;12803:117;12952:65;13009:7;13000:6;12989:9;12985:22;12952:65;:::i;:::-;12934:83;;;;12730:297;12505:529;;;;;:::o;13040:468::-;13105:6;13113;13162:2;13150:9;13141:7;13137:23;13133:32;13130:119;;;13168:79;;:::i;:::-;13130:119;13288:1;13313:53;13358:7;13349:6;13338:9;13334:22;13313:53;:::i;:::-;13303:63;;13259:117;13415:2;13441:50;13483:7;13474:6;13463:9;13459:22;13441:50;:::i;:::-;13431:60;;13386:115;13040:468;;;;;:::o;13527:552::-;13584:8;13594:6;13644:3;13637:4;13629:6;13625:17;13621:27;13611:122;;13652:79;;:::i;:::-;13611:122;13765:6;13752:20;13742:30;;13795:18;13787:6;13784:30;13781:117;;;13817:79;;:::i;:::-;13781:117;13931:4;13923:6;13919:17;13907:29;;13985:3;13977:4;13969:6;13965:17;13955:8;13951:32;13948:41;13945:128;;;13992:79;;:::i;:::-;13945:128;13527:552;;;;;:::o;14085:963::-;14182:6;14190;14198;14206;14214;14263:3;14251:9;14242:7;14238:23;14234:33;14231:120;;;14270:79;;:::i;:::-;14231:120;14390:1;14415:53;14460:7;14451:6;14440:9;14436:22;14415:53;:::i;:::-;14405:63;;14361:117;14517:2;14543:53;14588:7;14579:6;14568:9;14564:22;14543:53;:::i;:::-;14533:63;;14488:118;14645:2;14671:53;14716:7;14707:6;14696:9;14692:22;14671:53;:::i;:::-;14661:63;;14616:118;14801:2;14790:9;14786:18;14773:32;14832:18;14824:6;14821:30;14818:117;;;14854:79;;:::i;:::-;14818:117;14967:64;15023:7;15014:6;15003:9;14999:22;14967:64;:::i;:::-;14949:82;;;;14744:297;14085:963;;;;;;;;:::o;15054:474::-;15122:6;15130;15179:2;15167:9;15158:7;15154:23;15150:32;15147:119;;;15185:79;;:::i;:::-;15147:119;15305:1;15330:53;15375:7;15366:6;15355:9;15351:22;15330:53;:::i;:::-;15320:63;;15276:117;15432:2;15458:53;15503:7;15494:6;15483:9;15479:22;15458:53;:::i;:::-;15448:63;;15403:118;15054:474;;;;;:::o;15534:173::-;15674:25;15670:1;15662:6;15658:14;15651:49;15534:173;:::o;15713:366::-;15855:3;15876:67;15940:2;15935:3;15876:67;:::i;:::-;15869:74;;15952:93;16041:3;15952:93;:::i;:::-;16070:2;16065:3;16061:12;16054:19;;15713:366;;;:::o;16085:419::-;16251:4;16289:2;16278:9;16274:18;16266:26;;16338:9;16332:4;16328:20;16324:1;16313:9;16309:17;16302:47;16366:131;16492:4;16366:131;:::i;:::-;16358:139;;16085:419;;;:::o;16510:170::-;16650:22;16646:1;16638:6;16634:14;16627:46;16510:170;:::o;16686:366::-;16828:3;16849:67;16913:2;16908:3;16849:67;:::i;:::-;16842:74;;16925:93;17014:3;16925:93;:::i;:::-;17043:2;17038:3;17034:12;17027:19;;16686:366;;;:::o;17058:419::-;17224:4;17262:2;17251:9;17247:18;17239:26;;17311:9;17305:4;17301:20;17297:1;17286:9;17282:17;17275:47;17339:131;17465:4;17339:131;:::i;:::-;17331:139;;17058:419;;;:::o;17483:180::-;17531:77;17528:1;17521:88;17628:4;17625:1;17618:15;17652:4;17649:1;17642:15;17669:320;17713:6;17750:1;17744:4;17740:12;17730:22;;17797:1;17791:4;17787:12;17818:18;17808:81;;17874:4;17866:6;17862:17;17852:27;;17808:81;17936:2;17928:6;17925:14;17905:18;17902:38;17899:84;;17955:18;;:::i;:::-;17899:84;17720:269;17669:320;;;:::o;17995:242::-;18135:34;18131:1;18123:6;18119:14;18112:58;18204:25;18199:2;18191:6;18187:15;18180:50;17995:242;:::o;18243:366::-;18385:3;18406:67;18470:2;18465:3;18406:67;:::i;:::-;18399:74;;18482:93;18571:3;18482:93;:::i;:::-;18600:2;18595:3;18591:12;18584:19;;18243:366;;;:::o;18615:419::-;18781:4;18819:2;18808:9;18804:18;18796:26;;18868:9;18862:4;18858:20;18854:1;18843:9;18839:17;18832:47;18896:131;19022:4;18896:131;:::i;:::-;18888:139;;18615:419;;;:::o;19040:180::-;19088:77;19085:1;19078:88;19185:4;19182:1;19175:15;19209:4;19206:1;19199:15;19226:410;19266:7;19289:20;19307:1;19289:20;:::i;:::-;19284:25;;19323:20;19341:1;19323:20;:::i;:::-;19318:25;;19378:1;19375;19371:9;19400:30;19418:11;19400:30;:::i;:::-;19389:41;;19579:1;19570:7;19566:15;19563:1;19560:22;19540:1;19533:9;19513:83;19490:139;;19609:18;;:::i;:::-;19490:139;19274:362;19226:410;;;;:::o;19642:180::-;19690:77;19687:1;19680:88;19787:4;19784:1;19777:15;19811:4;19808:1;19801:15;19828:185;19868:1;19885:20;19903:1;19885:20;:::i;:::-;19880:25;;19919:20;19937:1;19919:20;:::i;:::-;19914:25;;19958:1;19948:35;;19963:18;;:::i;:::-;19948:35;20005:1;20002;19998:9;19993:14;;19828:185;;;;:::o;20019:225::-;20159:34;20155:1;20147:6;20143:14;20136:58;20228:8;20223:2;20215:6;20211:15;20204:33;20019:225;:::o;20250:366::-;20392:3;20413:67;20477:2;20472:3;20413:67;:::i;:::-;20406:74;;20489:93;20578:3;20489:93;:::i;:::-;20607:2;20602:3;20598:12;20591:19;;20250:366;;;:::o;20622:419::-;20788:4;20826:2;20815:9;20811:18;20803:26;;20875:9;20869:4;20865:20;20861:1;20850:9;20846:17;20839:47;20903:131;21029:4;20903:131;:::i;:::-;20895:139;;20622:419;;;:::o;21047:220::-;21187:34;21183:1;21175:6;21171:14;21164:58;21256:3;21251:2;21243:6;21239:15;21232:28;21047:220;:::o;21273:366::-;21415:3;21436:67;21500:2;21495:3;21436:67;:::i;:::-;21429:74;;21512:93;21601:3;21512:93;:::i;:::-;21630:2;21625:3;21621:12;21614:19;;21273:366;;;:::o;21645:419::-;21811:4;21849:2;21838:9;21834:18;21826:26;;21898:9;21892:4;21888:20;21884:1;21873:9;21869:17;21862:47;21926:131;22052:4;21926:131;:::i;:::-;21918:139;;21645:419;;;:::o;22070:97::-;22129:6;22157:3;22147:13;;22070:97;;;;:::o;22173:141::-;22222:4;22245:3;22237:11;;22268:3;22265:1;22258:14;22302:4;22299:1;22289:18;22281:26;;22173:141;;;:::o;22320:93::-;22357:6;22404:2;22399;22392:5;22388:14;22384:23;22374:33;;22320:93;;;:::o;22419:107::-;22463:8;22513:5;22507:4;22503:16;22482:37;;22419:107;;;;:::o;22532:393::-;22601:6;22651:1;22639:10;22635:18;22674:97;22704:66;22693:9;22674:97;:::i;:::-;22792:39;22822:8;22811:9;22792:39;:::i;:::-;22780:51;;22864:4;22860:9;22853:5;22849:21;22840:30;;22913:4;22903:8;22899:19;22892:5;22889:30;22879:40;;22608:317;;22532:393;;;;;:::o;22931:60::-;22959:3;22980:5;22973:12;;22931:60;;;:::o;22997:142::-;23047:9;23080:53;23098:34;23107:24;23125:5;23107:24;:::i;:::-;23098:34;:::i;:::-;23080:53;:::i;:::-;23067:66;;22997:142;;;:::o;23145:75::-;23188:3;23209:5;23202:12;;23145:75;;;:::o;23226:269::-;23336:39;23367:7;23336:39;:::i;:::-;23397:91;23446:41;23470:16;23446:41;:::i;:::-;23438:6;23431:4;23425:11;23397:91;:::i;:::-;23391:4;23384:105;23302:193;23226:269;;;:::o;23501:73::-;23546:3;23501:73;:::o;23580:189::-;23657:32;;:::i;:::-;23698:65;23756:6;23748;23742:4;23698:65;:::i;:::-;23633:136;23580:189;;:::o;23775:186::-;23835:120;23852:3;23845:5;23842:14;23835:120;;;23906:39;23943:1;23936:5;23906:39;:::i;:::-;23879:1;23872:5;23868:13;23859:22;;23835:120;;;23775:186;;:::o;23967:543::-;24068:2;24063:3;24060:11;24057:446;;;24102:38;24134:5;24102:38;:::i;:::-;24186:29;24204:10;24186:29;:::i;:::-;24176:8;24172:44;24369:2;24357:10;24354:18;24351:49;;;24390:8;24375:23;;24351:49;24413:80;24469:22;24487:3;24469:22;:::i;:::-;24459:8;24455:37;24442:11;24413:80;:::i;:::-;24072:431;;24057:446;23967:543;;;:::o;24516:117::-;24570:8;24620:5;24614:4;24610:16;24589:37;;24516:117;;;;:::o;24639:169::-;24683:6;24716:51;24764:1;24760:6;24752:5;24749:1;24745:13;24716:51;:::i;:::-;24712:56;24797:4;24791;24787:15;24777:25;;24690:118;24639:169;;;;:::o;24813:295::-;24889:4;25035:29;25060:3;25054:4;25035:29;:::i;:::-;25027:37;;25097:3;25094:1;25090:11;25084:4;25081:21;25073:29;;24813:295;;;;:::o;25113:1403::-;25237:44;25277:3;25272;25237:44;:::i;:::-;25346:18;25338:6;25335:30;25332:56;;;25368:18;;:::i;:::-;25332:56;25412:38;25444:4;25438:11;25412:38;:::i;:::-;25497:67;25557:6;25549;25543:4;25497:67;:::i;:::-;25591:1;25620:2;25612:6;25609:14;25637:1;25632:632;;;;26308:1;26325:6;26322:84;;;26381:9;26376:3;26372:19;26359:33;26350:42;;26322:84;26432:67;26492:6;26485:5;26432:67;:::i;:::-;26426:4;26419:81;26281:229;25602:908;;25632:632;25684:4;25680:9;25672:6;25668:22;25718:37;25750:4;25718:37;:::i;:::-;25777:1;25791:215;25805:7;25802:1;25799:14;25791:215;;;25891:9;25886:3;25882:19;25869:33;25861:6;25854:49;25942:1;25934:6;25930:14;25920:24;;25989:2;25978:9;25974:18;25961:31;;25828:4;25825:1;25821:12;25816:17;;25791:215;;;26034:6;26025:7;26022:19;26019:186;;;26099:9;26094:3;26090:19;26077:33;26142:48;26184:4;26176:6;26172:17;26161:9;26142:48;:::i;:::-;26134:6;26127:64;26042:163;26019:186;26251:1;26247;26239:6;26235:14;26231:22;26225:4;26218:36;25639:625;;;25602:908;;25212:1304;;;25113:1403;;;:::o;26522:226::-;26662:34;26658:1;26650:6;26646:14;26639:58;26731:9;26726:2;26718:6;26714:15;26707:34;26522:226;:::o;26754:366::-;26896:3;26917:67;26981:2;26976:3;26917:67;:::i;:::-;26910:74;;26993:93;27082:3;26993:93;:::i;:::-;27111:2;27106:3;27102:12;27095:19;;26754:366;;;:::o;27126:419::-;27292:4;27330:2;27319:9;27315:18;27307:26;;27379:9;27373:4;27369:20;27365:1;27354:9;27350:17;27343:47;27407:131;27533:4;27407:131;:::i;:::-;27399:139;;27126:419;;;:::o;27551:148::-;27653:11;27690:3;27675:18;;27551:148;;;;:::o;27729:874::-;27832:3;27869:5;27863:12;27898:36;27924:9;27898:36;:::i;:::-;27950:89;28032:6;28027:3;27950:89;:::i;:::-;27943:96;;28070:1;28059:9;28055:17;28086:1;28081:166;;;;28261:1;28256:341;;;;28048:549;;28081:166;28165:4;28161:9;28150;28146:25;28141:3;28134:38;28227:6;28220:14;28213:22;28205:6;28201:35;28196:3;28192:45;28185:52;;28081:166;;28256:341;28323:38;28355:5;28323:38;:::i;:::-;28383:1;28397:154;28411:6;28408:1;28405:13;28397:154;;;28485:7;28479:14;28475:1;28470:3;28466:11;28459:35;28535:1;28526:7;28522:15;28511:26;;28433:4;28430:1;28426:12;28421:17;;28397:154;;;28580:6;28575:3;28571:16;28564:23;;28263:334;;28048:549;;27836:767;;27729:874;;;;:::o;28609:390::-;28715:3;28743:39;28776:5;28743:39;:::i;:::-;28798:89;28880:6;28875:3;28798:89;:::i;:::-;28791:96;;28896:65;28954:6;28949:3;28942:4;28935:5;28931:16;28896:65;:::i;:::-;28986:6;28981:3;28977:16;28970:23;;28719:280;28609:390;;;;:::o;29005:182::-;29173:7;29168:3;29161:20;29005:182;:::o;29193:693::-;29460:3;29482:92;29570:3;29561:6;29482:92;:::i;:::-;29475:99;;29591:95;29682:3;29673:6;29591:95;:::i;:::-;29584:102;;29696:137;29829:3;29696:137;:::i;:::-;29858:1;29853:3;29849:11;29842:18;;29877:3;29870:10;;29193:693;;;;;:::o;29892:233::-;29931:3;29954:24;29972:5;29954:24;:::i;:::-;29945:33;;30000:66;29993:5;29990:77;29987:103;;30070:18;;:::i;:::-;29987:103;30117:1;30110:5;30106:13;30099:20;;29892:233;;;:::o;30131:191::-;30171:3;30190:20;30208:1;30190:20;:::i;:::-;30185:25;;30224:20;30242:1;30224:20;:::i;:::-;30219:25;;30267:1;30264;30260:9;30253:16;;30288:3;30285:1;30282:10;30279:36;;;30295:18;;:::i;:::-;30279:36;30131:191;;;;:::o;30328:1395::-;30445:37;30478:3;30445:37;:::i;:::-;30547:18;30539:6;30536:30;30533:56;;;30569:18;;:::i;:::-;30533:56;30613:38;30645:4;30639:11;30613:38;:::i;:::-;30698:67;30758:6;30750;30744:4;30698:67;:::i;:::-;30792:1;30816:4;30803:17;;30848:2;30840:6;30837:14;30865:1;30860:618;;;;31522:1;31539:6;31536:77;;;31588:9;31583:3;31579:19;31573:26;31564:35;;31536:77;31639:67;31699:6;31692:5;31639:67;:::i;:::-;31633:4;31626:81;31495:222;30830:887;;30860:618;30912:4;30908:9;30900:6;30896:22;30946:37;30978:4;30946:37;:::i;:::-;31005:1;31019:208;31033:7;31030:1;31027:14;31019:208;;;31112:9;31107:3;31103:19;31097:26;31089:6;31082:42;31163:1;31155:6;31151:14;31141:24;;31210:2;31199:9;31195:18;31182:31;;31056:4;31053:1;31049:12;31044:17;;31019:208;;;31255:6;31246:7;31243:19;31240:179;;;31313:9;31308:3;31304:19;31298:26;31356:48;31398:4;31390:6;31386:17;31375:9;31356:48;:::i;:::-;31348:6;31341:64;31263:156;31240:179;31465:1;31461;31453:6;31449:14;31445:22;31439:4;31432:36;30867:611;;;30830:887;;30420:1303;;;30328:1395;;:::o;31729:296::-;31869:34;31865:1;31857:6;31853:14;31846:58;31938:34;31933:2;31925:6;31921:15;31914:59;32007:10;32002:2;31994:6;31990:15;31983:35;31729:296;:::o;32031:366::-;32173:3;32194:67;32258:2;32253:3;32194:67;:::i;:::-;32187:74;;32270:93;32359:3;32270:93;:::i;:::-;32388:2;32383:3;32379:12;32372:19;;32031:366;;;:::o;32403:419::-;32569:4;32607:2;32596:9;32592:18;32584:26;;32656:9;32650:4;32646:20;32642:1;32631:9;32627:17;32620:47;32684:131;32810:4;32684:131;:::i;:::-;32676:139;;32403:419;;;:::o;32828:244::-;32968:34;32964:1;32956:6;32952:14;32945:58;33037:27;33032:2;33024:6;33020:15;33013:52;32828:244;:::o;33078:366::-;33220:3;33241:67;33305:2;33300:3;33241:67;:::i;:::-;33234:74;;33317:93;33406:3;33317:93;:::i;:::-;33435:2;33430:3;33426:12;33419:19;;33078:366;;;:::o;33450:419::-;33616:4;33654:2;33643:9;33639:18;33631:26;;33703:9;33697:4;33693:20;33689:1;33678:9;33674:17;33667:47;33731:131;33857:4;33731:131;:::i;:::-;33723:139;;33450:419;;;:::o;33875:295::-;34015:34;34011:1;34003:6;33999:14;33992:58;34084:34;34079:2;34071:6;34067:15;34060:59;34153:9;34148:2;34140:6;34136:15;34129:34;33875:295;:::o;34176:366::-;34318:3;34339:67;34403:2;34398:3;34339:67;:::i;:::-;34332:74;;34415:93;34504:3;34415:93;:::i;:::-;34533:2;34528:3;34524:12;34517:19;;34176:366;;;:::o;34548:419::-;34714:4;34752:2;34741:9;34737:18;34729:26;;34801:9;34795:4;34791:20;34787:1;34776:9;34772:17;34765:47;34829:131;34955:4;34829:131;:::i;:::-;34821:139;;34548:419;;;:::o;34973:194::-;35013:4;35033:20;35051:1;35033:20;:::i;:::-;35028:25;;35067:20;35085:1;35067:20;:::i;:::-;35062:25;;35111:1;35108;35104:9;35096:17;;35135:1;35129:4;35126:11;35123:37;;;35140:18;;:::i;:::-;35123:37;34973:194;;;;:::o;35173:98::-;35224:6;35258:5;35252:12;35242:22;;35173:98;;;:::o;35277:168::-;35360:11;35394:6;35389:3;35382:19;35434:4;35429:3;35425:14;35410:29;;35277:168;;;;:::o;35451:373::-;35537:3;35565:38;35597:5;35565:38;:::i;:::-;35619:70;35682:6;35677:3;35619:70;:::i;:::-;35612:77;;35698:65;35756:6;35751:3;35744:4;35737:5;35733:16;35698:65;:::i;:::-;35788:29;35810:6;35788:29;:::i;:::-;35783:3;35779:39;35772:46;;35541:283;35451:373;;;;:::o;35830:640::-;36025:4;36063:3;36052:9;36048:19;36040:27;;36077:71;36145:1;36134:9;36130:17;36121:6;36077:71;:::i;:::-;36158:72;36226:2;36215:9;36211:18;36202:6;36158:72;:::i;:::-;36240;36308:2;36297:9;36293:18;36284:6;36240:72;:::i;:::-;36359:9;36353:4;36349:20;36344:2;36333:9;36329:18;36322:48;36387:76;36458:4;36449:6;36387:76;:::i;:::-;36379:84;;35830:640;;;;;;;:::o;36476:141::-;36532:5;36563:6;36557:13;36548:22;;36579:32;36605:5;36579:32;:::i;:::-;36476:141;;;;:::o;36623:349::-;36692:6;36741:2;36729:9;36720:7;36716:23;36712:32;36709:119;;;36747:79;;:::i;:::-;36709:119;36867:1;36892:63;36947:7;36938:6;36927:9;36923:22;36892:63;:::i;:::-;36882:73;;36838:127;36623:349;;;;:::o

Swarm Source

ipfs://14af6bd134ecbb284b36ab18e27ddbfe21f637fe8b11e03dfcdb92383169602c
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.