ETH Price: $2,672.85 (+2.01%)

Foodz Party (FP)
 

Overview

TokenID

2279

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

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

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : FoodzPartyV2.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.4;

import {ERC721} from "@solmate/tokens/ERC721.sol";
import {Ownable} from "@openzeppelin/access/Ownable.sol";
import {MerkleProof} from "@openzeppelin/utils/cryptography/MerkleProof.sol";
import {Strings} from "@openzeppelin/utils/Strings.sol";

interface IGoldenPass {
    function burn(address from, uint256 amount) external;
}

interface IFoodzPartyLegacy {
    function transferFrom(
        address from,
        address to,
        uint256 id
    ) external;
}

interface IOddworxStaking {
    function buyItem(
        uint256 itemSKU,
        uint256 amount,
        address nftContract,
        uint256[] calldata nftIds,
        address user
    ) external;
}

contract FoodzPartyV2 is ERC721, Ownable {
    using Strings for uint256;

    /// @dev 0xb36c1284
    error MaxSupply();
    /// @dev 0xa99edc71
    error MigrationOff();
    /// @dev 0xb9968551
    error PassSaleOff();
    /// @dev 0x3afc8ce9
    error SaleOff();
    /// @dev 0xb52aa4c0
    error QueryForNonExistentToken();
    /// @dev 0xe6c4247b
    error InvalidAddress();
    /// @dev 0x2c5211c6
    error InvalidAmount();
    /// @dev 0xab143c06
    error Reentrancy();

    // Immutable

    uint256 internal constant MIGRATION_START_INDEX = 0;
    uint256 internal constant MIGRATION_END_INDEX = 1160;
    uint256 internal constant MIGRATION_EXTRAS_START_INDEX = 1161;
    uint256 internal constant MIGRATION_EXTRAS_END_INDEX = 2321;
    uint256 internal constant REGULAR_START_INDEX = 2322;
    uint256 internal constant REGULAR_END_INDEX = 2975;
    uint256 internal constant GOLDEN_PASS_START_INDEX = 2976;
    uint256 internal constant GOLDEN_PASS_END_INDEX = 3475;
    uint256 internal constant HANDMADE_START_INDEX = 3476;
    uint256 internal constant HANDMADE_END_INDEX = 3499;

    /// @notice address of the oddx staking contract
    IOddworxStaking internal immutable staking;
    /// @notice address of the golden pass contract
    IGoldenPass internal immutable goldenPass;
    /// @notice address of the legacy foodz party contract
    IFoodzPartyLegacy internal immutable foodzLegacy;
    /// @notice address of the genzee contract
    address internal immutable genzee;

    // Mutable

    /// @notice amount of regular mints
    /// @dev starts at 1 cuz constructor mints #0
    uint256 public migrationSupply = 1;
    uint256 public migrationExtrasSupply;
    uint256 public regularSupply;
    uint256 public goldenPassSupply;
    uint256 public handmadeSupply;
    string public baseURI;
    uint256 public mintPriceOddx = 200 ether;
    /// @notice if users can migrate their tokens from the legacy contract
    /// @dev 1 = not active; 2 = active;
    uint256 private _isMigrationActive = 1;
    /// @notice if users can redeem their golden passes
    /// @dev 1 = not active; 2 = active;
    uint256 private _isPassSaleActive = 1;
    /// @notice if users can redeem their golden passes
    /// @dev 1 = not active; 2 = active;
    uint256 private _isSaleActive = 1;

    /// @dev reentrancy lock
    uint256 private _locked = 1;

    // Constructor

    constructor(
        IOddworxStaking staking_,
        IGoldenPass goldenPass_,
        IFoodzPartyLegacy foodzLegacy_,
        address genzee_,
        string memory baseURI_
    ) ERC721("Foodz Party", "FP") {
        staking = staking_;
        goldenPass = goldenPass_;
        foodzLegacy = foodzLegacy_;
        genzee = genzee_;
        baseURI = baseURI_;
        _safeMint(0x067423C244442ca0Eb6d6fd6B747c2BD21414107, 0);
    }

    // Owner Only

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

    function setIsPassSaleActive(bool newIsPassSaleActive) external onlyOwner {
        _isPassSaleActive = newIsPassSaleActive ? 2 : 1;
    }

    function setIsSaleActive(bool newIsSaleActive) external onlyOwner {
        _isSaleActive = newIsSaleActive ? 2 : 1;
    }

    function setIsMigrationActive(bool newIsMigrationActive)
        external
        onlyOwner
    {
        _isMigrationActive = newIsMigrationActive ? 2 : 1;
    }

    function setMintPriceOddx(uint256 newMintPriceOddx) external onlyOwner {
        mintPriceOddx = newMintPriceOddx;
    }

    function handmadeMint(address to) external onlyOwner {
        unchecked {
            uint256 tokenId = HANDMADE_START_INDEX + handmadeSupply;
            if (tokenId > HANDMADE_END_INDEX) revert MaxSupply();
            // slither-disable-next-line events-maths
            ++handmadeSupply;
            _safeMint(to, tokenId);
        }
    }

    // User

    /// @notice Migrate a token from legacy Foodz contract to this contract.
    ///         It "burns" the token on the other contract so it requires the tokens to be approved first.
    function migrate(uint256[] calldata ids) external {
        if (_isMigrationActive != 2) revert MigrationOff();
        if (msg.sender == address(0)) revert InvalidAddress();
        if (_locked == 2) revert Reentrancy();
        _locked = 2;

        uint256 length = ids.length;
        uint256 i = 0;

        unchecked {
            migrationSupply += length;
        }

        for (i = 0; i < length; ) {
            foodzLegacy.transferFrom(
                msg.sender,
                address(0x000000000000000000000000000000000000dEaD),
                ids[i]
            );
            unchecked {
                ++i;
            }
        }

        unchecked {
            uint256 extraMingStartIndex = MIGRATION_EXTRAS_START_INDEX +
                migrationExtrasSupply;
            migrationExtrasSupply += length;
            for (i = 0; i < length; i++) {
                _safeMint(msg.sender, ids[i]);
                _safeMint(msg.sender, extraMingStartIndex + i);
            }
        }

        _locked = 1;
    }

    function mint(uint256 amount, uint256[] calldata nftIds) external {
        if (amount == 0) revert InvalidAmount();
        if (_isSaleActive != 2) revert SaleOff();
        uint256 startIndex;
        unchecked {
            startIndex = REGULAR_START_INDEX + regularSupply;
            if (startIndex + amount - 1 > REGULAR_END_INDEX) revert MaxSupply();
        }

        staking.buyItem(
            0x0105,
            amount * mintPriceOddx,
            genzee,
            nftIds,
            msg.sender
        );

        unchecked {
            // slither-disable-next-line events-maths
            regularSupply += amount;
            for (uint256 i = 0; i < amount; i++) {
                _safeMint(msg.sender, startIndex + i);
            }
        }
    }

    function passmint(uint256 amount) external {
        if (_isPassSaleActive != 2) revert PassSaleOff();
        uint256 startIndex;
        unchecked {
            startIndex = GOLDEN_PASS_START_INDEX + goldenPassSupply;
            if (startIndex + amount - 1 > GOLDEN_PASS_END_INDEX)
                revert MaxSupply();
        }

        goldenPass.burn(msg.sender, amount);

        unchecked {
            // slither-disable-next-line events-maths
            goldenPassSupply += amount;
            for (uint256 i = 0; i < amount; i++) {
                _safeMint(msg.sender, startIndex + i);
            }
        }
    }

    // View

    function currentSupply() external view returns (uint256) {
        unchecked {
            return
                migrationSupply +
                migrationExtrasSupply +
                regularSupply +
                goldenPassSupply +
                handmadeSupply;
        }
    }

    function isMigrationActive() external view returns (bool) {
        return _isMigrationActive == 2 ? true : false;
    }

    function isPassSaleActive() external view returns (bool) {
        return _isPassSaleActive == 2 ? true : false;
    }

    function isSaleActive() external view returns (bool) {
        return _isSaleActive == 2 ? true : false;
    }

    // Overrides

    function tokenURI(uint256 id) public view override returns (string memory) {
        if (_ownerOf[id] == address(0)) revert QueryForNonExistentToken();
        return string(abi.encodePacked(baseURI, id.toString()));
    }
}

