ETH Price: $2,669.70 (+2.24%)

Token

 

Overview

Max Total Supply

615

Holders

481

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0x93699f0bf5adc92fafb6e7f61b09d84ceac39722
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:
BeliefCard

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol

// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol


// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

// File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/Beliefcard.sol

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

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

pragma solidity >=0.8.0 <0.9.0;

abstract contract ERC1155 is IERC165, IERC1155, IERC1155MetadataURI {

  mapping(address => mapping(uint256 => uint256)) public balanceOf;

  mapping(address => mapping(address => bool)) public isApprovedForAll;

  mapping(uint256 => uint256) public totalSupply;

  function uri(uint256) public view virtual returns (string memory);

  function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
    public
    view
    virtual
    returns (uint256[] memory)
  {
    require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

    uint256[] memory batchBalances = new uint256[](accounts.length);
    for (uint256 i = 0; i < accounts.length; i++) batchBalances[i] = balanceOf[accounts[i]][ids[i]];

    return batchBalances;
  }

  function setApprovalForAll(address operator, bool approved) public virtual {
    _setApprovalForAll(msg.sender, operator, approved);
  }

  function safeTransferFrom(
    address from,
    address to,
    uint256 id,
    uint256 amount,
    bytes memory data
  ) public virtual {
    require(from == msg.sender || isApprovedForAll[from][msg.sender], "ERC1155: caller is not owner nor approved");
    _safeTransferFrom(from, to, id, amount, data);
  }

  function safeBatchTransferFrom(
    address from,
    address to,
    uint256[] memory ids,
    uint256[] memory amounts,
    bytes memory data
  ) public virtual {
    require(
      from == msg.sender || isApprovedForAll[from][msg.sender],
      "ERC1155: transfer caller is not owner nor approved"
    );
    _safeBatchTransferFrom(from, to, ids, amounts, data);
  }

  function exists(uint256 id) public view virtual returns (bool) {
    return totalSupply[id] > 0;
  }

  function _safeTransferFrom(
    address from,
    address to,
    uint256 id,
    uint256 amount,
    bytes memory data
  ) internal virtual {
    require(to != address(0), "ERC1155: transfer to the zero address");

    _trackSupplyBeforeTransfer(from, to, _asSingletonArray(id), _asSingletonArray(amount));

    _beforeTokenTransfer(msg.sender, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

    require(balanceOf[from][id] >= amount, "ERC1155: insufficient balance for transfer");
    unchecked {
      balanceOf[from][id] -= amount;
    }
    balanceOf[to][id] += amount;

    emit TransferSingle(msg.sender, from, to, id, amount);
    _checkOnERC1155Received(msg.sender, from, to, id, amount, data);
    _afterTokenTransfer(msg.sender, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);
  }

  function _safeBatchTransferFrom(
    address from,
    address to,
    uint256[] memory ids,
    uint256[] memory amounts,
    bytes memory data
  ) internal virtual {
    require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
    require(to != address(0), "ERC1155: transfer to the zero address");

    _trackSupplyBeforeTransfer(from, to, ids, amounts);

    _beforeTokenTransfer(msg.sender, from, to, ids, amounts, data);

    for (uint256 i = 0; i < ids.length; ++i) {
      require(balanceOf[from][ids[i]] >= amounts[i], "ERC1155: insufficient balance for transfer");
      unchecked {
        balanceOf[from][ids[i]] -= amounts[i];
        balanceOf[to][ids[i]] += amounts[i];
      }
    }

    emit TransferBatch(msg.sender, from, to, ids, amounts);
    _checkOnERC1155BatchReceived(msg.sender, from, to, ids, amounts, data);
    _afterTokenTransfer(msg.sender, from, to, ids, amounts, data);
  }

  function _mint(
    address to,
    uint256 id,
    uint256 amount,
    bytes memory data
  ) internal virtual {
    require(to != address(0), "ERC1155: mint to the zero address");

    _trackSupplyBeforeTransfer(address(0), to, _asSingletonArray(id), _asSingletonArray(amount));

    _beforeTokenTransfer(msg.sender, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);

    balanceOf[to][id] += amount;
    emit TransferSingle(msg.sender, address(0), to, id, amount);
    _checkOnERC1155Received(msg.sender, address(0), to, id, amount, data);
    _afterTokenTransfer(msg.sender, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);
  }

  function _mintBatch(
    address to,
    uint256[] memory ids,
    uint256[] memory amounts,
    bytes memory data
  ) internal virtual {
    require(to != address(0), "ERC1155: mint to the zero address");
    require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

    _trackSupplyBeforeTransfer(address(0), to, ids, amounts);

    _beforeTokenTransfer(msg.sender, address(0), to, ids, amounts, data);

    for (uint256 i = 0; i < ids.length; i++) {
      balanceOf[to][ids[i]] += amounts[i];
    }

    emit TransferBatch(msg.sender, address(0), to, ids, amounts);
    _checkOnERC1155BatchReceived(msg.sender, address(0), to, ids, amounts, data);
    _afterTokenTransfer(msg.sender, address(0), to, ids, amounts, data);
  }

  function _burn(
    address from,
    uint256 id,
    uint256 amount
  ) internal virtual {
    _trackSupplyBeforeTransfer(from, address(0), _asSingletonArray(id), _asSingletonArray(amount));

    _beforeTokenTransfer(msg.sender, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

    require(balanceOf[from][id] >= amount, "ERC1155: burn amount exceeds balance");
    unchecked {
      balanceOf[from][id] -= amount;
    }

    emit TransferSingle(msg.sender, from, address(0), id, amount);
    _afterTokenTransfer(msg.sender, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");
  }

  function _burnBatch(
    address from,
    uint256[] memory ids,
    uint256[] memory amounts
  ) internal virtual {
    require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

    _trackSupplyBeforeTransfer(from, address(0), ids, amounts);

    _beforeTokenTransfer(msg.sender, from, address(0), ids, amounts, "");

    for (uint256 i = 0; i < ids.length; i++) {
      require(balanceOf[from][ids[i]] >= amounts[i], "ERC1155: burn amount exceeds balance");
      unchecked {
        balanceOf[from][ids[i]] -= amounts[i];
      }
    }

    emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    _afterTokenTransfer(msg.sender, from, address(0), ids, amounts, "");
  }

  function _setApprovalForAll(
    address owner,
    address operator,
    bool approved
  ) internal virtual {
    require(owner != operator, "ERC1155: setting approval status for self");
    isApprovedForAll[owner][operator] = approved;
    emit ApprovalForAll(owner, operator, approved);
  }

  function _beforeTokenTransfer(
    address operator,
    address from,
    address to,
    uint256[] memory ids,
    uint256[] memory amounts,
    bytes memory data
  ) internal virtual {}

  function _afterTokenTransfer(
    address operator,
    address from,
    address to,
    uint256[] memory ids,
    uint256[] memory amounts,
    bytes memory data
  ) internal virtual {}

  function _trackSupplyBeforeTransfer(
    address from,
    address to,
    uint256[] memory ids,
    uint256[] memory amounts
  ) private {
    if (from == address(0)) {
      for (uint256 i = 0; i < ids.length; i++) {
        totalSupply[ids[i]] += amounts[i];
      }
    }

    if (to == address(0)) {
      for (uint256 i = 0; i < ids.length; i++) {
        totalSupply[ids[i]] -= amounts[i];
      }
    }
  }

  function _checkOnERC1155Received(
    address operator,
    address from,
    address to,
    uint256 id,
    uint256 amount,
    bytes memory data
  ) private {
    if (to.code.length > 0) {
      try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 returnValue) {
        require(returnValue == 0xf23a6e61, "ERC1155: transfer to non ERC1155Receiver implementer");
      } catch {
        revert("ERC1155: transfer to non ERC1155Receiver implementer");
      }
    }
  }

  function _checkOnERC1155BatchReceived(
    address operator,
    address from,
    address to,
    uint256[] memory ids,
    uint256[] memory amounts,
    bytes memory data
  ) private {
    if (to.code.length > 0) {
      try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 returnValue) {
        require(returnValue == 0xbc197c81, "ERC1155: transfer to non ERC1155Receiver implementer");
      } catch {
        revert("ERC1155: transfer to non ERC1155Receiver implementer");
      }
    }
  }

  function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
    uint256[] memory array = new uint256[](1);
    array[0] = element;

    return array;
  }

  function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
    return
      interfaceId == type(IERC1155).interfaceId || // ERC1155
      interfaceId == type(IERC1155MetadataURI).interfaceId || // ERC1155MetadataURI
      interfaceId == type(IERC165).interfaceId; // ERC165
  }
}

interface IERC1155Receiver {
  function onERC1155Received(
    address operator,
    address from,
    uint256 id,
    uint256 value,
    bytes calldata data
  ) external returns (bytes4);

  function onERC1155BatchReceived(
    address operator,
    address from,
    uint256[] calldata ids,
    uint256[] calldata values,
    bytes calldata data
  ) external returns (bytes4);
}

abstract contract PrimeProof {
    bytes32 internal _merkleRootPrime;
    function _setPrime(bytes32 merkleRoot_) internal virtual {
        _merkleRootPrime = merkleRoot_;
    }
    function isPrime(address address_, bytes32[] memory proof_) public view returns (bool) {
        bytes32 _leaf = keccak256(abi.encodePacked(address_));
        for (uint256 i = 0; i < proof_.length; i++) {
            _leaf = _leaf < proof_[i] ? keccak256(abi.encodePacked(_leaf, proof_[i])) : keccak256(abi.encodePacked(proof_[i], _leaf));
        }
        return _leaf == _merkleRootPrime;
    }
}

abstract contract CompositeProof {
    bytes32 internal _merkleRootComposite;
    function _setComposite(bytes32 merkleRoot_) internal virtual {
        _merkleRootComposite = merkleRoot_;
    }
    function isComposite(address address_, bytes32[] memory proof_) public view returns (bool) {
        bytes32 _leaf = keccak256(abi.encodePacked(address_));
        for (uint256 i = 0; i < proof_.length; i++) {
            _leaf = _leaf < proof_[i] ? keccak256(abi.encodePacked(_leaf, proof_[i])) : keccak256(abi.encodePacked(proof_[i], _leaf));
        }
        return _leaf == _merkleRootComposite;
    }
}

//////////////////////////////////////////////////////////////////////////////////////
//    dBBBBb   dBBBP  dBP    dBP dBBBP  dBBBBP    dBBBP dBBBBBb   dBBBBBb    dBBBBb //
//       dBP                                                 BB       dBP       dB' //
//   dBBBK'  dBBP   dBP    dBP dBBP   dBBBP     dBP      dBP BB   dBBBBK'  dBP dB'  //
//  dB' db  dBP    dBP    dBP dBP    dBP       dBP      dBP  BB  dBP  BB  dBP dB'   //
// dBBBBP' dBBBBP dBBBBP dBP dBBBBP dBP       dBBBBP   dBBBBBBB dBP  dB' dBBBBB'    //
//                                                                                  //
//                       NYT-TDNR BELIEF CARD by 0xSumo                             //
//////////////////////////////////////////////////////////////////////////////////////

