ETH Price: $2,203.17 (+1.16%)

Contract

0xA6C1C8ef0179071c16E066171d660dA4ad314687
 

Overview

ETH Balance

0.14 ETH

Eth Value

$308.44 (@ $2,203.17/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...219496702025-03-01 4:36:477 days ago1740803807IN
Office Hours: OfficeHrs Token
0 ETH0.000046011.9
Set Approval For...219496202025-03-01 4:26:477 days ago1740803207IN
Office Hours: OfficeHrs Token
0 ETH0.000043571.8
Set Approval For...218190812025-02-10 22:23:4725 days ago1739226227IN
Office Hours: OfficeHrs Token
0 ETH0.000022510.93292677
Transfer From216786402025-01-22 7:49:5945 days ago1737532199IN
Office Hours: OfficeHrs Token
0 ETH0.000463077.33365561
Set Approval For...215271972025-01-01 4:22:1166 days ago1735705331IN
Office Hours: OfficeHrs Token
0 ETH0.000135872.95001017
Set Approval For...215247612024-12-31 20:13:1166 days ago1735675991IN
Office Hours: OfficeHrs Token
0 ETH0.00029396.38108781
Set Approval For...215223892024-12-31 12:14:5967 days ago1735647299IN
Office Hours: OfficeHrs Token
0 ETH0.0004919710.66761252
Safe Transfer Fr...214729492024-12-24 14:33:2374 days ago1735050803IN
Office Hours: OfficeHrs Token
0 ETH0.0006505713.37753485
Set Approval For...211341422024-11-07 6:59:47121 days ago1730962787IN
Office Hours: OfficeHrs Token
0 ETH0.000425819.24733938
Set Approval For...206984542024-09-07 11:34:35182 days ago1725708875IN
Office Hours: OfficeHrs Token
0 ETH0.000053642.22287797
Set Approval For...200896112024-06-14 11:01:23267 days ago1718362883IN
Office Hours: OfficeHrs Token
0 ETH0.000269265.83699939
Set Approval For...197706992024-04-30 21:06:47311 days ago1714511207IN
Office Hours: OfficeHrs Token
0 ETH0.0004666310.11548728
Set Approval For...189101772024-01-01 4:20:11432 days ago1704082811IN
Office Hours: OfficeHrs Token
0 ETH0.00045479.8567905
Set Approval For...189084342023-12-31 22:27:47432 days ago1704061667IN
Office Hours: OfficeHrs Token
0 ETH0.0005960112.9200384
Set Approval For...189071882023-12-31 18:16:59433 days ago1704046619IN
Office Hours: OfficeHrs Token
0 ETH0.0007223115.65786383
Set Approval For...189053902023-12-31 12:14:11433 days ago1704024851IN
Office Hours: OfficeHrs Token
0 ETH0.0007635416.55168056
Set Approval For...188961772023-12-30 5:10:59434 days ago1703913059IN
Office Hours: OfficeHrs Token
0 ETH0.0006373313.81926587
Set Approval For...188794872023-12-27 20:52:35436 days ago1703710355IN
Office Hours: OfficeHrs Token
0 ETH0.0006541527.10403634
Set Approval For...188676412023-12-26 4:59:47438 days ago1703566787IN
Office Hours: OfficeHrs Token
0 ETH0.0005557612.05063645
Set Approval For...187759522023-12-13 8:06:23451 days ago1702454783IN
Office Hours: OfficeHrs Token
0 ETH0.0017051137.02993677
Set Approval For...185973552023-11-18 7:49:59476 days ago1700293799IN
Office Hours: OfficeHrs Token
0 ETH0.0009184119.90879191
Set Approval For...185827272023-11-16 6:42:59478 days ago1700116979IN
Office Hours: OfficeHrs Token
0 ETH0.0011040423.97646327
Set Approval For...185703852023-11-14 13:17:11480 days ago1699967831IN
Office Hours: OfficeHrs Token
0 ETH0.0022451648.68196423
Set Approval For...182150312023-09-25 19:57:35529 days ago1695671855IN
Office Hours: OfficeHrs Token
0 ETH0.0003921316.23129378
Set Approval For...177166622023-07-18 0:50:59599 days ago1689641459IN
Office Hours: OfficeHrs Token
0 ETH0.0006580214.2642498
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OfficeHours

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : OfficeHours.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author 0xBasset | Taken from Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
contract OfficeHours {

    bytes32 constant public SALT = 0x30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e012;

    uint256 constant ONE_PERCENT  = type(uint256).max / 100;
    uint256 constant MAX_PER_USER = 2;
    
    /*//////////////////////////////////////////////////////////////
                                 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   = "Office Hours";
    string public symbol = "OfficeHrs";

    /*//////////////////////////////////////////////////////////////
                      STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;
    address public calendar;
    address public renderer;

    uint256 public maxSupply = 3000;
    uint256 public totalSupply;

    mapping(uint256 => Data)        internal _tokenData;
    mapping(address => AddressData) internal _balanceOf;

    mapping(uint256 => address) public getApproved;

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

    struct Data { address owner; Details details; }

    struct AddressData {
        uint128 balance;
        uint128 minted;
    }

    struct Details {
        uint8 profession;     // The profession gives work structure
        uint8 timezone;       // The timezone where the worker is
        uint40 overtimeUntil; // The timestamp up until this token is on overtime
        uint40 hourlyRate;    // How much it costs to pay for overtime
    }

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

    constructor() { owner = msg.sender; }

    /*//////////////////////////////////////////////////////////////
                              OFFICE HOURS LOGIC
    //////////////////////////////////////////////////////////////*/

    /* 
        -------- HOW TO MINT -----------
        
        To keep bots away, I'm using a special function to generate a specific salt for each address.
        If you wish to mint, you need to perform a series of hashing functions to correctly get the salt.

        To do that, head to: https://emn178.github.io/online-tools/keccak_256.html

        You will need to paste your wallet address into the input field and, in a new line, paste the SALT stored in this contract.
        In the output box, a new hash will be generated. Copy this hash and and replace the SALT in the input box.

        You need to do that 5 times and the resulting hash is the one used on this function.

        IMPORTANT: Your wallet address needs to be checksummed! To do that, head to: https://ethsum.netlify.app/

        Let's go over one example:
        The wallet address is: 0xcA75e8851A68B0350fF5f1A3Ea488aEE37806e91
        The SALT is:  0x30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e012

        The first resulting hash is: 006c3df3e6c09af250806f3d4e0404a09014cebb82797b2d847768b038efb64a
        then we past that with the address (without the 0x prefix). It'll look like this in the input box:

        ------
        0xcA75e8851A68B0350fF5f1A3Ea488aEE37806e91
        006c3df3e6c09af250806f3d4e0404a09014cebb82797b2d847768b038efb64a
        ------

        2nd hash: 0b3b215f050f734065c82dedffcb8f40e4e174e7cf75544ddf6a820cc8befcaf

        3rd hash: 84093493c9ee89335ebcdb9301dc7e8aad05880820d23a8c87faed9fb2687d5b

        4th hash: 851ecca06644e3e0182c78214ae714a926fa397574a0a7d7804ce13ac7d34ae4

        5th hash: d4cfd9ef869cbb015fc9d53e3157f5fcdf3239efc6566d922a977ded118f9fe5.

        The 5th hash will be the input used to mint!
    */
    function mint(uint256 amount, bytes32 salt) external {
        require(msg.sender == tx.origin,                                "not allowed");
        require(totalSupply + amount <= maxSupply,                      "max supply reached");
        require(_balanceOf[msg.sender].minted + amount <= MAX_PER_USER, "already minted");

        // Verifying salt
        bytes32 currentHash = SALT;
        for (uint256 i = 0; i < 5; i++) {
            currentHash = keccak256(abi.encode(msg.sender, "/n", currentHash));
        }

        require(salt != bytes32(0), "invalid salt");

        // Mint the token
        _safeMint(msg.sender);
    }

    function zMint(uint256 amount, address to) external {
        require(msg.sender == owner, "not allowed");
        for (uint256 i = 0; i < amount; i++) {
            _mint(to);
        }
    } 

    function payOvertime(uint256 tokenId_) external payable { 
        uint256 hourlyRate = uint256(_tokenData[tokenId_].details.hourlyRate) * 1e16;
        require(msg.value >= hourlyRate, "Less than 1 hour");
        require(hourlyRate > 0,           "Free worker");

        uint256 overtime = msg.value / (hourlyRate / 1 hours);
        _tokenData[tokenId_].details.overtimeUntil += uint40(overtime);
    } 

    /*//////////////////////////////////////////////////////////////
                              ADMIN FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    function setRenderer(address rend_) external {
        require(msg.sender == owner, "not owner");
        renderer = rend_;
    }

    function setCalendar(address cal_) external {
        require(msg.sender == owner, "not owner");
        calendar = cal_;
    }

    function withdraw(address recipient) external {
        require(msg.sender == owner, "not owner");
        (bool succ, ) = payable(recipient).call{value: address(this).balance }("");
        require(succ, "withdraw failed");
    }

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

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

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

    // Being sneaky to try stopping bots.
    function mintOdd(uint256 amount, uint256 verification) external {
        require(msg.sender == tx.origin,                                "not allowed");
        require(verification == uint16(uint160(msg.sender)),            "wrong verification");
        require(verification % 2 == 1,                                  "wrong function");
        require(totalSupply + amount <= maxSupply,                      "max supply reached");
        require(_balanceOf[msg.sender].minted + amount <= MAX_PER_USER, "already minted");

        for (uint256 i = 0; i < amount; i++) {
            _mint(msg.sender);
        }
    } 

    function mintEven(uint256 amount, uint256 verification) external {
        require(msg.sender == tx.origin,                                "not allowed");
        require(verification == uint16(uint160(msg.sender)),            "wrong verification");
        require(verification % 2 == 0,                                  "wrong function");
        require(totalSupply + amount <= maxSupply,                      "max supply reached");
        require(_balanceOf[msg.sender].minted + amount <= MAX_PER_USER, "already minted");

        for (uint256 i = 0; i < amount; i++) {
            _mint(msg.sender);
        }
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        _balanceOf[msg.sender].balance -= uint128(amount);

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            _balanceOf[to].balance += uint128(amount);
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

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

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

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

        Details memory details = _tokenData[id].details;
        require(CalendarLike(calendar).canTransfer(details.profession, details.timezone, details.overtimeUntil), "NOT_ON_DUTY");

        // 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].balance--;

            _balanceOf[to].balance++;
        }

        _tokenData[id].owner = 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"
        );
    }

    uint256 public peopleTryingToBot;

    function _safeMint(address ) internal {
        peopleTryingToBot++;
    }

    /*//////////////////////////////////////////////////////////////
                              VIEW FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    function tokenURI(uint256 id) public view returns (string memory) {
        Details memory details = _tokenData[id].details;
        return RendererLike(renderer).getURI(id, details.profession, details.timezone, details.hourlyRate);
    }

    function ownerOf(uint256 id) public view virtual returns (address owner_) {
        Details memory details = _tokenData[id].details;
        require(CalendarLike(calendar).canTransfer(details.profession, details.timezone, details.overtimeUntil), "NOT_ON_DUTY");

        require((owner_ = _tokenData[id].owner) != address(0), "NOT_MINTED");
    }

    function actualOwnerOf(uint256 id) public view virtual returns (address owner_) {
        require((owner_ = _tokenData[id].owner) != address(0), "NOT_MINTED");
    }

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

        return _balanceOf[owner_].balance;
    }

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

        return _balanceOf[owner_].minted;
    }

    function getDatails(uint256 id_) public view returns (uint256 profession_, uint256 location_, uint256 rate_, uint256 overtime_) {
        Details memory details = _tokenData[id_].details;

        profession_ = details.profession;
        location_   = details.timezone;
        rate_       = details.hourlyRate;
        overtime_   = details.overtimeUntil;
    }

    function canTransfer(uint256 id_) public view returns (bool) {
        Details memory details = _tokenData[id_].details;
        return CalendarLike(calendar).canTransfer(details.profession, details.timezone, details.overtimeUntil);
    }

    /*//////////////////////////////////////////////////////////////
                              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 account) internal {
        // Generate token
        uint256 id = ++totalSupply;

        // Not the strongest entropy, but good enough for a mint
        uint256 entropy = uint256(keccak256(abi.encode(account, block.coinbase, id, "entropy")));

        // Generate traits
        uint8 timezone = uint8(uint256(keccak256(abi.encode(entropy, "TIMEZONE"))) % 25) + 1;

        uint256 profEntropy =  uint256(uint256(keccak256(abi.encode(entropy, "PROF"))));

        uint8 profession = uint8(
            // If entropy smaller than 50%
            profEntropy <= 70 * ONE_PERCENT ? (profEntropy % 15) + 1 : 
            // If entropy between 50% and 85%
            profEntropy <= 93 * ONE_PERCENT ? (profEntropy % 10) + 16 :
            // If entropy between 85% and 98%
            profEntropy <= (99 * ONE_PERCENT ) + (ONE_PERCENT / 2) ? (profEntropy % 6) + 26 :
            // Else, select one of the rares
            profEntropy % 6 + 32);

        (uint8 start, uint8 end) = CalendarLike(calendar).rates(profession);

        uint8 rate = (uint8(entropy) % (end - start)) + start;
        
        _tokenData[id].details.timezone      = timezone;
        _tokenData[id].details.profession    = profession;
        _tokenData[id].details.hourlyRate    = rate;
        _tokenData[id].details.overtimeUntil = uint40(block.timestamp + 4 hours);

        _mint(account, id);
    }

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

        require(_tokenData[id].owner == address(0), "ALREADY_MINTED");

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

        _tokenData[id].owner = to;

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

    function _burn(uint256 id) internal virtual {
        address owner_ = _tokenData[id].owner;

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

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

        delete _tokenData[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;
    }
}

interface CalendarLike {
    function canTransfer(uint256 profession, uint256 timezone, uint256 overtimeUntil) external view returns(bool);
    function rates(uint256 profId) external pure returns(uint8 start, uint8 end);
}

interface RendererLike {
    function getURI(uint256 id, uint256 profession, uint256 timezone, uint256 hourlyRate) external pure returns(string memory uri);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SALT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"actualOwnerOf","outputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"view","type":"function"},{"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":"calendar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"getDatails","outputs":[{"internalType":"uint256","name":"profession_","type":"uint256"},{"internalType":"uint256","name":"location_","type":"uint256"},{"internalType":"uint256","name":"rate_","type":"uint256"},{"internalType":"uint256","name":"overtime_","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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"verification","type":"uint256"}],"name":"mintEven","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"verification","type":"uint256"}],"name":"mintOdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"minted","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":"tokenId_","type":"uint256"}],"name":"payOvertime","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"peopleTryingToBot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renderer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"cal_","type":"address"}],"name":"setCalendar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rend_","type":"address"}],"name":"setRenderer","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"recipient","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"zMint","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600c60808190526b4f666669636520486f75727360a01b60a09081526200002f91600091906200008f565b50604080518082019091526009808252684f666669636548727360b81b602090920191825262000062916001916200008f565b50610bb86005553480156200007657600080fd5b50600280546001600160a01b0319163317905562000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b61256f80620001826000396000f3fe6080604052600436106101ee5760003560e01c80636bb2d3bd1161010d578063a22cb465116100a0578063bd18ab1a1161006f578063bd18ab1a146105b0578063c87b56dd146105d0578063d5abeb01146105f0578063e60f8bed14610606578063e985e9c5146106a557600080fd5b8063a22cb4651461051c578063a9059cbb1461053c578063b88d4fde1461055c578063ba9a91a51461057c57600080fd5b80638ada6b0f116100dc5780638ada6b0f146104a75780638da5cb5b146104c75780638e4cd432146104e757806395d89b411461050757600080fd5b80636bb2d3bd146104315780636db021ee1461044757806370a0823114610467578063766fa34d1461048757600080fd5b806323b872dd1161018557806356d3163d1161015457806356d3163d146103b15780635942dd61146103d15780636352211e146103f157806368a38e3f1461041157600080fd5b806323b872dd1461033157806342842e0e146103515780634d4f6ea91461037157806351cff8d91461039157600080fd5b80631801fbe5116101c15780631801fbe5146102ba57806318160ddd146102da5780631e7269c5146102fe578063216651cd1461031e57600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021361020e3660046120a4565b6106e0565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d610732565b60405161021f9190612267565b34801561025657600080fd5b5061028061026536600461218b565b6009602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b3480156102a457600080fd5b506102b86102b336600461205d565b6107c0565b005b3480156102c657600080fd5b506102b86102d53660046121c7565b6108a7565b3480156102e657600080fd5b506102f060065481565b60405190815260200161021f565b34801561030a57600080fd5b506102f0610319366004611f01565b610a11565b6102b861032c36600461218b565b610a84565b34801561033d57600080fd5b506102b861034c366004611f4f565b610ba8565b34801561035d57600080fd5b506102b861036c366004611f4f565b610eb2565b34801561037d57600080fd5b5061021361038c36600461218b565b610fb4565b34801561039d57600080fd5b506102b86103ac366004611f01565b61109c565b3480156103bd57600080fd5b506102b86103cc366004611f01565b61115f565b3480156103dd57600080fd5b506102b86103ec366004611f01565b6111ab565b3480156103fd57600080fd5b5061028061040c36600461218b565b6111f7565b34801561041d57600080fd5b506102b861042c3660046121c7565b61136c565b34801561043d57600080fd5b506102f0600b5481565b34801561045357600080fd5b5061028061046236600461218b565b6114bd565b34801561047357600080fd5b506102f0610482366004611f01565b611514565b34801561049357600080fd5b506102b86104a23660046121c7565b611580565b3480156104b357600080fd5b50600454610280906001600160a01b031681565b3480156104d357600080fd5b50600254610280906001600160a01b031681565b3480156104f357600080fd5b506102b86105023660046121a4565b6116d3565b34801561051357600080fd5b5061023d611723565b34801561052857600080fd5b506102b8610537366004612026565b611730565b34801561054857600080fd5b5061021361055736600461205d565b61179c565b34801561056857600080fd5b506102b8610577366004611f8b565b611851565b34801561058857600080fd5b506102f07f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01281565b3480156105bc57600080fd5b50600354610280906001600160a01b031681565b3480156105dc57600080fd5b5061023d6105eb36600461218b565b611948565b3480156105fc57600080fd5b506102f060055481565b34801561061257600080fd5b5061068561062136600461218b565b600090815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116958401869052600160381b90920490911660609092018290529391929091565b60408051948552602085019390935291830152606082015260800161021f565b3480156106b157600080fd5b506102136106c0366004611f1c565b600a60209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b03198316148061071157506380ac58cd60e01b6001600160e01b03198316145b8061072c5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461073f9061244a565b80601f016020809104026020016040519081016040528092919081815260200182805461076b9061244a565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081565b6000818152600760205260409020546001600160a01b03163381148061080957506001600160a01b0381166000908152600a6020908152604080832033845290915290205460ff165b61084b5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3332146108c65760405162461bcd60e51b81526004016108429061229a565b600554826006546108d79190612336565b11156108f55760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290610923908490600160801b90046001600160801b0316612336565b11156109415760405162461bcd60e51b81526004016108429061230e565b7f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01260005b60058110156109c657604080513360208201526060918101829052600260808201526117b760f11b60a082015290810183905260c00160405160208183030381529060405280519060200120915080806109be9061247f565b915050610965565b5081610a035760405162461bcd60e51b815260206004820152600c60248201526b1a5b9d985b1a59081cd85b1d60a21b6044820152606401610842565b610a0c33611a3b565b505050565b60006001600160a01b038216610a585760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b0316600090815260086020526040902054600160801b90046001600160801b031690565b600081815260076020526040812060010154610ab590600160381b900464ffffffffff16662386f26fc100006123b0565b905080341015610afa5760405162461bcd60e51b815260206004820152601060248201526f2632b9b9903a3430b71018903437bab960811b6044820152606401610842565b60008111610b385760405162461bcd60e51b815260206004820152600b60248201526a233932b2903bb7b935b2b960a91b6044820152606401610842565b6000610b46610e108361239c565b610b50903461239c565b600084815260076020526040902060010180549192508291600290610b8390849062010000900464ffffffffff1661234e565b92506101000a81548164ffffffffff021916908364ffffffffff160217905550505050565b6000818152600760205260409020546001600160a01b03848116911614610bfe5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610842565b6001600160a01b038216610c485760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b336001600160a01b0384161480610c8257506001600160a01b0383166000908152600a6020908152604080832033845290915290205460ff165b80610ca357506000818152600960205260409020546001600160a01b031633145b610ce05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610842565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116848701819052600160381b909304166060840152600354945163038189dd60e01b8152600481019190915260248101939093526044830152916001600160a01b03169063038189dd9060640160206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190612087565b610dfa5760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6001600160a01b03848116600081815260086020908152604080832080546001600160801b03198082166001600160801b03928316600019018316179092559589168085528285208054928316928816600101909716919091179095558683526007825280832080546001600160a01b031990811687179091556009909252808320805490921690915551859392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b610ebd838383610ba8565b6001600160a01b0382163b1580610f755750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a401602060405180830381600087803b158015610f3157600080fd5b505af1158015610f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6991906120c1565b6001600160e01b031916145b610a0c5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110959190612087565b9392505050565b6002546001600160a01b031633146110c65760405162461bcd60e51b8152600401610842906122eb565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611113576040519150601f19603f3d011682016040523d82523d6000602084013e611118565b606091505b505090508061115b5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610842565b5050565b6002546001600160a01b031633146111895760405162461bcd60e51b8152600401610842906122eb565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146111d55760405162461bcd60e51b8152600401610842906122eb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b1580156112a057600080fd5b505afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d89190612087565b6113125760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6000838152600760205260409020546001600160a01b03169150816113665760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b50919050565b33321461138b5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146113d35760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6113de60028261249a565b1561141c5760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b6005548260065461142d9190612336565b111561144b5760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290611479908490600160801b90046001600160801b0316612336565b11156114975760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576114ab33611a53565b806114b58161247f565b91505061149a565b6000818152600760205260409020546001600160a01b03168061150f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b919050565b60006001600160a01b03821661155b5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b03166000908152600860205260409020546001600160801b031690565b33321461159f5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146115e75760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6115f260028261249a565b6001146116325760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b600554826006546116439190612336565b11156116615760405162461bcd60e51b8152600401610842906122bf565b3360009081526008602052604090205460029061168f908490600160801b90046001600160801b0316612336565b11156116ad5760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576116c133611a53565b806116cb8161247f565b9150506116b0565b6002546001600160a01b031633146116fd5760405162461bcd60e51b81526004016108429061229a565b60005b82811015610a0c5761171182611a53565b8061171b8161247f565b915050611700565b6001805461073f9061244a565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336000908152600860205260408120805483919083906117c69084906001600160801b03166123cf565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03851660008181526008602052604080822080546001600160801b031981169086168901909516949094179093559151859350909133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a450600192915050565b61185c858585610ba8565b6001600160a01b0384163b15806119025750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906118a49033908a90899089908990600401612213565b602060405180830381600087803b1580156118be57600080fd5b505af11580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f691906120c1565b6001600160e01b031916145b6119415760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b5050505050565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff620100008304811684870152600160381b9092049091166060808401829052600480549651631cff68af60e01b8152908101889052602481019390935260448301949094526064820152919290916001600160a01b0390911690631cff68af9060840160006040518083038186803b1580156119ff57600080fd5b505afa158015611a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261109591908101906120de565b600b8054906000611a4b8361247f565b919050555050565b6000600660008154611a649061247f565b9182905550604080516001600160a01b0385166020820152419181019190915260608101829052608080820152600760a082015266656e74726f707960c81b60c082015290915060009060e00160408051601f19818403018152828252805160209182012090830181905282820191909152600860608301526754494d455a4f4e4560c01b6080830152915060009060199060a0016040516020818303038152906040528051906020012060001c611b1c919061249a565b611b27906001612377565b9050600082604051602001611b5a91815260406020820181905260049082015263282927a360e11b606082015260800190565b60408051601f19818403018152919052805160209091012090506000611b83606460001961239c565b611b8e9060466123b0565b821115611c3d57611ba2606460001961239c565b611bad90605d6123b0565b821115611c27576002611bc3606460001961239c565b611bcd919061239c565b611bda606460001961239c565b611be59060636123b0565b611bef9190612336565b821115611c1157611c0160068361249a565b611c0c906020612336565b611c53565b611c1c60068361249a565b611c0c90601a612336565b611c32600a8361249a565b611c0c906010612336565b611c48600f8361249a565b611c53906001612336565b600354604051636ea0c57160e11b815260ff8316600482015291925060009182916001600160a01b03169063dd418ae290602401604080518083038186803b158015611c9e57600080fd5b505afa158015611cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd691906121e9565b9092509050600082611ce881846123f7565b611cf290896124ae565b611cfc9190612377565b6000898152600760205260409020600101805460ff8781166bffffffffff0000000000ffff199092166101008b8316026bffffffffff000000000000ff19161791909117908316600160381b021790559050611d5a42613840612336565b6000898152600760205260409020600101805464ffffffffff92909216620100000266ffffffffff000019909216919091179055611d988989611da3565b505050505050505050565b6001600160a01b038216611ded5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b6000818152600760205260409020546001600160a01b031615611e435760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610842565b6001600160a01b03821660008181526008602090815260408083208054600160801b6001600160801b03808316600190810182166001600160801b031990941684178390048216011602179055848352600790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b038116811461150f57600080fd5b805160ff8116811461150f57600080fd5b600060208284031215611f1357600080fd5b61109582611ed9565b60008060408385031215611f2f57600080fd5b611f3883611ed9565b9150611f4660208401611ed9565b90509250929050565b600080600060608486031215611f6457600080fd5b611f6d84611ed9565b9250611f7b60208501611ed9565b9150604084013590509250925092565b600080600080600060808688031215611fa357600080fd5b611fac86611ed9565b9450611fba60208701611ed9565b935060408601359250606086013567ffffffffffffffff80821115611fde57600080fd5b818801915088601f830112611ff257600080fd5b81358181111561200157600080fd5b89602082850101111561201357600080fd5b9699959850939650602001949392505050565b6000806040838503121561203957600080fd5b61204283611ed9565b9150602083013561205281612512565b809150509250929050565b6000806040838503121561207057600080fd5b61207983611ed9565b946020939093013593505050565b60006020828403121561209957600080fd5b815161109581612512565b6000602082840312156120b657600080fd5b813561109581612523565b6000602082840312156120d357600080fd5b815161109581612523565b6000602082840312156120f057600080fd5b815167ffffffffffffffff8082111561210857600080fd5b818401915084601f83011261211c57600080fd5b81518181111561212e5761212e6124fc565b604051601f8201601f19908116603f01168101908382118183101715612156576121566124fc565b8160405282815287602084870101111561216f57600080fd5b61218083602083016020880161241a565b979650505050505050565b60006020828403121561219d57600080fd5b5035919050565b600080604083850312156121b757600080fd5b82359150611f4660208401611ed9565b600080604083850312156121da57600080fd5b50508035926020909101359150565b600080604083850312156121fc57600080fd5b61220583611ef0565b9150611f4660208401611ef0565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b602081526000825180602084015261228681604085016020870161241a565b601f01601f19169190910160400192915050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252601290820152711b585e081cdd5c1c1b1e481c995858da195960721b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252600e908201526d185b1c9958591e481b5a5b9d195960921b604082015260600190565b60008219821115612349576123496124d0565b500190565b600064ffffffffff80831681851680830382111561236e5761236e6124d0565b01949350505050565b600060ff821660ff84168060ff03821115612394576123946124d0565b019392505050565b6000826123ab576123ab6124e6565b500490565b60008160001904831182151516156123ca576123ca6124d0565b500290565b60006001600160801b03838116908316818110156123ef576123ef6124d0565b039392505050565b600060ff821660ff841680821015612411576124116124d0565b90039392505050565b60005b8381101561243557818101518382015260200161241d565b83811115612444576000848401525b50505050565b600181811c9082168061245e57607f821691505b6020821081141561136657634e487b7160e01b600052602260045260246000fd5b6000600019821415612493576124936124d0565b5060010190565b6000826124a9576124a96124e6565b500690565b600060ff8316806124c1576124c16124e6565b8060ff84160691505092915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461252057600080fd5b50565b6001600160e01b03198116811461252057600080fdfea2646970667358221220e96b9368fef09fd0b91d6a31c18e51e7d4c21fc70c1de865886cb4ebef5df02164736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c80636bb2d3bd1161010d578063a22cb465116100a0578063bd18ab1a1161006f578063bd18ab1a146105b0578063c87b56dd146105d0578063d5abeb01146105f0578063e60f8bed14610606578063e985e9c5146106a557600080fd5b8063a22cb4651461051c578063a9059cbb1461053c578063b88d4fde1461055c578063ba9a91a51461057c57600080fd5b80638ada6b0f116100dc5780638ada6b0f146104a75780638da5cb5b146104c75780638e4cd432146104e757806395d89b411461050757600080fd5b80636bb2d3bd146104315780636db021ee1461044757806370a0823114610467578063766fa34d1461048757600080fd5b806323b872dd1161018557806356d3163d1161015457806356d3163d146103b15780635942dd61146103d15780636352211e146103f157806368a38e3f1461041157600080fd5b806323b872dd1461033157806342842e0e146103515780634d4f6ea91461037157806351cff8d91461039157600080fd5b80631801fbe5116101c15780631801fbe5146102ba57806318160ddd146102da5780631e7269c5146102fe578063216651cd1461031e57600080fd5b806301ffc9a7146101f357806306fdde0314610228578063081812fc1461024a578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021361020e3660046120a4565b6106e0565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b5061023d610732565b60405161021f9190612267565b34801561025657600080fd5b5061028061026536600461218b565b6009602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b3480156102a457600080fd5b506102b86102b336600461205d565b6107c0565b005b3480156102c657600080fd5b506102b86102d53660046121c7565b6108a7565b3480156102e657600080fd5b506102f060065481565b60405190815260200161021f565b34801561030a57600080fd5b506102f0610319366004611f01565b610a11565b6102b861032c36600461218b565b610a84565b34801561033d57600080fd5b506102b861034c366004611f4f565b610ba8565b34801561035d57600080fd5b506102b861036c366004611f4f565b610eb2565b34801561037d57600080fd5b5061021361038c36600461218b565b610fb4565b34801561039d57600080fd5b506102b86103ac366004611f01565b61109c565b3480156103bd57600080fd5b506102b86103cc366004611f01565b61115f565b3480156103dd57600080fd5b506102b86103ec366004611f01565b6111ab565b3480156103fd57600080fd5b5061028061040c36600461218b565b6111f7565b34801561041d57600080fd5b506102b861042c3660046121c7565b61136c565b34801561043d57600080fd5b506102f0600b5481565b34801561045357600080fd5b5061028061046236600461218b565b6114bd565b34801561047357600080fd5b506102f0610482366004611f01565b611514565b34801561049357600080fd5b506102b86104a23660046121c7565b611580565b3480156104b357600080fd5b50600454610280906001600160a01b031681565b3480156104d357600080fd5b50600254610280906001600160a01b031681565b3480156104f357600080fd5b506102b86105023660046121a4565b6116d3565b34801561051357600080fd5b5061023d611723565b34801561052857600080fd5b506102b8610537366004612026565b611730565b34801561054857600080fd5b5061021361055736600461205d565b61179c565b34801561056857600080fd5b506102b8610577366004611f8b565b611851565b34801561058857600080fd5b506102f07f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01281565b3480156105bc57600080fd5b50600354610280906001600160a01b031681565b3480156105dc57600080fd5b5061023d6105eb36600461218b565b611948565b3480156105fc57600080fd5b506102f060055481565b34801561061257600080fd5b5061068561062136600461218b565b600090815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116958401869052600160381b90920490911660609092018290529391929091565b60408051948552602085019390935291830152606082015260800161021f565b3480156106b157600080fd5b506102136106c0366004611f1c565b600a60209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b03198316148061071157506380ac58cd60e01b6001600160e01b03198316145b8061072c5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461073f9061244a565b80601f016020809104026020016040519081016040528092919081815260200182805461076b9061244a565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081565b6000818152600760205260409020546001600160a01b03163381148061080957506001600160a01b0381166000908152600a6020908152604080832033845290915290205460ff165b61084b5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3332146108c65760405162461bcd60e51b81526004016108429061229a565b600554826006546108d79190612336565b11156108f55760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290610923908490600160801b90046001600160801b0316612336565b11156109415760405162461bcd60e51b81526004016108429061230e565b7f30eaf58a3f477568e3a7924cf0a948bb5f3b8066d23d3667392501f4a858e01260005b60058110156109c657604080513360208201526060918101829052600260808201526117b760f11b60a082015290810183905260c00160405160208183030381529060405280519060200120915080806109be9061247f565b915050610965565b5081610a035760405162461bcd60e51b815260206004820152600c60248201526b1a5b9d985b1a59081cd85b1d60a21b6044820152606401610842565b610a0c33611a3b565b505050565b60006001600160a01b038216610a585760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b0316600090815260086020526040902054600160801b90046001600160801b031690565b600081815260076020526040812060010154610ab590600160381b900464ffffffffff16662386f26fc100006123b0565b905080341015610afa5760405162461bcd60e51b815260206004820152601060248201526f2632b9b9903a3430b71018903437bab960811b6044820152606401610842565b60008111610b385760405162461bcd60e51b815260206004820152600b60248201526a233932b2903bb7b935b2b960a91b6044820152606401610842565b6000610b46610e108361239c565b610b50903461239c565b600084815260076020526040902060010180549192508291600290610b8390849062010000900464ffffffffff1661234e565b92506101000a81548164ffffffffff021916908364ffffffffff160217905550505050565b6000818152600760205260409020546001600160a01b03848116911614610bfe5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610842565b6001600160a01b038216610c485760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b336001600160a01b0384161480610c8257506001600160a01b0383166000908152600a6020908152604080832033845290915290205460ff165b80610ca357506000818152600960205260409020546001600160a01b031633145b610ce05760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610842565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff6201000083048116848701819052600160381b909304166060840152600354945163038189dd60e01b8152600481019190915260248101939093526044830152916001600160a01b03169063038189dd9060640160206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190612087565b610dfa5760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6001600160a01b03848116600081815260086020908152604080832080546001600160801b03198082166001600160801b03928316600019018316179092559589168085528285208054928316928816600101909716919091179095558683526007825280832080546001600160a01b031990811687179091556009909252808320805490921690915551859392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b610ebd838383610ba8565b6001600160a01b0382163b1580610f755750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a401602060405180830381600087803b158015610f3157600080fd5b505af1158015610f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6991906120c1565b6001600160e01b031916145b610a0c5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110959190612087565b9392505050565b6002546001600160a01b031633146110c65760405162461bcd60e51b8152600401610842906122eb565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611113576040519150601f19603f3d011682016040523d82523d6000602084013e611118565b606091505b505090508061115b5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610842565b5050565b6002546001600160a01b031633146111895760405162461bcd60e51b8152600401610842906122eb565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146111d55760405162461bcd60e51b8152600401610842906122eb565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600760209081526040808320815160808101835260019091015460ff808216808452610100830490911694830185905264ffffffffff6201000083048116848601819052600160381b909304166060840152600354935163038189dd60e01b8152600481019190915260248101949094526044840152916001600160a01b039091169063038189dd9060640160206040518083038186803b1580156112a057600080fd5b505afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d89190612087565b6113125760405162461bcd60e51b815260206004820152600b60248201526a4e4f545f4f4e5f4455545960a81b6044820152606401610842565b6000838152600760205260409020546001600160a01b03169150816113665760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b50919050565b33321461138b5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146113d35760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6113de60028261249a565b1561141c5760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b6005548260065461142d9190612336565b111561144b5760405162461bcd60e51b8152600401610842906122bf565b33600090815260086020526040902054600290611479908490600160801b90046001600160801b0316612336565b11156114975760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576114ab33611a53565b806114b58161247f565b91505061149a565b6000818152600760205260409020546001600160a01b03168061150f5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610842565b919050565b60006001600160a01b03821661155b5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610842565b506001600160a01b03166000908152600860205260409020546001600160801b031690565b33321461159f5760405162461bcd60e51b81526004016108429061229a565b3361ffff1681146115e75760405162461bcd60e51b81526020600482015260126024820152713bb937b733903b32b934b334b1b0ba34b7b760711b6044820152606401610842565b6115f260028261249a565b6001146116325760405162461bcd60e51b815260206004820152600e60248201526d3bb937b73390333ab731ba34b7b760911b6044820152606401610842565b600554826006546116439190612336565b11156116615760405162461bcd60e51b8152600401610842906122bf565b3360009081526008602052604090205460029061168f908490600160801b90046001600160801b0316612336565b11156116ad5760405162461bcd60e51b81526004016108429061230e565b60005b82811015610a0c576116c133611a53565b806116cb8161247f565b9150506116b0565b6002546001600160a01b031633146116fd5760405162461bcd60e51b81526004016108429061229a565b60005b82811015610a0c5761171182611a53565b8061171b8161247f565b915050611700565b6001805461073f9061244a565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b336000908152600860205260408120805483919083906117c69084906001600160801b03166123cf565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03851660008181526008602052604080822080546001600160801b031981169086168901909516949094179093559151859350909133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a450600192915050565b61185c858585610ba8565b6001600160a01b0384163b15806119025750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906118a49033908a90899089908990600401612213565b602060405180830381600087803b1580156118be57600080fd5b505af11580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f691906120c1565b6001600160e01b031916145b6119415760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610842565b5050505050565b600081815260076020908152604091829020825160808101845260019091015460ff808216808452610100830490911693830184905264ffffffffff620100008304811684870152600160381b9092049091166060808401829052600480549651631cff68af60e01b8152908101889052602481019390935260448301949094526064820152919290916001600160a01b0390911690631cff68af9060840160006040518083038186803b1580156119ff57600080fd5b505afa158015611a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261109591908101906120de565b600b8054906000611a4b8361247f565b919050555050565b6000600660008154611a649061247f565b9182905550604080516001600160a01b0385166020820152419181019190915260608101829052608080820152600760a082015266656e74726f707960c81b60c082015290915060009060e00160408051601f19818403018152828252805160209182012090830181905282820191909152600860608301526754494d455a4f4e4560c01b6080830152915060009060199060a0016040516020818303038152906040528051906020012060001c611b1c919061249a565b611b27906001612377565b9050600082604051602001611b5a91815260406020820181905260049082015263282927a360e11b606082015260800190565b60408051601f19818403018152919052805160209091012090506000611b83606460001961239c565b611b8e9060466123b0565b821115611c3d57611ba2606460001961239c565b611bad90605d6123b0565b821115611c27576002611bc3606460001961239c565b611bcd919061239c565b611bda606460001961239c565b611be59060636123b0565b611bef9190612336565b821115611c1157611c0160068361249a565b611c0c906020612336565b611c53565b611c1c60068361249a565b611c0c90601a612336565b611c32600a8361249a565b611c0c906010612336565b611c48600f8361249a565b611c53906001612336565b600354604051636ea0c57160e11b815260ff8316600482015291925060009182916001600160a01b03169063dd418ae290602401604080518083038186803b158015611c9e57600080fd5b505afa158015611cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd691906121e9565b9092509050600082611ce881846123f7565b611cf290896124ae565b611cfc9190612377565b6000898152600760205260409020600101805460ff8781166bffffffffff0000000000ffff199092166101008b8316026bffffffffff000000000000ff19161791909117908316600160381b021790559050611d5a42613840612336565b6000898152600760205260409020600101805464ffffffffff92909216620100000266ffffffffff000019909216919091179055611d988989611da3565b505050505050505050565b6001600160a01b038216611ded5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610842565b6000818152600760205260409020546001600160a01b031615611e435760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610842565b6001600160a01b03821660008181526008602090815260408083208054600160801b6001600160801b03808316600190810182166001600160801b031990941684178390048216011602179055848352600790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b80356001600160a01b038116811461150f57600080fd5b805160ff8116811461150f57600080fd5b600060208284031215611f1357600080fd5b61109582611ed9565b60008060408385031215611f2f57600080fd5b611f3883611ed9565b9150611f4660208401611ed9565b90509250929050565b600080600060608486031215611f6457600080fd5b611f6d84611ed9565b9250611f7b60208501611ed9565b9150604084013590509250925092565b600080600080600060808688031215611fa357600080fd5b611fac86611ed9565b9450611fba60208701611ed9565b935060408601359250606086013567ffffffffffffffff80821115611fde57600080fd5b818801915088601f830112611ff257600080fd5b81358181111561200157600080fd5b89602082850101111561201357600080fd5b9699959850939650602001949392505050565b6000806040838503121561203957600080fd5b61204283611ed9565b9150602083013561205281612512565b809150509250929050565b6000806040838503121561207057600080fd5b61207983611ed9565b946020939093013593505050565b60006020828403121561209957600080fd5b815161109581612512565b6000602082840312156120b657600080fd5b813561109581612523565b6000602082840312156120d357600080fd5b815161109581612523565b6000602082840312156120f057600080fd5b815167ffffffffffffffff8082111561210857600080fd5b818401915084601f83011261211c57600080fd5b81518181111561212e5761212e6124fc565b604051601f8201601f19908116603f01168101908382118183101715612156576121566124fc565b8160405282815287602084870101111561216f57600080fd5b61218083602083016020880161241a565b979650505050505050565b60006020828403121561219d57600080fd5b5035919050565b600080604083850312156121b757600080fd5b82359150611f4660208401611ed9565b600080604083850312156121da57600080fd5b50508035926020909101359150565b600080604083850312156121fc57600080fd5b61220583611ef0565b9150611f4660208401611ef0565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b602081526000825180602084015261228681604085016020870161241a565b601f01601f19169190910160400192915050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252601290820152711b585e081cdd5c1c1b1e481c995858da195960721b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252600e908201526d185b1c9958591e481b5a5b9d195960921b604082015260600190565b60008219821115612349576123496124d0565b500190565b600064ffffffffff80831681851680830382111561236e5761236e6124d0565b01949350505050565b600060ff821660ff84168060ff03821115612394576123946124d0565b019392505050565b6000826123ab576123ab6124e6565b500490565b60008160001904831182151516156123ca576123ca6124d0565b500290565b60006001600160801b03838116908316818110156123ef576123ef6124d0565b039392505050565b600060ff821660ff841680821015612411576124116124d0565b90039392505050565b60005b8381101561243557818101518382015260200161241d565b83811115612444576000848401525b50505050565b600181811c9082168061245e57607f821691505b6020821081141561136657634e487b7160e01b600052602260045260246000fd5b6000600019821415612493576124936124d0565b5060010190565b6000826124a9576124a96124e6565b500690565b600060ff8316806124c1576124c16124e6565b8060ff84160691505092915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461252057600080fd5b50565b6001600160e01b03198116811461252057600080fdfea2646970667358221220e96b9368fef09fd0b91d6a31c18e51e7d4c21fc70c1de865886cb4ebef5df02164736f6c63430008070033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Each NFT of the collection will be a different profession in a different timezone around the world. Additionally, each token also has it's own work schedule and hourly rate.⚠️ PLEASE BE AWARE OF THE MECHANICS OF THIS PROJECT BEFORE PURCHASING ⚠️

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.