File 2 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 3 of 6 : Context.sol
// SPDX-License-Identifier: MIT
// 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 4 of 6 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

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

File 5 of 6 : MerkleProof.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

File 6 of 6 : ERC721.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

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

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

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

    string public name;

    string public symbol;

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

    /*//////////////////////////////////////////////////////////////
                      ERC721 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), "NOT_MINTED");
    }

    function balanceOf(address owner) public view virtual returns (uint256) {
        require(owner != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner];
    }

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

    mapping(uint256 => address) public getApproved;

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

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

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

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

    function approve(address spender, uint256 id) public virtual {
        address owner = _ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _balanceOf[from]--;

            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

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

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

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

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(_ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = _ownerOf[id];

        require(owner != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner]--;
        }

        delete _ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

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

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

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

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}

Settings
{
  "remappings": [
    "$/=src/",
    "@ds-test/=lib/ds-test/src/",
    "@forge-std/=lib/forge-std/src/",
    "@oddworx/=lib/contracts-flatten/contracts/",
    "@openzeppelin/=lib/openzeppelin-contracts/contracts/",
    "@solmate/=lib/solmate/src/",
    "contracts-flatten/=lib/contracts-flatten/contracts/",
    "ds-test/=lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solmate/=lib/solmate/src/",
    "src/=src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london"
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IOddworxStaking","name":"staking_","type":"address"},{"internalType":"contract IGoldenPass","name":"goldenPass_","type":"address"},{"internalType":"contract IFoodzPartyLegacy","name":"foodzLegacy_","type":"address"},{"internalType":"address","name":"genzee_","type":"address"},{"internalType":"string","name":"baseURI_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"MaxSupply","type":"error"},{"inputs":[],"name":"MigrationOff","type":"error"},{"inputs":[],"name":"PassSaleOff","type":"error"},{"inputs":[],"name":"QueryForNonExistentToken","type":"error"},{"inputs":[],"name":"Reentrancy","type":"error"},{"inputs":[],"name":"SaleOff","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldenPassSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"handmadeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"handmadeSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"isMigrationActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPassSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrationExtrasSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrationSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintPriceOddx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"passmint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"regularSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsMigrationActive","type":"bool"}],"name":"setIsMigrationActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsPassSaleActive","type":"bool"}],"name":"setIsPassSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsSaleActive","type":"bool"}],"name":"setIsSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMintPriceOddx","type":"uint256"}],"name":"setMintPriceOddx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101006040526001600755680ad78ebc5ac6200000600d556001600e556001600f55600160105560016011553480156200003857600080fd5b5060405162002334380380620023348339810160408190526200005b9162000475565b604080518082018252600b81526a466f6f647a20506172747960a81b602080830191825283518085019094526002845261046560f41b908401528151919291620000a891600091620003a0565b508051620000be906001906020840190620003a0565b505050620000db620000d56200013c60201b60201c565b62000140565b6001600160a01b0380861660805284811660a05283811660c052821660e05280516200010f90600c906020840190620003a0565b506200013173067423c244442ca0eb6d6fd6b747c2bd21414107600062000192565b50505050506200061b565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200019e828262000291565b6001600160a01b0382163b1580620002485750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af115801562000216573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023c9190620005ab565b6001600160e01b031916145b6200028d5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064015b60405180910390fd5b5050565b6001600160a01b038216620002dd5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640162000284565b6000818152600260205260409020546001600160a01b031615620003355760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640162000284565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620003ae90620005de565b90600052602060002090601f016020900481019282620003d257600085556200041d565b82601f10620003ed57805160ff19168380011785556200041d565b828001600101855582156200041d579182015b828111156200041d57825182559160200191906001019062000400565b506200042b9291506200042f565b5090565b5b808211156200042b576000815560010162000430565b6001600160a01b03811681146200045c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200048e57600080fd5b85516200049b8162000446565b80955050602080870151620004b08162000446565b6040880151909550620004c38162000446565b6060880151909450620004d68162000446565b60808801519093506001600160401b0380821115620004f457600080fd5b818901915089601f8301126200050957600080fd5b8151818111156200051e576200051e6200045f565b604051601f8201601f19908116603f011681019083821181831017156200054957620005496200045f565b816040528281528c868487010111156200056257600080fd5b600093505b8284101562000586578484018601518185018701529285019262000567565b82841115620005985760008684830101525b8096505050505050509295509295909350565b600060208284031215620005be57600080fd5b81516001600160e01b031981168114620005d757600080fd5b9392505050565b600181811c90821680620005f357607f821691505b602082108114156200061557634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051611cdf6200065560003960006109930152600061100601526000610d05015260006109530152611cdf6000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806360c06a6611610125578063a22cb465116100ad578063d2dedb5d1161007c578063d2dedb5d14610453578063d93bf4fe1461045b578063e985e9c51461046e578063f2fde38b1461049c578063f8647e22146104af57600080fd5b8063a22cb46514610407578063b88d4fde1461041a578063c87b56dd1461042d578063d2d65ff51461044057600080fd5b8063715018a6116100f4578063715018a6146103bb578063732fc1f3146103c3578063771282f6146103d65780638da5cb5b146103ee57806395d89b41146103ff57600080fd5b806360c06a66146103845780636352211e1461038d5780636c0360eb146103a057806370a08231146103a857600080fd5b80632b975545116101a85780634e4a66d2116101775780634e4a66d21461034e57806355f804b314610357578063564566a81461036a5780635a318343146103725780635bff73e91461037b57600080fd5b80632b9755451461030c5780632d69044f14610315578063314130ed1461032857806342842e0e1461033b57600080fd5b8063081812fc116101ef578063081812fc14610286578063095ea7b3146102c75780630b6b5fcb146102da5780630e913a6c146102f157806323b872dd146102f957600080fd5b806301ffc9a714610221578063020fb4e31461024957806302ff77221461025e57806306fdde0314610271575b600080fd5b61023461022f366004611607565b6104c2565b60405190151581526020015b60405180910390f35b61025c61025736600461162b565b610514565b005b61025c61026c366004611654565b61054c565b61027961058e565b604051610240919061169f565b6102af61029436600461162b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610240565b61025c6102d53660046116e9565b61061c565b6102e360075481565b604051908152602001610240565b6102346106fe565b61025c610307366004611713565b610716565b6102e3600a5481565b61025c61032336600461179b565b6108dd565b61025c610336366004611654565b610a37565b61025c610349366004611713565b610a79565b6102e360085481565b61025c610365366004611829565b610b4e565b610234610b84565b6102e3600d5481565b6102e360095481565b6102e3600b5481565b6102af61039b36600461162b565b610b96565b610279610bed565b6102e36103b636600461186b565b610bfa565b61025c610c5d565b61025c6103d136600461162b565b610c93565b600b54600a54600954600854600754010101016102e3565b6006546001600160a01b03166102af565b610279610d91565b61025c610415366004611886565b610d9e565b61025c6104283660046118b9565b610e0a565b61027961043b36600461162b565b610ec8565b61025c61044e366004611654565b610f32565b610234610f74565b61025c610469366004611928565b610f86565b61023461047c36600461195e565b600560209081526000928352604080842090915290825290205460ff1681565b61025c6104aa36600461186b565b611123565b61025c6104bd36600461186b565b6111be565b60006301ffc9a760e01b6001600160e01b0319831614806104f357506380ac58cd60e01b6001600160e01b03198316145b8061050e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6006546001600160a01b031633146105475760405162461bcd60e51b815260040161053e90611988565b60405180910390fd5b600d55565b6006546001600160a01b031633146105765760405162461bcd60e51b815260040161053e90611988565b80610582576001610585565b60025b60ff16600f5550565b6000805461059b906119bd565b80601f01602080910402602001604051908101604052809291908181526020018280546105c7906119bd565b80156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b03163381148061066557506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6106a25760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161053e565b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000600e546002146107105750600090565b50600190565b6000818152600260205260409020546001600160a01b0384811691161461076c5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161053e565b6001600160a01b0382166107b65760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161053e565b336001600160a01b03841614806107f057506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061081157506000818152600460205260409020546001600160a01b031633145b61084e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161053e565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b826108fb5760405163162908e360e11b815260040160405180910390fd5b60105460021461091e57604051633afc8ce960e01b815260040160405180910390fd5b6000600954610912019050610b9f600185830103111561095157604051632cdb04a160e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166349db4ced610105600d54876109919190611a0e565b7f00000000000000000000000000000000000000000000000000000000000000008787336040518763ffffffff1660e01b81526004016109d696959493929190611a2d565b600060405180830381600087803b1580156109f057600080fd5b505af1158015610a04573d6000803e3d6000fd5b5050600980548701905550600090505b84811015610a3057610a2833828401611229565b600101610a14565b5050505050565b6006546001600160a01b03163314610a615760405162461bcd60e51b815260040161053e90611988565b80610a6d576001610a70565b60025b60ff16600e5550565b610a84838383610716565b6001600160a01b0382163b1580610b2d5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190611a97565b6001600160e01b031916145b610b495760405162461bcd60e51b815260040161053e90611ab4565b505050565b6006546001600160a01b03163314610b785760405162461bcd60e51b815260040161053e90611988565b610b49600c8383611558565b60006010546002146107105750600090565b6000818152600260205260409020546001600160a01b031680610be85760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b604482015260640161053e565b919050565b600c805461059b906119bd565b60006001600160a01b038216610c415760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161053e565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610c875760405162461bcd60e51b815260040161053e90611988565b610c9160006112f5565b565b600f54600214610cb65760405163b996855160e01b815260040160405180910390fd5b6000600a54610ba0019050610d936001838301031115610ce957604051632cdb04a160e21b815260040160405180910390fd5b604051632770a7eb60e21b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639dc29fac90604401600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b5050600a80548501905550600090505b82811015610b4957610d8933828401611229565b600101610d75565b6001805461059b906119bd565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610e15858585610716565b6001600160a01b0384163b1580610eac5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610e5d9033908a90899089908990600401611ade565b6020604051808303816000875af1158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190611a97565b6001600160e01b031916145b610a305760405162461bcd60e51b815260040161053e90611ab4565b6000818152600260205260409020546060906001600160a01b0316610f00576040516302d4aa9360e61b815260040160405180910390fd5b600c610f0b83611347565b604051602001610f1c929190611b4e565b6040516020818303038152906040529050919050565b6006546001600160a01b03163314610f5c5760405162461bcd60e51b815260040161053e90611988565b80610f68576001610f6b565b60025b60ff1660105550565b6000600f546002146107105750600090565b600e54600214610fa95760405163a99edc7160e01b815260040160405180910390fd5b33610fc75760405163e6c4247b60e01b815260040160405180910390fd5b60115460021415610feb5760405163558a1e0360e11b815260040160405180910390fd5b600260115560078054820190558060005b818110156110c3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd3361dead87878681811061104957611049611bf5565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b50505050806001019050610ffc565b5060088054828101909155600090610489015b8282101561111757611100338686858181106110f4576110f4611bf5565b90506020020135611229565b61110c33838301611229565b6001909101906110d6565b50506001601155505050565b6006546001600160a01b0316331461114d5760405162461bcd60e51b815260040161053e90611988565b6001600160a01b0381166111b25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161053e565b6111bb816112f5565b50565b6006546001600160a01b031633146111e85760405162461bcd60e51b815260040161053e90611988565b600b54610d9401610dab81111561121257604051632cdb04a160e21b815260040160405180910390fd5b600b805460010190556112258282611229565b5050565b611233828261144d565b6001600160a01b0382163b15806112d95750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190611a97565b6001600160e01b031916145b6112255760405162461bcd60e51b815260040161053e90611ab4565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608161136b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611395578061137f81611c0b565b915061138e9050600a83611c3c565b915061136f565b60008167ffffffffffffffff8111156113b0576113b0611c50565b6040519080825280601f01601f1916602001820160405280156113da576020820181803683370190505b5090505b8415611445576113ef600183611c66565b91506113fc600a86611c7d565b611407906030611c91565b60f81b81838151811061141c5761141c611bf5565b60200101906001600160f81b031916908160001a90535061143e600a86611c3c565b94506113de565b949350505050565b6001600160a01b0382166114975760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161053e565b6000818152600260205260409020546001600160a01b0316156114ed5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161053e565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611564906119bd565b90600052602060002090601f01602090048101928261158657600085556115cc565b82601f1061159f5782800160ff198235161785556115cc565b828001600101855582156115cc579182015b828111156115cc5782358255916020019190600101906115b1565b506115d89291506115dc565b5090565b5b808211156115d857600081556001016115dd565b6001600160e01b0319811681146111bb57600080fd5b60006020828403121561161957600080fd5b8135611624816115f1565b9392505050565b60006020828403121561163d57600080fd5b5035919050565b80358015158114610be857600080fd5b60006020828403121561166657600080fd5b61162482611644565b60005b8381101561168a578181015183820152602001611672565b83811115611699576000848401525b50505050565b60208152600082518060208401526116be81604085016020870161166f565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610be857600080fd5b600080604083850312156116fc57600080fd5b611705836116d2565b946020939093013593505050565b60008060006060848603121561172857600080fd5b611731846116d2565b925061173f602085016116d2565b9150604084013590509250925092565b60008083601f84011261176157600080fd5b50813567ffffffffffffffff81111561177957600080fd5b6020830191508360208260051b850101111561179457600080fd5b9250929050565b6000806000604084860312156117b057600080fd5b83359250602084013567ffffffffffffffff8111156117ce57600080fd5b6117da8682870161174f565b9497909650939450505050565b60008083601f8401126117f957600080fd5b50813567ffffffffffffffff81111561181157600080fd5b60208301915083602082850101111561179457600080fd5b6000806020838503121561183c57600080fd5b823567ffffffffffffffff81111561185357600080fd5b61185f858286016117e7565b90969095509350505050565b60006020828403121561187d57600080fd5b611624826116d2565b6000806040838503121561189957600080fd5b6118a2836116d2565b91506118b060208401611644565b90509250929050565b6000806000806000608086880312156118d157600080fd5b6118da866116d2565b94506118e8602087016116d2565b935060408601359250606086013567ffffffffffffffff81111561190b57600080fd5b611917888289016117e7565b969995985093965092949392505050565b6000806020838503121561193b57600080fd5b823567ffffffffffffffff81111561195257600080fd5b61185f8582860161174f565b6000806040838503121561197157600080fd5b61197a836116d2565b91506118b0602084016116d2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806119d157607f821691505b602082108114156119f257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611a2857611a286119f8565b500290565b868152602081018690526001600160a01b03858116604083015260a06060830181905282018490526000906001600160fb1b03851115611a6c57600080fd5b8460051b808760c0860137600090840160c00190815293166080909201919091525095945050505050565b600060208284031215611aa957600080fd5b8151611624816115f1565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60008151611b4481856020860161166f565b9290920192915050565b600080845481600182811c915080831680611b6a57607f831692505b6020808410821415611b8a57634e487b7160e01b86526022600452602486fd5b818015611b9e5760018114611baf57611bdc565b60ff19861689528489019650611bdc565b60008b81526020902060005b86811015611bd45781548b820152908501908301611bbb565b505084890196505b505050505050611bec8185611b32565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c1f57611c1f6119f8565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611c4b57611c4b611c26565b500490565b634e487b7160e01b600052604160045260246000fd5b600082821015611c7857611c786119f8565b500390565b600082611c8c57611c8c611c26565b500690565b60008219821115611ca457611ca46119f8565b50019056fea2646970667358221220d6f46419479a8b058263d3c0ad128ca4147e4aabb9b66d89f86f5066484af89864736f6c634300080a0033000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11000000000000000000000000fb26c3ac142ea208272c582a84d266dd6771f7b700000000000000000000000001b956a0149808806a81148ad93cf71d1a05e302000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f743779637271317a79332e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061021c5760003560e01c806360c06a6611610125578063a22cb465116100ad578063d2dedb5d1161007c578063d2dedb5d14610453578063d93bf4fe1461045b578063e985e9c51461046e578063f2fde38b1461049c578063f8647e22146104af57600080fd5b8063a22cb46514610407578063b88d4fde1461041a578063c87b56dd1461042d578063d2d65ff51461044057600080fd5b8063715018a6116100f4578063715018a6146103bb578063732fc1f3146103c3578063771282f6146103d65780638da5cb5b146103ee57806395d89b41146103ff57600080fd5b806360c06a66146103845780636352211e1461038d5780636c0360eb146103a057806370a08231146103a857600080fd5b80632b975545116101a85780634e4a66d2116101775780634e4a66d21461034e57806355f804b314610357578063564566a81461036a5780635a318343146103725780635bff73e91461037b57600080fd5b80632b9755451461030c5780632d69044f14610315578063314130ed1461032857806342842e0e1461033b57600080fd5b8063081812fc116101ef578063081812fc14610286578063095ea7b3146102c75780630b6b5fcb146102da5780630e913a6c146102f157806323b872dd146102f957600080fd5b806301ffc9a714610221578063020fb4e31461024957806302ff77221461025e57806306fdde0314610271575b600080fd5b61023461022f366004611607565b6104c2565b60405190151581526020015b60405180910390f35b61025c61025736600461162b565b610514565b005b61025c61026c366004611654565b61054c565b61027961058e565b604051610240919061169f565b6102af61029436600461162b565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610240565b61025c6102d53660046116e9565b61061c565b6102e360075481565b604051908152602001610240565b6102346106fe565b61025c610307366004611713565b610716565b6102e3600a5481565b61025c61032336600461179b565b6108dd565b61025c610336366004611654565b610a37565b61025c610349366004611713565b610a79565b6102e360085481565b61025c610365366004611829565b610b4e565b610234610b84565b6102e3600d5481565b6102e360095481565b6102e3600b5481565b6102af61039b36600461162b565b610b96565b610279610bed565b6102e36103b636600461186b565b610bfa565b61025c610c5d565b61025c6103d136600461162b565b610c93565b600b54600a54600954600854600754010101016102e3565b6006546001600160a01b03166102af565b610279610d91565b61025c610415366004611886565b610d9e565b61025c6104283660046118b9565b610e0a565b61027961043b36600461162b565b610ec8565b61025c61044e366004611654565b610f32565b610234610f74565b61025c610469366004611928565b610f86565b61023461047c36600461195e565b600560209081526000928352604080842090915290825290205460ff1681565b61025c6104aa36600461186b565b611123565b61025c6104bd36600461186b565b6111be565b60006301ffc9a760e01b6001600160e01b0319831614806104f357506380ac58cd60e01b6001600160e01b03198316145b8061050e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6006546001600160a01b031633146105475760405162461bcd60e51b815260040161053e90611988565b60405180910390fd5b600d55565b6006546001600160a01b031633146105765760405162461bcd60e51b815260040161053e90611988565b80610582576001610585565b60025b60ff16600f5550565b6000805461059b906119bd565b80601f01602080910402602001604051908101604052809291908181526020018280546105c7906119bd565b80156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b03163381148061066557506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6106a25760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161053e565b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000600e546002146107105750600090565b50600190565b6000818152600260205260409020546001600160a01b0384811691161461076c5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161053e565b6001600160a01b0382166107b65760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161053e565b336001600160a01b03841614806107f057506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061081157506000818152600460205260409020546001600160a01b031633145b61084e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161053e565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b826108fb5760405163162908e360e11b815260040160405180910390fd5b60105460021461091e57604051633afc8ce960e01b815260040160405180910390fd5b6000600954610912019050610b9f600185830103111561095157604051632cdb04a160e21b815260040160405180910390fd5b7f000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc116001600160a01b03166349db4ced610105600d54876109919190611a0e565b7f000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a8787336040518763ffffffff1660e01b81526004016109d696959493929190611a2d565b600060405180830381600087803b1580156109f057600080fd5b505af1158015610a04573d6000803e3d6000fd5b5050600980548701905550600090505b84811015610a3057610a2833828401611229565b600101610a14565b5050505050565b6006546001600160a01b03163314610a615760405162461bcd60e51b815260040161053e90611988565b80610a6d576001610a70565b60025b60ff16600e5550565b610a84838383610716565b6001600160a01b0382163b1580610b2d5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190611a97565b6001600160e01b031916145b610b495760405162461bcd60e51b815260040161053e90611ab4565b505050565b6006546001600160a01b03163314610b785760405162461bcd60e51b815260040161053e90611988565b610b49600c8383611558565b60006010546002146107105750600090565b6000818152600260205260409020546001600160a01b031680610be85760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b604482015260640161053e565b919050565b600c805461059b906119bd565b60006001600160a01b038216610c415760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161053e565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610c875760405162461bcd60e51b815260040161053e90611988565b610c9160006112f5565b565b600f54600214610cb65760405163b996855160e01b815260040160405180910390fd5b6000600a54610ba0019050610d936001838301031115610ce957604051632cdb04a160e21b815260040160405180910390fd5b604051632770a7eb60e21b8152336004820152602481018390527f000000000000000000000000fb26c3ac142ea208272c582a84d266dd6771f7b76001600160a01b031690639dc29fac90604401600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b5050600a80548501905550600090505b82811015610b4957610d8933828401611229565b600101610d75565b6001805461059b906119bd565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610e15858585610716565b6001600160a01b0384163b1580610eac5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610e5d9033908a90899089908990600401611ade565b6020604051808303816000875af1158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190611a97565b6001600160e01b031916145b610a305760405162461bcd60e51b815260040161053e90611ab4565b6000818152600260205260409020546060906001600160a01b0316610f00576040516302d4aa9360e61b815260040160405180910390fd5b600c610f0b83611347565b604051602001610f1c929190611b4e565b6040516020818303038152906040529050919050565b6006546001600160a01b03163314610f5c5760405162461bcd60e51b815260040161053e90611988565b80610f68576001610f6b565b60025b60ff1660105550565b6000600f546002146107105750600090565b600e54600214610fa95760405163a99edc7160e01b815260040160405180910390fd5b33610fc75760405163e6c4247b60e01b815260040160405180910390fd5b60115460021415610feb5760405163558a1e0360e11b815260040160405180910390fd5b600260115560078054820190558060005b818110156110c3577f00000000000000000000000001b956a0149808806a81148ad93cf71d1a05e3026001600160a01b03166323b872dd3361dead87878681811061104957611049611bf5565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b50505050806001019050610ffc565b5060088054828101909155600090610489015b8282101561111757611100338686858181106110f4576110f4611bf5565b90506020020135611229565b61110c33838301611229565b6001909101906110d6565b50506001601155505050565b6006546001600160a01b0316331461114d5760405162461bcd60e51b815260040161053e90611988565b6001600160a01b0381166111b25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161053e565b6111bb816112f5565b50565b6006546001600160a01b031633146111e85760405162461bcd60e51b815260040161053e90611988565b600b54610d9401610dab81111561121257604051632cdb04a160e21b815260040160405180910390fd5b600b805460010190556112258282611229565b5050565b611233828261144d565b6001600160a01b0382163b15806112d95750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190611a97565b6001600160e01b031916145b6112255760405162461bcd60e51b815260040161053e90611ab4565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608161136b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611395578061137f81611c0b565b915061138e9050600a83611c3c565b915061136f565b60008167ffffffffffffffff8111156113b0576113b0611c50565b6040519080825280601f01601f1916602001820160405280156113da576020820181803683370190505b5090505b8415611445576113ef600183611c66565b91506113fc600a86611c7d565b611407906030611c91565b60f81b81838151811061141c5761141c611bf5565b60200101906001600160f81b031916908160001a90535061143e600a86611c3c565b94506113de565b949350505050565b6001600160a01b0382166114975760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161053e565b6000818152600260205260409020546001600160a01b0316156114ed5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161053e565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611564906119bd565b90600052602060002090601f01602090048101928261158657600085556115cc565b82601f1061159f5782800160ff198235161785556115cc565b828001600101855582156115cc579182015b828111156115cc5782358255916020019190600101906115b1565b506115d89291506115dc565b5090565b5b808211156115d857600081556001016115dd565b6001600160e01b0319811681146111bb57600080fd5b60006020828403121561161957600080fd5b8135611624816115f1565b9392505050565b60006020828403121561163d57600080fd5b5035919050565b80358015158114610be857600080fd5b60006020828403121561166657600080fd5b61162482611644565b60005b8381101561168a578181015183820152602001611672565b83811115611699576000848401525b50505050565b60208152600082518060208401526116be81604085016020870161166f565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610be857600080fd5b600080604083850312156116fc57600080fd5b611705836116d2565b946020939093013593505050565b60008060006060848603121561172857600080fd5b611731846116d2565b925061173f602085016116d2565b9150604084013590509250925092565b60008083601f84011261176157600080fd5b50813567ffffffffffffffff81111561177957600080fd5b6020830191508360208260051b850101111561179457600080fd5b9250929050565b6000806000604084860312156117b057600080fd5b83359250602084013567ffffffffffffffff8111156117ce57600080fd5b6117da8682870161174f565b9497909650939450505050565b60008083601f8401126117f957600080fd5b50813567ffffffffffffffff81111561181157600080fd5b60208301915083602082850101111561179457600080fd5b6000806020838503121561183c57600080fd5b823567ffffffffffffffff81111561185357600080fd5b61185f858286016117e7565b90969095509350505050565b60006020828403121561187d57600080fd5b611624826116d2565b6000806040838503121561189957600080fd5b6118a2836116d2565b91506118b060208401611644565b90509250929050565b6000806000806000608086880312156118d157600080fd5b6118da866116d2565b94506118e8602087016116d2565b935060408601359250606086013567ffffffffffffffff81111561190b57600080fd5b611917888289016117e7565b969995985093965092949392505050565b6000806020838503121561193b57600080fd5b823567ffffffffffffffff81111561195257600080fd5b61185f8582860161174f565b6000806040838503121561197157600080fd5b61197a836116d2565b91506118b0602084016116d2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806119d157607f821691505b602082108114156119f257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611a2857611a286119f8565b500290565b868152602081018690526001600160a01b03858116604083015260a06060830181905282018490526000906001600160fb1b03851115611a6c57600080fd5b8460051b808760c0860137600090840160c00190815293166080909201919091525095945050505050565b600060208284031215611aa957600080fd5b8151611624816115f1565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60008151611b4481856020860161166f565b9290920192915050565b600080845481600182811c915080831680611b6a57607f831692505b6020808410821415611b8a57634e487b7160e01b86526022600452602486fd5b818015611b9e5760018114611baf57611bdc565b60ff19861689528489019650611bdc565b60008b81526020902060005b86811015611bd45781548b820152908501908301611bbb565b505084890196505b505050505050611bec8185611b32565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c1f57611c1f6119f8565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611c4b57611c4b611c26565b500490565b634e487b7160e01b600052604160045260246000fd5b600082821015611c7857611c786119f8565b500390565b600082611c8c57611c8c611c26565b500690565b60008219821115611ca457611ca46119f8565b50019056fea2646970667358221220d6f46419479a8b058263d3c0ad128ca4147e4aabb9b66d89f86f5066484af89864736f6c634300080a0033

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

000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11000000000000000000000000fb26c3ac142ea208272c582a84d266dd6771f7b700000000000000000000000001b956a0149808806a81148ad93cf71d1a05e302000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f743779637271317a79332e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f000000

-----Decoded View---------------
Arg [0] : staking_ (address): 0x428b6a13277116C62D751bebbC6f47011A0Cdc11
Arg [1] : goldenPass_ (address): 0xFB26c3aC142eA208272c582a84d266Dd6771F7B7
Arg [2] : foodzLegacy_ (address): 0x01b956a0149808806A81148ad93cf71d1a05e302
Arg [3] : genzee_ (address): 0x201675fBFAAAC3A51371E4C31FF73Ac14ceE2A5A
Arg [4] : baseURI_ (string): https://t7ycrq1zy3.execute-api.us-east-1.amazonaws.com/token/

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000428b6a13277116c62d751bebbc6f47011a0cdc11
Arg [1] : 000000000000000000000000fb26c3ac142ea208272c582a84d266dd6771f7b7
Arg [2] : 00000000000000000000000001b956a0149808806a81148ad93cf71d1a05e302
Arg [3] : 000000000000000000000000201675fbfaaac3a51371e4c31ff73ac14cee2a5a
Arg [4] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [5] : 000000000000000000000000000000000000000000000000000000000000003d
Arg [6] : 68747470733a2f2f743779637271317a79332e657865637574652d6170692e75
Arg [7] : 732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f000000


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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