contract BeliefCard is ERC1155, Ownable, PrimeProof, CompositeProof {

    using Strings for uint256;
    string public baseURI;
    string public baseExtension;
    uint256 private maxMintsPerP = 3;
    uint256 private maxMintsPerC = 1;
    uint256 public _maxSupply = 3003;
    bool public primeEnabled = false;
    bool public compositeEnabled = false;
    mapping(address => uint256) public pMinted;
    mapping(address => uint256) public cMinted;

   constructor(
    string memory newBaseURI,
    string memory newBaseExtension
   )  {
    baseURI = newBaseURI;
    baseExtension = newBaseExtension;
   }

   function giftCard(address _address, uint256 belief, uint256 _amount) external onlyOwner { //gift always good
    require(belief == 1 || belief == 2 || belief == 3, "Query for nonexisting cards");
    require(totalSupply[1] + totalSupply[2] + totalSupply[3] + 1 < maxSuppply(), "No more cards");

    _mint(_address, belief, _amount, "");
   }

   //Prime101 Sale//
   function getCardPrime(uint256 belief, bytes32[] memory proof_) external {
    require(primeEnabled, "Prime paused");
    require(isPrime(msg.sender, proof_), "You are not in prime");
    require(maxMintsPerP >= pMinted[msg.sender] + 1, "You have no Prime Mint left");
    require(belief == 1 || belief == 2 || belief == 3, "Query for nonexisting cards");
    require(totalSupply[1] + totalSupply[2] + totalSupply[3] + 1 < maxSuppply(), "No more cards");

    pMinted[msg.sender]++;
    cMinted[msg.sender]++;
    _mint(msg.sender, belief, 1, "");
  }

  //Composite Sale//
   function getCardComposite(uint256 belief, bytes32[] memory proof_) external {
    require(compositeEnabled, "Composite paused");
    require(isComposite(msg.sender, proof_), "You are not in composite");
    require(cMinted[msg.sender] == 0, "You have no Composite Mint left");
    require(belief == 1 || belief == 2 || belief == 3, "Query for nonexisting cards");
    require(totalSupply[1] + totalSupply[2] + totalSupply[3] + 1 < maxSuppply(), "No more cards");

    pMinted[msg.sender]++;
    cMinted[msg.sender]++;
    _mint(msg.sender, belief, 1, "");
  }

  function maxSuppply() public view returns (uint256) {
    return _maxSupply;
  }

  function setPrimeClaim(bool bool_) external onlyOwner {
    primeEnabled = bool_;
  }

  function setCompositeClaim(bool bool_) external onlyOwner {
    compositeEnabled = bool_;
  }

  function setPrimeRoot(bytes32 merkleRoot_) external onlyOwner {
    _setPrime(merkleRoot_);
  }

  function setCompositeRoot(bytes32 merkleRoot_) external onlyOwner {
    _setComposite(merkleRoot_);
  }

  function setBaseURI(string memory newBaseURI) external onlyOwner {
    baseURI = newBaseURI;
  }

  function setBaseExtension(string memory newBaseExtension) external onlyOwner {
    baseExtension = newBaseExtension;
  }

  function uri(uint256 id) public view override returns (string memory) {
    require(super.exists(id), "Query for nonexisting cards");
    return string(abi.encodePacked(baseURI, id.toString(), baseExtension));
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"},{"internalType":"string","name":"newBaseExtension","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"_maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compositeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"belief","type":"uint256"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"getCardComposite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"belief","type":"uint256"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"getCardPrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"belief","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"giftCard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"isComposite","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"isPrime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSuppply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"primeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setCompositeClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setCompositeRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setPrimeClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setPrimeRoot","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405260036008556001600955610bbb600a55600b805461ffff191690553480156200002c57600080fd5b50604051620028f7380380620028f78339810160408190526200004f9162000253565b6200005a336200008e565b81516200006f906006906020850190620000e0565b50805162000085906007906020840190620000e0565b505050620002fa565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000ee90620002bd565b90600052602060002090601f0160209004810192826200011257600085556200015d565b82601f106200012d57805160ff19168380011785556200015d565b828001600101855582156200015d579182015b828111156200015d57825182559160200191906001019062000140565b506200016b9291506200016f565b5090565b5b808211156200016b576000815560010162000170565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ae57600080fd5b81516001600160401b0380821115620001cb57620001cb62000186565b604051601f8301601f19908116603f01168101908282118183101715620001f657620001f662000186565b816040528381526020925086838588010111156200021357600080fd5b600091505b8382101562000237578582018301518183018401529082019062000218565b83821115620002495760008385830101525b9695505050505050565b600080604083850312156200026757600080fd5b82516001600160401b03808211156200027f57600080fd5b6200028d868387016200019c565b93506020850151915080821115620002a457600080fd5b50620002b3858286016200019c565b9150509250929050565b600181811c90821680620002d257607f821691505b60208210811415620002f457634e487b7160e01b600052602260045260246000fd5b50919050565b6125ed806200030a6000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c806352d9e0221161010f578063d171bc54116100a2578063e985e9c511610071578063e985e9c51461045d578063f03795891461048b578063f242432a1461049e578063f2fde38b146104b157600080fd5b8063d171bc541461041c578063d1c9be4e1461042f578063d29fde2014610442578063da3ef23f1461044a57600080fd5b80638da5cb5b116100de5780638da5cb5b146103c6578063a22cb465146103e1578063bd85b039146103f4578063c66828621461041457600080fd5b806352d9e0221461038357806355f804b3146103a35780636c0360eb146103b6578063715018a6146103be57600080fd5b80632e8eafe0116101875780633abecab1116101565780633abecab11461031b578063400b0e411461032e5780634e1273f4146103415780634f558e791461036157600080fd5b80632e8eafe0146102d05780632eb2c2d6146102e35780633383b850146102f657806334d3f6011461030857600080fd5b8063214dd54d116101c3578063214dd54d1461028757806322f4596f146102945780632558a18d1461029d57806328a2dfa0146102b057600080fd5b8062fdd58e146101f457806301ffc9a71461022f5780630e89341c14610252578063120f50a814610272575b600080fd5b61021c610202366004611c17565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61024261023d366004611c57565b6104c4565b6040519015158152602001610226565b610265610260366004611c7b565b610516565b6040516102269190611cec565b610285610280366004611dd5565b610582565b005b600b546102429060ff1681565b61021c600a5481565b6102426102ab366004611e1c565b6107e4565b61021c6102be366004611e54565b600c6020526000908152604090205481565b6102856102de366004611dd5565b610908565b6102856102f1366004611ee7565b610a02565b600b5461024290610100900460ff1681565b610242610316366004611e1c565b610ab7565b610285610329366004611c7b565b610bdb565b61028561033c366004611f91565b610bef565b61035461034f366004611fc4565b610d1c565b60405161022691906120b5565b61024261036f366004611c7b565b600090815260026020526040902054151590565b61021c610391366004611e54565b600d6020526000908152604090205481565b6102856103b13660046120c8565b610e74565b610265610e8f565b610285610f1d565b6003546040516001600160a01b039091168152602001610226565b6102856103ef366004612121565b610f31565b61021c610402366004611c7b565b60026020526000908152604090205481565b610265610f3c565b61028561042a366004612154565b610f49565b61028561043d366004611c7b565b610f6b565b600a5461021c565b6102856104583660046120c8565b610f7c565b61024261046b36600461216f565b600160209081526000928352604080842090915290825290205460ff1681565b610285610499366004612154565b610f97565b6102856104ac366004612199565b610fb2565b6102856104bf366004611e54565b611057565b60006001600160e01b03198216636cdb3d1360e11b14806104f557506001600160e01b031982166303a24d0760e21b145b8061051057506001600160e01b031982166301ffc9a760e01b145b92915050565b60008181526002602052604090205460609061054d5760405162461bcd60e51b8152600401610544906121fe565b60405180910390fd5b6006610558836110cd565b600760405160200161056c9392919061230a565b6040516020818303038152906040529050919050565b600b54610100900460ff166105cc5760405162461bcd60e51b815260206004820152601060248201526f10dbdb5c1bdcda5d19481c185d5cd95960821b6044820152606401610544565b6105d633826107e4565b6106225760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f7420696e20636f6d706f7369746500000000000000006044820152606401610544565b336000908152600d60205260409020541561067f5760405162461bcd60e51b815260206004820152601f60248201527f596f752068617665206e6f20436f6d706f73697465204d696e74206c656674006044820152606401610544565b816001148061068e5750816002145b806106995750816003145b6106b55760405162461bcd60e51b8152600401610544906121fe565b600a5460026020527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460016000527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0546107329190612353565b61073c9190612353565b610747906001612353565b106107845760405162461bcd60e51b815260206004820152600d60248201526c4e6f206d6f726520636172647360981b6044820152606401610544565b336000908152600c6020526040812080549161079f8361236b565b9091555050336000908152600d602052604081208054916107bf8361236b565b91905055506107e033836001604051806020016040528060008152506111d3565b5050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156108fc5783818151811061083e5761083e612386565b6020026020010151821061089c5783818151811061085e5761085e612386565b602002602001015182604051602001610881929190918252602082015260400190565b604051602081830303815290604052805190602001206108e8565b818482815181106108af576108af612386565b60200260200101516040516020016108d1929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806108f48161236b565b915050610823565b50600554149392505050565b600b5460ff166109495760405162461bcd60e51b815260206004820152600c60248201526b141c9a5b59481c185d5cd95960a21b6044820152606401610544565b6109533382610ab7565b6109965760405162461bcd60e51b8152602060048201526014602482015273596f7520617265206e6f7420696e207072696d6560601b6044820152606401610544565b336000908152600c60205260409020546109b1906001612353565b600854101561067f5760405162461bcd60e51b815260206004820152601b60248201527f596f752068617665206e6f205072696d65204d696e74206c65667400000000006044820152606401610544565b6001600160a01b038516331480610a3c57506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610aa35760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610544565b610ab0858585858561130d565b5050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b8351811015610bcf57838181518110610b1157610b11612386565b60200260200101518210610b6f57838181518110610b3157610b31612386565b602002602001015182604051602001610b54929190918252602082015260400190565b60405160208183030381529060405280519060200120610bbb565b81848281518110610b8257610b82612386565b6020026020010151604051602001610ba4929190918252602082015260400190565b604051602081830303815290604052805190602001205b915080610bc78161236b565b915050610af6565b50600454149392505050565b610be361159a565b610bec81600455565b50565b610bf761159a565b8160011480610c065750816002145b80610c115750816003145b610c2d5760405162461bcd60e51b8152600401610544906121fe565b600a5460026020527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460016000527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e054610caa9190612353565b610cb49190612353565b610cbf906001612353565b10610cfc5760405162461bcd60e51b815260206004820152600d60248201526c4e6f206d6f726520636172647360981b6044820152606401610544565b610d17838383604051806020016040528060008152506111d3565b505050565b60608151835114610d815760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610544565b6000835167ffffffffffffffff811115610d9d57610d9d611cff565b604051908082528060200260200182016040528015610dc6578160200160208202803683370190505b50905060005b8451811015610e6c57600080868381518110610dea57610dea612386565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610e2657610e26612386565b6020026020010151815260200190815260200160002054828281518110610e4f57610e4f612386565b602090810291909101015280610e648161236b565b915050610dcc565b509392505050565b610e7c61159a565b80516107e0906006906020840190611b62565b60068054610e9c90612235565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec890612235565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b610f2561159a565b610f2f60006115f4565b565b6107e0338383611646565b60078054610e9c90612235565b610f5161159a565b600b80549115156101000261ff0019909216919091179055565b610f7361159a565b610bec81600555565b610f8461159a565b80516107e0906007906020840190611b62565b610f9f61159a565b600b805460ff1916911515919091179055565b6001600160a01b038516331480610fec57506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b61104a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610544565b610ab08585858585611727565b61105f61159a565b6001600160a01b0381166110c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610544565b610bec816115f4565b6060816110f15750506040805180820190915260018152600360fc1b602082015290565b8160005b811561111b57806111058161236b565b91506111149050600a836123b2565b91506110f5565b60008167ffffffffffffffff81111561113657611136611cff565b6040519080825280601f01601f191660200182016040528015611160576020820181803683370190505b5090505b84156111cb576111756001836123c6565b9150611182600a866123dd565b61118d906030612353565b60f81b8183815181106111a2576111a2612386565b60200101906001600160f81b031916908160001a9053506111c4600a866123b2565b9450611164565b949350505050565b6001600160a01b0384166112335760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610544565b61125060008561124286611860565b61124b86611860565b6118ab565b6112693360008661126087611860565b610ab087611860565b6001600160a01b0384166000908152602081815260408083208684529091528120805484929061129a908490612353565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46112f7336000868686866119c3565b6113073360008661126087611860565b50505050565b815183511461136f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610544565b6001600160a01b0384166113955760405162461bcd60e51b8152600401610544906123f1565b6113a1858585856118ab565b60005b835181101561152f578281815181106113bf576113bf612386565b6020026020010151600080886001600160a01b03166001600160a01b0316815260200190815260200160002060008684815181106113ff576113ff612386565b602002602001015181526020019081526020016000205410156114345760405162461bcd60e51b815260040161054490612436565b82818151811061144657611446612386565b6020026020010151600080886001600160a01b03166001600160a01b03168152602001908152602001600020600086848151811061148657611486612386565b60200260200101518152602001908152602001600020600082825403925050819055508281815181106114bb576114bb612386565b6020026020010151600080876001600160a01b03166001600160a01b0316815260200190815260200160002060008684815181106114fb576114fb612386565b6020026020010151815260200190815260200160002060008282540192505081905550806115289061236b565b90506113a4565b50836001600160a01b0316856001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161157f929190612480565b60405180910390a4611595338686868686611a97565b610ab0565b6003546001600160a01b03163314610f2f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610544565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156116ba5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610544565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b03841661174d5760405162461bcd60e51b8152600401610544906123f1565b61175b858561124286611860565b61176a33868661126087611860565b6001600160a01b0385166000908152602081815260408083208684529091529020548211156117ab5760405162461bcd60e51b815260040161054490612436565b6001600160a01b038086166000908152602081815260408083208784528252808320805487900390559287168252818152828220868352905290812080548492906117f7908490612353565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46118553386868686866119c3565b610ab0338686611260875b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061189a5761189a612386565b602090810291909101015292915050565b6001600160a01b0384166119345760005b8251811015611932578181815181106118d7576118d7612386565b6020026020010151600260008584815181106118f5576118f5612386565b60200260200101518152602001908152602001600020600082825461191a9190612353565b9091555081905061192a8161236b565b9150506118bc565b505b6001600160a01b0383166113075760005b8251811015610ab05781818151811061196057611960612386565b60200260200101516002600085848151811061197e5761197e612386565b6020026020010151815260200190815260200160002060008282546119a391906123c6565b909155508190506119b38161236b565b915050611945565b505050505050565b6001600160a01b0384163b156119bb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a0790899089908890889088906004016124ae565b6020604051808303816000875af1925050508015611a42575060408051601f3d908101601f19168201909252611a3f918101906124e8565b60015b611a5e5760405162461bcd60e51b815260040161054490612505565b63f23a6e6160e01b6001600160e01b0319821614611a8e5760405162461bcd60e51b815260040161054490612505565b50505050505050565b6001600160a01b0384163b156119bb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611adb9089908990889088908890600401612559565b6020604051808303816000875af1925050508015611b16575060408051601f3d908101601f19168201909252611b13918101906124e8565b60015b611b325760405162461bcd60e51b815260040161054490612505565b63bc197c8160e01b6001600160e01b0319821614611a8e5760405162461bcd60e51b815260040161054490612505565b828054611b6e90612235565b90600052602060002090601f016020900481019282611b905760008555611bd6565b82601f10611ba957805160ff1916838001178555611bd6565b82800160010185558215611bd6579182015b82811115611bd6578251825591602001919060010190611bbb565b50611be2929150611be6565b5090565b5b80821115611be25760008155600101611be7565b80356001600160a01b0381168114611c1257600080fd5b919050565b60008060408385031215611c2a57600080fd5b611c3383611bfb565b946020939093013593505050565b6001600160e01b031981168114610bec57600080fd5b600060208284031215611c6957600080fd5b8135611c7481611c41565b9392505050565b600060208284031215611c8d57600080fd5b5035919050565b60005b83811015611caf578181015183820152602001611c97565b838111156113075750506000910152565b60008151808452611cd8816020860160208601611c94565b601f01601f19169290920160200192915050565b602081526000611c746020830184611cc0565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d3e57611d3e611cff565b604052919050565b600067ffffffffffffffff821115611d6057611d60611cff565b5060051b60200190565b600082601f830112611d7b57600080fd5b81356020611d90611d8b83611d46565b611d15565b82815260059290921b84018101918181019086841115611daf57600080fd5b8286015b84811015611dca5780358352918301918301611db3565b509695505050505050565b60008060408385031215611de857600080fd5b82359150602083013567ffffffffffffffff811115611e0657600080fd5b611e1285828601611d6a565b9150509250929050565b60008060408385031215611e2f57600080fd5b611e3883611bfb565b9150602083013567ffffffffffffffff811115611e0657600080fd5b600060208284031215611e6657600080fd5b611c7482611bfb565b600067ffffffffffffffff831115611e8957611e89611cff565b611e9c601f8401601f1916602001611d15565b9050828152838383011115611eb057600080fd5b828260208301376000602084830101529392505050565b600082601f830112611ed857600080fd5b611c7483833560208501611e6f565b600080600080600060a08688031215611eff57600080fd5b611f0886611bfb565b9450611f1660208701611bfb565b9350604086013567ffffffffffffffff80821115611f3357600080fd5b611f3f89838a01611d6a565b94506060880135915080821115611f5557600080fd5b611f6189838a01611d6a565b93506080880135915080821115611f7757600080fd5b50611f8488828901611ec7565b9150509295509295909350565b600080600060608486031215611fa657600080fd5b611faf84611bfb565b95602085013595506040909401359392505050565b60008060408385031215611fd757600080fd5b823567ffffffffffffffff80821115611fef57600080fd5b818501915085601f83011261200357600080fd5b81356020612013611d8b83611d46565b82815260059290921b8401810191818101908984111561203257600080fd5b948201945b838610156120575761204886611bfb565b82529482019490820190612037565b9650508601359250508082111561206d57600080fd5b50611e1285828601611d6a565b600081518084526020808501945080840160005b838110156120aa5781518752958201959082019060010161208e565b509495945050505050565b602081526000611c74602083018461207a565b6000602082840312156120da57600080fd5b813567ffffffffffffffff8111156120f157600080fd5b8201601f8101841361210257600080fd5b6111cb84823560208401611e6f565b80358015158114611c1257600080fd5b6000806040838503121561213457600080fd5b61213d83611bfb565b915061214b60208401612111565b90509250929050565b60006020828403121561216657600080fd5b611c7482612111565b6000806040838503121561218257600080fd5b61218b83611bfb565b915061214b60208401611bfb565b600080600080600060a086880312156121b157600080fd5b6121ba86611bfb565b94506121c860208701611bfb565b93506040860135925060608601359150608086013567ffffffffffffffff8111156121f257600080fd5b611f8488828901611ec7565b6020808252601b908201527f517565727920666f72206e6f6e6578697374696e672063617264730000000000604082015260600190565b600181811c9082168061224957607f821691505b6020821081141561226a57634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c908083168061228a57607f831692505b60208084108214156122ac57634e487b7160e01b600052602260045260246000fd5b8180156122c057600181146122d1576122fe565b60ff198616895284890196506122fe565b60008881526020902060005b868110156122f65781548b8201529085019083016122dd565b505084890196505b50505050505092915050565b60006123168286612270565b8451612326818360208901611c94565b61233281830186612270565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156123665761236661233d565b500190565b600060001982141561237f5761237f61233d565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826123c1576123c161239c565b500490565b6000828210156123d8576123d861233d565b500390565b6000826123ec576123ec61239c565b500690565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000612493604083018561207a565b82810360208401526124a5818561207a565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061233290830184611cc0565b6000602082840312156124fa57600080fd5b8151611c7481611c41565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906125859083018661207a565b8281036060840152612597818661207a565b905082810360808401526125ab8185611cc0565b9897505050505050505056fea2646970667358221220ac83d21d3736b79b093de38c940544c2d661466441614866d5f707cc41d46b0a64736f6c634300080b0033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d514559353275553832464276456e586b474b774b54624d62786832644e67686663505a54424c466b436378562f0000000000000000000000000000000000000000000000000000000000000000000000000000000000052e6a736f6e000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ef5760003560e01c806352d9e0221161010f578063d171bc54116100a2578063e985e9c511610071578063e985e9c51461045d578063f03795891461048b578063f242432a1461049e578063f2fde38b146104b157600080fd5b8063d171bc541461041c578063d1c9be4e1461042f578063d29fde2014610442578063da3ef23f1461044a57600080fd5b80638da5cb5b116100de5780638da5cb5b146103c6578063a22cb465146103e1578063bd85b039146103f4578063c66828621461041457600080fd5b806352d9e0221461038357806355f804b3146103a35780636c0360eb146103b6578063715018a6146103be57600080fd5b80632e8eafe0116101875780633abecab1116101565780633abecab11461031b578063400b0e411461032e5780634e1273f4146103415780634f558e791461036157600080fd5b80632e8eafe0146102d05780632eb2c2d6146102e35780633383b850146102f657806334d3f6011461030857600080fd5b8063214dd54d116101c3578063214dd54d1461028757806322f4596f146102945780632558a18d1461029d57806328a2dfa0146102b057600080fd5b8062fdd58e146101f457806301ffc9a71461022f5780630e89341c14610252578063120f50a814610272575b600080fd5b61021c610202366004611c17565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61024261023d366004611c57565b6104c4565b6040519015158152602001610226565b610265610260366004611c7b565b610516565b6040516102269190611cec565b610285610280366004611dd5565b610582565b005b600b546102429060ff1681565b61021c600a5481565b6102426102ab366004611e1c565b6107e4565b61021c6102be366004611e54565b600c6020526000908152604090205481565b6102856102de366004611dd5565b610908565b6102856102f1366004611ee7565b610a02565b600b5461024290610100900460ff1681565b610242610316366004611e1c565b610ab7565b610285610329366004611c7b565b610bdb565b61028561033c366004611f91565b610bef565b61035461034f366004611fc4565b610d1c565b60405161022691906120b5565b61024261036f366004611c7b565b600090815260026020526040902054151590565b61021c610391366004611e54565b600d6020526000908152604090205481565b6102856103b13660046120c8565b610e74565b610265610e8f565b610285610f1d565b6003546040516001600160a01b039091168152602001610226565b6102856103ef366004612121565b610f31565b61021c610402366004611c7b565b60026020526000908152604090205481565b610265610f3c565b61028561042a366004612154565b610f49565b61028561043d366004611c7b565b610f6b565b600a5461021c565b6102856104583660046120c8565b610f7c565b61024261046b36600461216f565b600160209081526000928352604080842090915290825290205460ff1681565b610285610499366004612154565b610f97565b6102856104ac366004612199565b610fb2565b6102856104bf366004611e54565b611057565b60006001600160e01b03198216636cdb3d1360e11b14806104f557506001600160e01b031982166303a24d0760e21b145b8061051057506001600160e01b031982166301ffc9a760e01b145b92915050565b60008181526002602052604090205460609061054d5760405162461bcd60e51b8152600401610544906121fe565b60405180910390fd5b6006610558836110cd565b600760405160200161056c9392919061230a565b6040516020818303038152906040529050919050565b600b54610100900460ff166105cc5760405162461bcd60e51b815260206004820152601060248201526f10dbdb5c1bdcda5d19481c185d5cd95960821b6044820152606401610544565b6105d633826107e4565b6106225760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f7420696e20636f6d706f7369746500000000000000006044820152606401610544565b336000908152600d60205260409020541561067f5760405162461bcd60e51b815260206004820152601f60248201527f596f752068617665206e6f20436f6d706f73697465204d696e74206c656674006044820152606401610544565b816001148061068e5750816002145b806106995750816003145b6106b55760405162461bcd60e51b8152600401610544906121fe565b600a5460026020527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460016000527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0546107329190612353565b61073c9190612353565b610747906001612353565b106107845760405162461bcd60e51b815260206004820152600d60248201526c4e6f206d6f726520636172647360981b6044820152606401610544565b336000908152600c6020526040812080549161079f8361236b565b9091555050336000908152600d602052604081208054916107bf8361236b565b91905055506107e033836001604051806020016040528060008152506111d3565b5050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156108fc5783818151811061083e5761083e612386565b6020026020010151821061089c5783818151811061085e5761085e612386565b602002602001015182604051602001610881929190918252602082015260400190565b604051602081830303815290604052805190602001206108e8565b818482815181106108af576108af612386565b60200260200101516040516020016108d1929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806108f48161236b565b915050610823565b50600554149392505050565b600b5460ff166109495760405162461bcd60e51b815260206004820152600c60248201526b141c9a5b59481c185d5cd95960a21b6044820152606401610544565b6109533382610ab7565b6109965760405162461bcd60e51b8152602060048201526014602482015273596f7520617265206e6f7420696e207072696d6560601b6044820152606401610544565b336000908152600c60205260409020546109b1906001612353565b600854101561067f5760405162461bcd60e51b815260206004820152601b60248201527f596f752068617665206e6f205072696d65204d696e74206c65667400000000006044820152606401610544565b6001600160a01b038516331480610a3c57506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610aa35760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610544565b610ab0858585858561130d565b5050505050565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b8351811015610bcf57838181518110610b1157610b11612386565b60200260200101518210610b6f57838181518110610b3157610b31612386565b602002602001015182604051602001610b54929190918252602082015260400190565b60405160208183030381529060405280519060200120610bbb565b81848281518110610b8257610b82612386565b6020026020010151604051602001610ba4929190918252602082015260400190565b604051602081830303815290604052805190602001205b915080610bc78161236b565b915050610af6565b50600454149392505050565b610be361159a565b610bec81600455565b50565b610bf761159a565b8160011480610c065750816002145b80610c115750816003145b610c2d5760405162461bcd60e51b8152600401610544906121fe565b600a5460026020527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460016000527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e054610caa9190612353565b610cb49190612353565b610cbf906001612353565b10610cfc5760405162461bcd60e51b815260206004820152600d60248201526c4e6f206d6f726520636172647360981b6044820152606401610544565b610d17838383604051806020016040528060008152506111d3565b505050565b60608151835114610d815760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610544565b6000835167ffffffffffffffff811115610d9d57610d9d611cff565b604051908082528060200260200182016040528015610dc6578160200160208202803683370190505b50905060005b8451811015610e6c57600080868381518110610dea57610dea612386565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610e2657610e26612386565b6020026020010151815260200190815260200160002054828281518110610e4f57610e4f612386565b602090810291909101015280610e648161236b565b915050610dcc565b509392505050565b610e7c61159a565b80516107e0906006906020840190611b62565b60068054610e9c90612235565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec890612235565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b610f2561159a565b610f2f60006115f4565b565b6107e0338383611646565b60078054610e9c90612235565b610f5161159a565b600b80549115156101000261ff0019909216919091179055565b610f7361159a565b610bec81600555565b610f8461159a565b80516107e0906007906020840190611b62565b610f9f61159a565b600b805460ff1916911515919091179055565b6001600160a01b038516331480610fec57506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b61104a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610544565b610ab08585858585611727565b61105f61159a565b6001600160a01b0381166110c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610544565b610bec816115f4565b6060816110f15750506040805180820190915260018152600360fc1b602082015290565b8160005b811561111b57806111058161236b565b91506111149050600a836123b2565b91506110f5565b60008167ffffffffffffffff81111561113657611136611cff565b6040519080825280601f01601f191660200182016040528015611160576020820181803683370190505b5090505b84156111cb576111756001836123c6565b9150611182600a866123dd565b61118d906030612353565b60f81b8183815181106111a2576111a2612386565b60200101906001600160f81b031916908160001a9053506111c4600a866123b2565b9450611164565b949350505050565b6001600160a01b0384166112335760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610544565b61125060008561124286611860565b61124b86611860565b6118ab565b6112693360008661126087611860565b610ab087611860565b6001600160a01b0384166000908152602081815260408083208684529091528120805484929061129a908490612353565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46112f7336000868686866119c3565b6113073360008661126087611860565b50505050565b815183511461136f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610544565b6001600160a01b0384166113955760405162461bcd60e51b8152600401610544906123f1565b6113a1858585856118ab565b60005b835181101561152f578281815181106113bf576113bf612386565b6020026020010151600080886001600160a01b03166001600160a01b0316815260200190815260200160002060008684815181106113ff576113ff612386565b602002602001015181526020019081526020016000205410156114345760405162461bcd60e51b815260040161054490612436565b82818151811061144657611446612386565b6020026020010151600080886001600160a01b03166001600160a01b03168152602001908152602001600020600086848151811061148657611486612386565b60200260200101518152602001908152602001600020600082825403925050819055508281815181106114bb576114bb612386565b6020026020010151600080876001600160a01b03166001600160a01b0316815260200190815260200160002060008684815181106114fb576114fb612386565b6020026020010151815260200190815260200160002060008282540192505081905550806115289061236b565b90506113a4565b50836001600160a01b0316856001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161157f929190612480565b60405180910390a4611595338686868686611a97565b610ab0565b6003546001600160a01b03163314610f2f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610544565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156116ba5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610544565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b03841661174d5760405162461bcd60e51b8152600401610544906123f1565b61175b858561124286611860565b61176a33868661126087611860565b6001600160a01b0385166000908152602081815260408083208684529091529020548211156117ab5760405162461bcd60e51b815260040161054490612436565b6001600160a01b038086166000908152602081815260408083208784528252808320805487900390559287168252818152828220868352905290812080548492906117f7908490612353565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46118553386868686866119c3565b610ab0338686611260875b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061189a5761189a612386565b602090810291909101015292915050565b6001600160a01b0384166119345760005b8251811015611932578181815181106118d7576118d7612386565b6020026020010151600260008584815181106118f5576118f5612386565b60200260200101518152602001908152602001600020600082825461191a9190612353565b9091555081905061192a8161236b565b9150506118bc565b505b6001600160a01b0383166113075760005b8251811015610ab05781818151811061196057611960612386565b60200260200101516002600085848151811061197e5761197e612386565b6020026020010151815260200190815260200160002060008282546119a391906123c6565b909155508190506119b38161236b565b915050611945565b505050505050565b6001600160a01b0384163b156119bb5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a0790899089908890889088906004016124ae565b6020604051808303816000875af1925050508015611a42575060408051601f3d908101601f19168201909252611a3f918101906124e8565b60015b611a5e5760405162461bcd60e51b815260040161054490612505565b63f23a6e6160e01b6001600160e01b0319821614611a8e5760405162461bcd60e51b815260040161054490612505565b50505050505050565b6001600160a01b0384163b156119bb5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611adb9089908990889088908890600401612559565b6020604051808303816000875af1925050508015611b16575060408051601f3d908101601f19168201909252611b13918101906124e8565b60015b611b325760405162461bcd60e51b815260040161054490612505565b63bc197c8160e01b6001600160e01b0319821614611a8e5760405162461bcd60e51b815260040161054490612505565b828054611b6e90612235565b90600052602060002090601f016020900481019282611b905760008555611bd6565b82601f10611ba957805160ff1916838001178555611bd6565b82800160010185558215611bd6579182015b82811115611bd6578251825591602001919060010190611bbb565b50611be2929150611be6565b5090565b5b80821115611be25760008155600101611be7565b80356001600160a01b0381168114611c1257600080fd5b919050565b60008060408385031215611c2a57600080fd5b611c3383611bfb565b946020939093013593505050565b6001600160e01b031981168114610bec57600080fd5b600060208284031215611c6957600080fd5b8135611c7481611c41565b9392505050565b600060208284031215611c8d57600080fd5b5035919050565b60005b83811015611caf578181015183820152602001611c97565b838111156113075750506000910152565b60008151808452611cd8816020860160208601611c94565b601f01601f19169290920160200192915050565b602081526000611c746020830184611cc0565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d3e57611d3e611cff565b604052919050565b600067ffffffffffffffff821115611d6057611d60611cff565b5060051b60200190565b600082601f830112611d7b57600080fd5b81356020611d90611d8b83611d46565b611d15565b82815260059290921b84018101918181019086841115611daf57600080fd5b8286015b84811015611dca5780358352918301918301611db3565b509695505050505050565b60008060408385031215611de857600080fd5b82359150602083013567ffffffffffffffff811115611e0657600080fd5b611e1285828601611d6a565b9150509250929050565b60008060408385031215611e2f57600080fd5b611e3883611bfb565b9150602083013567ffffffffffffffff811115611e0657600080fd5b600060208284031215611e6657600080fd5b611c7482611bfb565b600067ffffffffffffffff831115611e8957611e89611cff565b611e9c601f8401601f1916602001611d15565b9050828152838383011115611eb057600080fd5b828260208301376000602084830101529392505050565b600082601f830112611ed857600080fd5b611c7483833560208501611e6f565b600080600080600060a08688031215611eff57600080fd5b611f0886611bfb565b9450611f1660208701611bfb565b9350604086013567ffffffffffffffff80821115611f3357600080fd5b611f3f89838a01611d6a565b94506060880135915080821115611f5557600080fd5b611f6189838a01611d6a565b93506080880135915080821115611f7757600080fd5b50611f8488828901611ec7565b9150509295509295909350565b600080600060608486031215611fa657600080fd5b611faf84611bfb565b95602085013595506040909401359392505050565b60008060408385031215611fd757600080fd5b823567ffffffffffffffff80821115611fef57600080fd5b818501915085601f83011261200357600080fd5b81356020612013611d8b83611d46565b82815260059290921b8401810191818101908984111561203257600080fd5b948201945b838610156120575761204886611bfb565b82529482019490820190612037565b9650508601359250508082111561206d57600080fd5b50611e1285828601611d6a565b600081518084526020808501945080840160005b838110156120aa5781518752958201959082019060010161208e565b509495945050505050565b602081526000611c74602083018461207a565b6000602082840312156120da57600080fd5b813567ffffffffffffffff8111156120f157600080fd5b8201601f8101841361210257600080fd5b6111cb84823560208401611e6f565b80358015158114611c1257600080fd5b6000806040838503121561213457600080fd5b61213d83611bfb565b915061214b60208401612111565b90509250929050565b60006020828403121561216657600080fd5b611c7482612111565b6000806040838503121561218257600080fd5b61218b83611bfb565b915061214b60208401611bfb565b600080600080600060a086880312156121b157600080fd5b6121ba86611bfb565b94506121c860208701611bfb565b93506040860135925060608601359150608086013567ffffffffffffffff8111156121f257600080fd5b611f8488828901611ec7565b6020808252601b908201527f517565727920666f72206e6f6e6578697374696e672063617264730000000000604082015260600190565b600181811c9082168061224957607f821691505b6020821081141561226a57634e487b7160e01b600052602260045260246000fd5b50919050565b8054600090600181811c908083168061228a57607f831692505b60208084108214156122ac57634e487b7160e01b600052602260045260246000fd5b8180156122c057600181146122d1576122fe565b60ff198616895284890196506122fe565b60008881526020902060005b868110156122f65781548b8201529085019083016122dd565b505084890196505b50505050505092915050565b60006123168286612270565b8451612326818360208901611c94565b61233281830186612270565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156123665761236661233d565b500190565b600060001982141561237f5761237f61233d565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826123c1576123c161239c565b500490565b6000828210156123d8576123d861233d565b500390565b6000826123ec576123ec61239c565b500690565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000612493604083018561207a565b82810360208401526124a5818561207a565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061233290830184611cc0565b6000602082840312156124fa57600080fd5b8151611c7481611c41565b60208082526034908201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906125859083018661207a565b8281036060840152612597818661207a565b905082810360808401526125ab8185611cc0565b9897505050505050505056fea2646970667358221220ac83d21d3736b79b093de38c940544c2d661466441614866d5f707cc41d46b0a64736f6c634300080b0033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d514559353275553832464276456e586b474b774b54624d62786832644e67686663505a54424c466b436378562f0000000000000000000000000000000000000000000000000000000000000000000000000000000000052e6a736f6e000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : newBaseURI (string): ipfs://QmQEY52uU82FBvEnXkGKwKTbMbxh2dNghfcPZTBLFkCcxV/
Arg [1] : newBaseExtension (string): .json

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [3] : 697066733a2f2f516d514559353275553832464276456e586b474b774b54624d
Arg [4] : 62786832644e67686663505a54424c466b436378562f00000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 2e6a736f6e000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

23170:3123:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11641:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;597:25:1;;;585:2;570:18;11641:64:0;;;;;;;;20440:307;;;;;;:::i;:::-;;:::i;:::-;;;1184:14:1;;1177:22;1159:41;;1147:2;1132:18;20440:307:0;1019:187:1;26074:216:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24771:569::-;;;;;;:::i;:::-;;:::i;:::-;;23458:32;;;;;;;;;23419;;;;;;21957:412;;;;;;:::i;:::-;;:::i;23540:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;24182:560;;;;;;:::i;:::-;;:::i;12829:381::-;;;;;;:::i;:::-;;:::i;23497:36::-;;;;;;;;;;;;21342:404;;;;;;:::i;:::-;;:::i;25628:97::-;;;;;;:::i;:::-;;:::i;23806:347::-;;;;;;:::i;:::-;;:::i;11912:442::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13216:102::-;;;;;;:::i;:::-;13273:4;13293:15;;;:11;:15;;;;;;:19;;;13216:102;23589:42;;;;;;:::i;:::-;;;;;;;;;;;;;;25842:98;;;;;;:::i;:::-;;:::i;23279:21::-;;;:::i;8636:103::-;;;:::i;7988:87::-;8061:6;;7988:87;;-1:-1:-1;;;;;8061:6:0;;;9007:51:1;;8995:2;8980:18;7988:87:0;8861:203:1;12360:138:0;;;;;;:::i;:::-;;:::i;11787:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;23307:27;;;:::i;25527:95::-;;;;;;:::i;:::-;;:::i;25731:105::-;;;;;;:::i;:::-;;:::i;25346:82::-;25412:10;;25346:82;;25946:122;;;;;;:::i;:::-;;:::i;11712:68::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;25434:87;;;;;;:::i;:::-;;:::i;12504:319::-;;;;;;:::i;:::-;;:::i;8894:201::-;;;;;;:::i;:::-;;:::i;20440:307::-;20516:4;-1:-1:-1;;;;;;20543:41:0;;-1:-1:-1;;;20543:41:0;;:115;;-1:-1:-1;;;;;;;20606:52:0;;-1:-1:-1;;;20606:52:0;20543:115;:188;;;-1:-1:-1;;;;;;;20691:40:0;;-1:-1:-1;;;20691:40:0;20543:188;20529:202;20440:307;-1:-1:-1;;20440:307:0:o;26074:216::-;13273:4;13293:15;;;:11;:15;;;;;;26129:13;;26151:56;;;;-1:-1:-1;;;26151:56:0;;;;;;;:::i;:::-;;;;;;;;;26245:7;26254:13;:2;:11;:13::i;:::-;26269;26228:55;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26214:70;;26074:216;;;:::o;24771:569::-;24862:16;;;;;;;24854:45;;;;-1:-1:-1;;;24854:45:0;;13062:2:1;24854:45:0;;;13044:21:1;13101:2;13081:18;;;13074:30;-1:-1:-1;;;13120:18:1;;;13113:46;13176:18;;24854:45:0;12860:340:1;24854:45:0;24914:31;24926:10;24938:6;24914:11;:31::i;:::-;24906:68;;;;-1:-1:-1;;;24906:68:0;;13407:2:1;24906:68:0;;;13389:21:1;13446:2;13426:18;;;13419:30;13485:26;13465:18;;;13458:54;13529:18;;24906:68:0;13205:348:1;24906:68:0;24997:10;24989:19;;;;:7;:19;;;;;;:24;24981:68;;;;-1:-1:-1;;;24981:68:0;;13760:2:1;24981:68:0;;;13742:21:1;13799:2;13779:18;;;13772:30;13838:33;13818:18;;;13811:61;13889:18;;24981:68:0;13558:355:1;24981:68:0;25064:6;25074:1;25064:11;:26;;;;25079:6;25089:1;25079:11;25064:26;:41;;;;25094:6;25104:1;25094:11;25064:41;25056:81;;;;-1:-1:-1;;;25056:81:0;;;;;;;:::i;:::-;25412:10;;25186:11;:14;;;;25169;;25164:1;25186:14;25152;;;:31;;25169:14;25152:31;:::i;:::-;:48;;;;:::i;:::-;:52;;25203:1;25152:52;:::i;:::-;:67;25144:93;;;;-1:-1:-1;;;25144:93:0;;14385:2:1;25144:93:0;;;14367:21:1;14424:2;14404:18;;;14397:30;-1:-1:-1;;;14443:18:1;;;14436:43;14496:18;;25144:93:0;14183:337:1;25144:93:0;25254:10;25246:19;;;;:7;:19;;;;;:21;;;;;;:::i;:::-;;;;-1:-1:-1;;25282:10:0;25274:19;;;;:7;:19;;;;;:21;;;;;;:::i;:::-;;;;;;25302:32;25308:10;25320:6;25328:1;25302:32;;;;;;;;;;;;:5;:32::i;:::-;24771:569;;:::o;21957:412::-;22085:26;;-1:-1:-1;;14814:2:1;14810:15;;;14806:53;22085:26:0;;;14794:66:1;22042:4:0;;;;14876:12:1;;22085:26:0;;;;;;;;;;;;22075:37;;;;;;22059:53;;22128:9;22123:192;22147:6;:13;22143:1;:17;22123:192;;;22198:6;22205:1;22198:9;;;;;;;;:::i;:::-;;;;;;;22190:5;:17;:113;;22285:6;22292:1;22285:9;;;;;;;;:::i;:::-;;;;;;;22296:5;22268:34;;;;;;;;15188:19:1;;;15232:2;15223:12;;15216:28;15269:2;15260:12;;15031:247;22268:34:0;;;;;;;;;;;;;22258:45;;;;;;22190:113;;;22237:5;22244:6;22251:1;22244:9;;;;;;;;:::i;:::-;;;;;;;22220:34;;;;;;;;15188:19:1;;;15232:2;15223:12;;15216:28;15269:2;15260:12;;15031:247;22220:34:0;;;;;;;;;;;;;22210:45;;;;;;22190:113;22182:121;-1:-1:-1;22162:3:0;;;;:::i;:::-;;;;22123:192;;;-1:-1:-1;22341:20:0;;22332:29;;21957:412;-1:-1:-1;;;21957:412:0:o;24182:560::-;24269:12;;;;24261:37;;;;-1:-1:-1;;;24261:37:0;;15485:2:1;24261:37:0;;;15467:21:1;15524:2;15504:18;;;15497:30;-1:-1:-1;;;15543:18:1;;;15536:42;15595:18;;24261:37:0;15283:336:1;24261:37:0;24313:27;24321:10;24333:6;24313:7;:27::i;:::-;24305:60;;;;-1:-1:-1;;;24305:60:0;;15826:2:1;24305:60:0;;;15808:21:1;15865:2;15845:18;;;15838:30;-1:-1:-1;;;15884:18:1;;;15877:50;15944:18;;24305:60:0;15624:344:1;24305:60:0;24404:10;24396:19;;;;:7;:19;;;;;;:23;;24418:1;24396:23;:::i;:::-;24380:12;;:39;;24372:79;;;;-1:-1:-1;;;24372:79:0;;16175:2:1;24372:79:0;;;16157:21:1;16214:2;16194:18;;;16187:30;16253:29;16233:18;;;16226:57;16300:18;;24372:79:0;15973:351:1;12829:381:0;-1:-1:-1;;;;;13021:18:0;;13029:10;13021:18;;:56;;-1:-1:-1;;;;;;13043:22:0;;;;;;:16;:22;;;;;;;;13066:10;13043:34;;;;;;;;;;13021:56;13005:140;;;;-1:-1:-1;;;13005:140:0;;16531:2:1;13005:140:0;;;16513:21:1;16570:2;16550:18;;;16543:30;16609:34;16589:18;;;16582:62;-1:-1:-1;;;16660:18:1;;;16653:48;16718:19;;13005:140:0;16329:414:1;13005:140:0;13152:52;13175:4;13181:2;13185:3;13190:7;13199:4;13152:22;:52::i;:::-;12829:381;;;;;:::o;21342:404::-;21466:26;;-1:-1:-1;;14814:2:1;14810:15;;;14806:53;21466:26:0;;;14794:66:1;21423:4:0;;;;14876:12:1;;21466:26:0;;;;;;;;;;;;21456:37;;;;;;21440:53;;21509:9;21504:192;21528:6;:13;21524:1;:17;21504:192;;;21579:6;21586:1;21579:9;;;;;;;;:::i;:::-;;;;;;;21571:5;:17;:113;;21666:6;21673:1;21666:9;;;;;;;;:::i;:::-;;;;;;;21677:5;21649:34;;;;;;;;15188:19:1;;;15232:2;15223:12;;15216:28;15269:2;15260:12;;15031:247;21649:34:0;;;;;;;;;;;;;21639:45;;;;;;21571:113;;;21618:5;21625:6;21632:1;21625:9;;;;;;;;:::i;:::-;;;;;;;21601:34;;;;;;;;15188:19:1;;;15232:2;15223:12;;15216:28;15269:2;15260:12;;15031:247;21601:34:0;;;;;;;;;;;;;21591:45;;;;;;21571:113;21563:121;-1:-1:-1;21543:3:0;;;;:::i;:::-;;;;21504:192;;;-1:-1:-1;21722:16:0;;21713:25;;21342:404;-1:-1:-1;;;21342:404:0:o;25628:97::-;7874:13;:11;:13::i;:::-;25697:22:::1;25707:11;21298:16:::0;:30;21230:106;25697:22:::1;25628:97:::0;:::o;23806:347::-;7874:13;:11;:13::i;:::-;23928:6:::1;23938:1;23928:11;:26;;;;23943:6;23953:1;23943:11;23928:26;:41;;;;23958:6;23968:1;23958:11;23928:41;23920:81;;;;-1:-1:-1::0;;;23920:81:0::1;;;;;;;:::i;:::-;25412:10:::0;;24050:11:::1;:14;::::0;;;24033;;24028:1:::1;24050:14;24016::::0;;;:31:::1;::::0;24033:14;24016:31:::1;:::i;:::-;:48;;;;:::i;:::-;:52;::::0;24067:1:::1;24016:52;:::i;:::-;:67;24008:93;;;::::0;-1:-1:-1;;;24008:93:0;;14385:2:1;24008:93:0::1;::::0;::::1;14367:21:1::0;14424:2;14404:18;;;14397:30;-1:-1:-1;;;14443:18:1;;;14436:43;14496:18;;24008:93:0::1;14183:337:1::0;24008:93:0::1;24110:36;24116:8;24126:6;24134:7;24110:36;;;;;;;;;;;::::0;:5:::1;:36::i;:::-;23806:347:::0;;;:::o;11912:442::-;12034:16;12089:3;:10;12070:8;:15;:29;12062:83;;;;-1:-1:-1;;;12062:83:0;;16950:2:1;12062:83:0;;;16932:21:1;16989:2;16969:18;;;16962:30;17028:34;17008:18;;;17001:62;-1:-1:-1;;;17079:18:1;;;17072:39;17128:19;;12062:83:0;16748:405:1;12062:83:0;12154:30;12201:8;:15;12187:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12187:30:0;;12154:63;;12229:9;12224:95;12248:8;:15;12244:1;:19;12224:95;;;12289:9;:22;12299:8;12308:1;12299:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;12289:22:0;-1:-1:-1;;;;;12289:22:0;;;;;;;;;;;;:30;12312:3;12316:1;12312:6;;;;;;;;:::i;:::-;;;;;;;12289:30;;;;;;;;;;;;12270:13;12284:1;12270:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;12265:3;;;;:::i;:::-;;;;12224:95;;;-1:-1:-1;12335:13:0;11912:442;-1:-1:-1;;;11912:442:0:o;25842:98::-;7874:13;:11;:13::i;:::-;25914:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;23279:21::-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8636:103::-;7874:13;:11;:13::i;:::-;8701:30:::1;8728:1;8701:18;:30::i;:::-;8636:103::o:0;12360:138::-;12442:50;12461:10;12473:8;12483;12442:18;:50::i;23307:27::-;;;;;;;:::i;25527:95::-;7874:13;:11;:13::i;:::-;25592:16:::1;:24:::0;;;::::1;;;;-1:-1:-1::0;;25592:24:0;;::::1;::::0;;;::::1;::::0;;25527:95::o;25731:105::-;7874:13;:11;:13::i;:::-;25804:26:::1;25818:11;21909:20:::0;:34;21837:114;25946:122;7874:13;:11;:13::i;:::-;26030:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;25434:87::-:0;7874:13;:11;:13::i;:::-;25495:12:::1;:20:::0;;-1:-1:-1;;25495:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25434:87::o;12504:319::-;-1:-1:-1;;;;;12663:18:0;;12671:10;12663:18;;:56;;-1:-1:-1;;;;;;12685:22:0;;;;;;:16;:22;;;;;;;;12708:10;12685:34;;;;;;;;;;12663:56;12655:110;;;;-1:-1:-1;;;12655:110:0;;17360:2:1;12655:110:0;;;17342:21:1;17399:2;17379:18;;;17372:30;17438:34;17418:18;;;17411:62;-1:-1:-1;;;17489:18:1;;;17482:39;17538:19;;12655:110:0;17158:405:1;12655:110:0;12772:45;12790:4;12796:2;12800;12804:6;12812:4;12772:17;:45::i;8894:201::-;7874:13;:11;:13::i;:::-;-1:-1:-1;;;;;8983:22:0;::::1;8975:73;;;::::0;-1:-1:-1;;;8975:73:0;;17770:2:1;8975:73:0::1;::::0;::::1;17752:21:1::0;17809:2;17789:18;;;17782:30;17848:34;17828:18;;;17821:62;-1:-1:-1;;;17899:18:1;;;17892:36;17945:19;;8975:73:0::1;17568:402:1::0;8975:73:0::1;9059:28;9078:8;9059:18;:28::i;9772:723::-:0;9828:13;10049:10;10045:53;;-1:-1:-1;;10076:10:0;;;;;;;;;;;;-1:-1:-1;;;10076:10:0;;;;;9772:723::o;10045:53::-;10123:5;10108:12;10164:78;10171:9;;10164:78;;10197:8;;;;:::i;:::-;;-1:-1:-1;10220:10:0;;-1:-1:-1;10228:2:0;10220:10;;:::i;:::-;;;10164:78;;;10252:19;10284:6;10274:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10274:17:0;;10252:39;;10302:154;10309:10;;10302:154;;10336:11;10346:1;10336:11;;:::i;:::-;;-1:-1:-1;10405:10:0;10413:2;10405:5;:10;:::i;:::-;10392:24;;:2;:24;:::i;:::-;10379:39;;10362:6;10369;10362:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;10362:56:0;;;;;;;;-1:-1:-1;10433:11:0;10442:2;10433:11;;:::i;:::-;;;10302:154;;;10480:6;9772:723;-1:-1:-1;;;;9772:723:0:o;15146:693::-;-1:-1:-1;;;;;15277:16:0;;15269:62;;;;-1:-1:-1;;;15269:62:0;;18681:2:1;15269:62:0;;;18663:21:1;18720:2;18700:18;;;18693:30;18759:34;18739:18;;;18732:62;-1:-1:-1;;;18810:18:1;;;18803:31;18851:19;;15269:62:0;18479:397:1;15269:62:0;15340:92;15375:1;15379:2;15383:21;15401:2;15383:17;:21::i;:::-;15406:25;15424:6;15406:17;:25::i;:::-;15340:26;:92::i;:::-;15441:104;15462:10;15482:1;15486:2;15490:21;15508:2;15490:17;:21::i;:::-;15513:25;15531:6;15513:17;:25::i;15441:104::-;-1:-1:-1;;;;;15554:13:0;;:9;:13;;;;;;;;;;;:17;;;;;;;;:27;;15575:6;;15554:9;:27;;15575:6;;15554:27;:::i;:::-;;;;-1:-1:-1;;15593:54:0;;;19055:25:1;;;19111:2;19096:18;;19089:34;;;-1:-1:-1;;;;;15593:54:0;;;15628:1;;15608:10;;15593:54;;19028:18:1;15593:54:0;;;;;;;15654:69;15678:10;15698:1;15702:2;15706;15710:6;15718:4;15654:23;:69::i;:::-;15730:103;15750:10;15770:1;15774:2;15778:21;15796:2;15778:17;:21::i;15730:103::-;15146:693;;;;:::o;14183:957::-;14384:7;:14;14370:3;:10;:28;14362:81;;;;-1:-1:-1;;;14362:81:0;;19336:2:1;14362:81:0;;;19318:21:1;19375:2;19355:18;;;19348:30;19414:34;19394:18;;;19387:62;-1:-1:-1;;;19465:18:1;;;19458:38;19513:19;;14362:81:0;19134:404:1;14362:81:0;-1:-1:-1;;;;;14458:16:0;;14450:66;;;;-1:-1:-1;;;14450:66:0;;;;;;;:::i;:::-;14525:50;14552:4;14558:2;14562:3;14567:7;14525:26;:50::i;:::-;14660:9;14655:272;14679:3;:10;14675:1;:14;14655:272;;;14740:7;14748:1;14740:10;;;;;;;;:::i;:::-;;;;;;;14713:9;:15;14723:4;-1:-1:-1;;;;;14713:15:0;-1:-1:-1;;;;;14713:15:0;;;;;;;;;;;;:23;14729:3;14733:1;14729:6;;;;;;;;:::i;:::-;;;;;;;14713:23;;;;;;;;;;;;:37;;14705:92;;;;-1:-1:-1;;;14705:92:0;;;;;;;:::i;:::-;14854:7;14862:1;14854:10;;;;;;;;:::i;:::-;;;;;;;14827:9;:15;14837:4;-1:-1:-1;;;;;14827:15:0;-1:-1:-1;;;;;14827:15:0;;;;;;;;;;;;:23;14843:3;14847:1;14843:6;;;;;;;;:::i;:::-;;;;;;;14827:23;;;;;;;;;;;;:37;;;;;;;;;;;14900:7;14908:1;14900:10;;;;;;;;:::i;:::-;;;;;;;14875:9;:13;14885:2;-1:-1:-1;;;;;14875:13:0;-1:-1:-1;;;;;14875:13:0;;;;;;;;;;;;:21;14889:3;14893:1;14889:6;;;;;;;;:::i;:::-;;;;;;;14875:21;;;;;;;;;;;;:35;;;;;;;;;;;14691:3;;;;:::i;:::-;;;14655:272;;;;14972:2;-1:-1:-1;;;;;14940:49:0;14966:4;-1:-1:-1;;;;;14940:49:0;14954:10;-1:-1:-1;;;;;14940:49:0;;14976:3;14981:7;14940:49;;;;;;;:::i;:::-;;;;;;;;14996:70;15025:10;15037:4;15043:2;15047:3;15052:7;15061:4;14996:28;:70::i;:::-;15073:61;18316:195;8153:132;8061:6;;-1:-1:-1;;;;;8061:6:0;6619:10;8217:23;8209:68;;;;-1:-1:-1;;;8209:68:0;;21032:2:1;8209:68:0;;;21014:21:1;;;21051:18;;;21044:30;21110:34;21090:18;;;21083:62;21162:18;;8209:68:0;20830:356:1;9255:191:0;9348:6;;;-1:-1:-1;;;;;9365:17:0;;;-1:-1:-1;;;;;;9365:17:0;;;;;;;9398:40;;9348:6;;;9365:17;9348:6;;9398:40;;9329:16;;9398:40;9318:128;9255:191;:::o;18009:301::-;18146:8;-1:-1:-1;;;;;18137:17:0;:5;-1:-1:-1;;;;;18137:17:0;;;18129:71;;;;-1:-1:-1;;;18129:71:0;;21393:2:1;18129:71:0;;;21375:21:1;21432:2;21412:18;;;21405:30;21471:34;21451:18;;;21444:62;-1:-1:-1;;;21522:18:1;;;21515:39;21571:19;;18129:71:0;21191:405:1;18129:71:0;-1:-1:-1;;;;;18207:23:0;;;;;;;:16;:23;;;;;;;;:33;;;;;;;;;;;;;:44;;-1:-1:-1;;18207:44:0;;;;;;;;;;18263:41;;1159::1;;;18263::0;;1132:18:1;18263:41:0;;;;;;;18009:301;;;:::o;13324:853::-;-1:-1:-1;;;;;13486:16:0;;13478:66;;;;-1:-1:-1;;;13478:66:0;;;;;;;:::i;:::-;13553:86;13580:4;13586:2;13590:21;13608:2;13590:17;:21::i;13553:86::-;13648:98;13669:10;13681:4;13687:2;13691:21;13709:2;13691:17;:21::i;13648:98::-;-1:-1:-1;;;;;13763:15:0;;:9;:15;;;;;;;;;;;:19;;;;;;;;;:29;-1:-1:-1;13763:29:0;13755:84;;;;-1:-1:-1;;;13755:84:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13865:15:0;;;:9;:15;;;;;;;;;;;:19;;;;;;;;:29;;;;;;;13908:13;;;;;;;;;;;:17;;;;;;;;:27;;13888:6;;13865:9;13908:27;;13888:6;;13908:27;:::i;:::-;;;;-1:-1:-1;;13949:48:0;;;19055:25:1;;;19111:2;19096:18;;19089:34;;;-1:-1:-1;;;;;13949:48:0;;;;;;;;13964:10;;13949:48;;19028:18:1;13949:48:0;;;;;;;14004:63;14028:10;14040:4;14046:2;14050;14054:6;14062:4;14004:23;:63::i;:::-;14074:97;14094:10;14106:4;14112:2;14116:21;14134:2;20250:184;20366:16;;;20380:1;20366:16;;;;;;;;;20316;;20341:22;;20366:16;;;;;;;;;;;;-1:-1:-1;20366:16:0;20341:41;;20400:7;20389:5;20395:1;20389:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;20423:5;20250:184;-1:-1:-1;;20250:184:0:o;18717:431::-;-1:-1:-1;;;;;18871:18:0;;18867:135;;18905:9;18900:95;18924:3;:10;18920:1;:14;18900:95;;;18975:7;18983:1;18975:10;;;;;;;;:::i;:::-;;;;;;;18952:11;:19;18964:3;18968:1;18964:6;;;;;;;;:::i;:::-;;;;;;;18952:19;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;18936:3:0;;-1:-1:-1;18936:3:0;;;:::i;:::-;;;;18900:95;;;;18867:135;-1:-1:-1;;;;;19014:16:0;;19010:133;;19046:9;19041:95;19065:3;:10;19061:1;:14;19041:95;;;19116:7;19124:1;19116:10;;;;;;;;:::i;:::-;;;;;;;19093:11;:19;19105:3;19109:1;19105:6;;;;;;;;:::i;:::-;;;;;;;19093:19;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;19077:3:0;;-1:-1:-1;19077:3:0;;;:::i;:::-;;;;19041:95;;18316:195;;;;;;;:::o;19154:526::-;-1:-1:-1;;;;;19332:14:0;;;:18;19328:347;;19365:72;;-1:-1:-1;;;19365:72:0;;-1:-1:-1;;;;;19365:38:0;;;;;:72;;19404:8;;19414:4;;19420:2;;19424:6;;19432:4;;19365:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19365:72:0;;;;;;;;-1:-1:-1;;19365:72:0;;;;;;;;;;;;:::i;:::-;;;19361:307;;19596:62;;-1:-1:-1;;;19596:62:0;;;;;;;:::i;19361:307::-;-1:-1:-1;;;;;;;;;19486:25:0;;;19478:90;;;;-1:-1:-1;;;19478:90:0;;;;;;;:::i;:::-;19438:140;19154:526;;;;;;:::o;19686:558::-;-1:-1:-1;;;;;19889:14:0;;;:18;19885:354;;19922:79;;-1:-1:-1;;;19922:79:0;;-1:-1:-1;;;;;19922:43:0;;;;;:79;;19966:8;;19976:4;;19982:3;;19987:7;;19996:4;;19922:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19922:79:0;;;;;;;;-1:-1:-1;;19922:79:0;;;;;;;;;;;;:::i;:::-;;;19918:314;;20160:62;;-1:-1:-1;;;20160:62:0;;;;;;;:::i;19918:314::-;-1:-1:-1;;;;;;;;;20050:25:0;;;20042:90;;;;-1:-1:-1;;;20042:90:0;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:1:o;633:131::-;-1:-1:-1;;;;;;707:32:1;;697:43;;687:71;;754:1;751;744:12;769:245;827:6;880:2;868:9;859:7;855:23;851:32;848:52;;;896:1;893;886:12;848:52;935:9;922:23;954:30;978:5;954:30;:::i;:::-;1003:5;769:245;-1:-1:-1;;;769:245:1:o;1211:180::-;1270:6;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;-1:-1:-1;1362:23:1;;1211:180;-1:-1:-1;1211:180:1:o;1396:258::-;1468:1;1478:113;1492:6;1489:1;1486:13;1478:113;;;1568:11;;;1562:18;1549:11;;;1542:39;1514:2;1507:10;1478:113;;;1609:6;1606:1;1603:13;1600:48;;;-1:-1:-1;;1644:1:1;1626:16;;1619:27;1396:258::o;1659:::-;1701:3;1739:5;1733:12;1766:6;1761:3;1754:19;1782:63;1838:6;1831:4;1826:3;1822:14;1815:4;1808:5;1804:16;1782:63;:::i;:::-;1899:2;1878:15;-1:-1:-1;;1874:29:1;1865:39;;;;1906:4;1861:50;;1659:258;-1:-1:-1;;1659:258:1:o;1922:220::-;2071:2;2060:9;2053:21;2034:4;2091:45;2132:2;2121:9;2117:18;2109:6;2091:45;:::i;2147:127::-;2208:10;2203:3;2199:20;2196:1;2189:31;2239:4;2236:1;2229:15;2263:4;2260:1;2253:15;2279:275;2350:2;2344:9;2415:2;2396:13;;-1:-1:-1;;2392:27:1;2380:40;;2450:18;2435:34;;2471:22;;;2432:62;2429:88;;;2497:18;;:::i;:::-;2533:2;2526:22;2279:275;;-1:-1:-1;2279:275:1:o;2559:183::-;2619:4;2652:18;2644:6;2641:30;2638:56;;;2674:18;;:::i;:::-;-1:-1:-1;2719:1:1;2715:14;2731:4;2711:25;;2559:183::o;2747:662::-;2801:5;2854:3;2847:4;2839:6;2835:17;2831:27;2821:55;;2872:1;2869;2862:12;2821:55;2908:6;2895:20;2934:4;2958:60;2974:43;3014:2;2974:43;:::i;:::-;2958:60;:::i;:::-;3052:15;;;3138:1;3134:10;;;;3122:23;;3118:32;;;3083:12;;;;3162:15;;;3159:35;;;3190:1;3187;3180:12;3159:35;3226:2;3218:6;3214:15;3238:142;3254:6;3249:3;3246:15;3238:142;;;3320:17;;3308:30;;3358:12;;;;3271;;3238:142;;;-1:-1:-1;3398:5:1;2747:662;-1:-1:-1;;;;;;2747:662:1:o;3414:416::-;3507:6;3515;3568:2;3556:9;3547:7;3543:23;3539:32;3536:52;;;3584:1;3581;3574:12;3536:52;3620:9;3607:23;3597:33;;3681:2;3670:9;3666:18;3653:32;3708:18;3700:6;3697:30;3694:50;;;3740:1;3737;3730:12;3694:50;3763:61;3816:7;3807:6;3796:9;3792:22;3763:61;:::i;:::-;3753:71;;;3414:416;;;;;:::o;3835:422::-;3928:6;3936;3989:2;3977:9;3968:7;3964:23;3960:32;3957:52;;;4005:1;4002;3995:12;3957:52;4028:29;4047:9;4028:29;:::i;:::-;4018:39;;4108:2;4097:9;4093:18;4080:32;4135:18;4127:6;4124:30;4121:50;;;4167:1;4164;4157:12;4262:186;4321:6;4374:2;4362:9;4353:7;4349:23;4345:32;4342:52;;;4390:1;4387;4380:12;4342:52;4413:29;4432:9;4413:29;:::i;4453:406::-;4517:5;4551:18;4543:6;4540:30;4537:56;;;4573:18;;:::i;:::-;4611:57;4656:2;4635:15;;-1:-1:-1;;4631:29:1;4662:4;4627:40;4611:57;:::i;:::-;4602:66;;4691:6;4684:5;4677:21;4731:3;4722:6;4717:3;4713:16;4710:25;4707:45;;;4748:1;4745;4738:12;4707:45;4797:6;4792:3;4785:4;4778:5;4774:16;4761:43;4851:1;4844:4;4835:6;4828:5;4824:18;4820:29;4813:40;4453:406;;;;;:::o;4864:220::-;4906:5;4959:3;4952:4;4944:6;4940:17;4936:27;4926:55;;4977:1;4974;4967:12;4926:55;4999:79;5074:3;5065:6;5052:20;5045:4;5037:6;5033:17;4999:79;:::i;5089:943::-;5243:6;5251;5259;5267;5275;5328:3;5316:9;5307:7;5303:23;5299:33;5296:53;;;5345:1;5342;5335:12;5296:53;5368:29;5387:9;5368:29;:::i;:::-;5358:39;;5416:38;5450:2;5439:9;5435:18;5416:38;:::i;:::-;5406:48;;5505:2;5494:9;5490:18;5477:32;5528:18;5569:2;5561:6;5558:14;5555:34;;;5585:1;5582;5575:12;5555:34;5608:61;5661:7;5652:6;5641:9;5637:22;5608:61;:::i;:::-;5598:71;;5722:2;5711:9;5707:18;5694:32;5678:48;;5751:2;5741:8;5738:16;5735:36;;;5767:1;5764;5757:12;5735:36;5790:63;5845:7;5834:8;5823:9;5819:24;5790:63;:::i;:::-;5780:73;;5906:3;5895:9;5891:19;5878:33;5862:49;;5936:2;5926:8;5923:16;5920:36;;;5952:1;5949;5942:12;5920:36;;5975:51;6018:7;6007:8;5996:9;5992:24;5975:51;:::i;:::-;5965:61;;;5089:943;;;;;;;;:::o;6222:322::-;6299:6;6307;6315;6368:2;6356:9;6347:7;6343:23;6339:32;6336:52;;;6384:1;6381;6374:12;6336:52;6407:29;6426:9;6407:29;:::i;:::-;6397:39;6483:2;6468:18;;6455:32;;-1:-1:-1;6534:2:1;6519:18;;;6506:32;;6222:322;-1:-1:-1;;;6222:322:1:o;6549:1146::-;6667:6;6675;6728:2;6716:9;6707:7;6703:23;6699:32;6696:52;;;6744:1;6741;6734:12;6696:52;6784:9;6771:23;6813:18;6854:2;6846:6;6843:14;6840:34;;;6870:1;6867;6860:12;6840:34;6908:6;6897:9;6893:22;6883:32;;6953:7;6946:4;6942:2;6938:13;6934:27;6924:55;;6975:1;6972;6965:12;6924:55;7011:2;6998:16;7033:4;7057:60;7073:43;7113:2;7073:43;:::i;7057:60::-;7151:15;;;7233:1;7229:10;;;;7221:19;;7217:28;;;7182:12;;;;7257:19;;;7254:39;;;7289:1;7286;7279:12;7254:39;7313:11;;;;7333:148;7349:6;7344:3;7341:15;7333:148;;;7415:23;7434:3;7415:23;:::i;:::-;7403:36;;7366:12;;;;7459;;;;7333:148;;;7500:5;-1:-1:-1;;7543:18:1;;7530:32;;-1:-1:-1;;7574:16:1;;;7571:36;;;7603:1;7600;7593:12;7571:36;;7626:63;7681:7;7670:8;7659:9;7655:24;7626:63;:::i;7700:435::-;7753:3;7791:5;7785:12;7818:6;7813:3;7806:19;7844:4;7873:2;7868:3;7864:12;7857:19;;7910:2;7903:5;7899:14;7931:1;7941:169;7955:6;7952:1;7949:13;7941:169;;;8016:13;;8004:26;;8050:12;;;;8085:15;;;;7977:1;7970:9;7941:169;;;-1:-1:-1;8126:3:1;;7700:435;-1:-1:-1;;;;;7700:435:1:o;8140:261::-;8319:2;8308:9;8301:21;8282:4;8339:56;8391:2;8380:9;8376:18;8368:6;8339:56;:::i;8406:450::-;8475:6;8528:2;8516:9;8507:7;8503:23;8499:32;8496:52;;;8544:1;8541;8534:12;8496:52;8584:9;8571:23;8617:18;8609:6;8606:30;8603:50;;;8649:1;8646;8639:12;8603:50;8672:22;;8725:4;8717:13;;8713:27;-1:-1:-1;8703:55:1;;8754:1;8751;8744:12;8703:55;8777:73;8842:7;8837:2;8824:16;8819:2;8815;8811:11;8777:73;:::i;9069:160::-;9134:20;;9190:13;;9183:21;9173:32;;9163:60;;9219:1;9216;9209:12;9234:254;9299:6;9307;9360:2;9348:9;9339:7;9335:23;9331:32;9328:52;;;9376:1;9373;9366:12;9328:52;9399:29;9418:9;9399:29;:::i;:::-;9389:39;;9447:35;9478:2;9467:9;9463:18;9447:35;:::i;:::-;9437:45;;9234:254;;;;;:::o;9493:180::-;9549:6;9602:2;9590:9;9581:7;9577:23;9573:32;9570:52;;;9618:1;9615;9608:12;9570:52;9641:26;9657:9;9641:26;:::i;9678:260::-;9746:6;9754;9807:2;9795:9;9786:7;9782:23;9778:32;9775:52;;;9823:1;9820;9813:12;9775:52;9846:29;9865:9;9846:29;:::i;:::-;9836:39;;9894:38;9928:2;9917:9;9913:18;9894:38;:::i;9943:606::-;10047:6;10055;10063;10071;10079;10132:3;10120:9;10111:7;10107:23;10103:33;10100:53;;;10149:1;10146;10139:12;10100:53;10172:29;10191:9;10172:29;:::i;:::-;10162:39;;10220:38;10254:2;10243:9;10239:18;10220:38;:::i;:::-;10210:48;;10305:2;10294:9;10290:18;10277:32;10267:42;;10356:2;10345:9;10341:18;10328:32;10318:42;;10411:3;10400:9;10396:19;10383:33;10439:18;10431:6;10428:30;10425:50;;;10471:1;10468;10461:12;10425:50;10494:49;10535:7;10526:6;10515:9;10511:22;10494:49;:::i;10554:351::-;10756:2;10738:21;;;10795:2;10775:18;;;10768:30;10834:29;10829:2;10814:18;;10807:57;10896:2;10881:18;;10554:351::o;10910:380::-;10989:1;10985:12;;;;11032;;;11053:61;;11107:4;11099:6;11095:17;11085:27;;11053:61;11160:2;11152:6;11149:14;11129:18;11126:38;11123:161;;;11206:10;11201:3;11197:20;11194:1;11187:31;11241:4;11238:1;11231:15;11269:4;11266:1;11259:15;11123:161;;10910:380;;;:::o;11421:973::-;11506:12;;11471:3;;11561:1;11581:18;;;;11634;;;;11661:61;;11715:4;11707:6;11703:17;11693:27;;11661:61;11741:2;11789;11781:6;11778:14;11758:18;11755:38;11752:161;;;11835:10;11830:3;11826:20;11823:1;11816:31;11870:4;11867:1;11860:15;11898:4;11895:1;11888:15;11752:161;11929:18;11956:104;;;;12074:1;12069:319;;;;11922:466;;11956:104;-1:-1:-1;;11989:24:1;;11977:37;;12034:16;;;;-1:-1:-1;11956:104:1;;12069:319;11368:1;11361:14;;;11405:4;11392:18;;12163:1;12177:165;12191:6;12188:1;12185:13;12177:165;;;12269:14;;12256:11;;;12249:35;12312:16;;;;12206:10;;12177:165;;;12181:3;;12371:6;12366:3;12362:16;12355:23;;11922:466;;;;;;;11421:973;;;;:::o;12399:456::-;12620:3;12648:38;12682:3;12674:6;12648:38;:::i;:::-;12715:6;12709:13;12731:52;12776:6;12772:2;12765:4;12757:6;12753:17;12731:52;:::i;:::-;12799:50;12841:6;12837:2;12833:15;12825:6;12799:50;:::i;:::-;12792:57;12399:456;-1:-1:-1;;;;;;;12399:456:1:o;13918:127::-;13979:10;13974:3;13970:20;13967:1;13960:31;14010:4;14007:1;14000:15;14034:4;14031:1;14024:15;14050:128;14090:3;14121:1;14117:6;14114:1;14111:13;14108:39;;;14127:18;;:::i;:::-;-1:-1:-1;14163:9:1;;14050:128::o;14525:135::-;14564:3;-1:-1:-1;;14585:17:1;;14582:43;;;14605:18;;:::i;:::-;-1:-1:-1;14652:1:1;14641:13;;14525:135::o;14899:127::-;14960:10;14955:3;14951:20;14948:1;14941:31;14991:4;14988:1;14981:15;15015:4;15012:1;15005:15;17975:127;18036:10;18031:3;18027:20;18024:1;18017:31;18067:4;18064:1;18057:15;18091:4;18088:1;18081:15;18107:120;18147:1;18173;18163:35;;18178:18;;:::i;:::-;-1:-1:-1;18212:9:1;;18107:120::o;18232:125::-;18272:4;18300:1;18297;18294:8;18291:34;;;18305:18;;:::i;:::-;-1:-1:-1;18342:9:1;;18232:125::o;18362:112::-;18394:1;18420;18410:35;;18425:18;;:::i;:::-;-1:-1:-1;18459:9:1;;18362:112::o;19543:401::-;19745:2;19727:21;;;19784:2;19764:18;;;19757:30;19823:34;19818:2;19803:18;;19796:62;-1:-1:-1;;;19889:2:1;19874:18;;19867:35;19934:3;19919:19;;19543:401::o;19949:406::-;20151:2;20133:21;;;20190:2;20170:18;;;20163:30;20229:34;20224:2;20209:18;;20202:62;-1:-1:-1;;;20295:2:1;20280:18;;20273:40;20345:3;20330:19;;19949:406::o;20360:465::-;20617:2;20606:9;20599:21;20580:4;20643:56;20695:2;20684:9;20680:18;20672:6;20643:56;:::i;:::-;20747:9;20739:6;20735:22;20730:2;20719:9;20715:18;20708:50;20775:44;20812:6;20804;20775:44;:::i;:::-;20767:52;20360:465;-1:-1:-1;;;;;20360:465:1:o;21601:561::-;-1:-1:-1;;;;;21898:15:1;;;21880:34;;21950:15;;21945:2;21930:18;;21923:43;21997:2;21982:18;;21975:34;;;22040:2;22025:18;;22018:34;;;21860:3;22083;22068:19;;22061:32;;;21823:4;;22110:46;;22136:19;;22128:6;22110:46;:::i;22167:249::-;22236:6;22289:2;22277:9;22268:7;22264:23;22260:32;22257:52;;;22305:1;22302;22295:12;22257:52;22337:9;22331:16;22356:30;22380:5;22356:30;:::i;22421:416::-;22623:2;22605:21;;;22662:2;22642:18;;;22635:30;22701:34;22696:2;22681:18;;22674:62;-1:-1:-1;;;22767:2:1;22752:18;;22745:50;22827:3;22812:19;;22421:416::o;22842:827::-;-1:-1:-1;;;;;23239:15:1;;;23221:34;;23291:15;;23286:2;23271:18;;23264:43;23201:3;23338:2;23323:18;;23316:31;;;23164:4;;23370:57;;23407:19;;23399:6;23370:57;:::i;:::-;23475:9;23467:6;23463:22;23458:2;23447:9;23443:18;23436:50;23509:44;23546:6;23538;23509:44;:::i;:::-;23495:58;;23602:9;23594:6;23590:22;23584:3;23573:9;23569:19;23562:51;23630:33;23656:6;23648;23630:33;:::i;:::-;23622:41;22842:827;-1:-1:-1;;;;;;;;22842:827:1:o

Swarm Source

ipfs://ac83d21d3736b79b093de38c940544c2d661466441614866d5f707cc41d46b0a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.