[ { "inputs": [ { "internalType": "address", "name": "deployer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyLinked", "type": "error" }, { "inputs": [], "name": "CannotLink", "type": "error" }, { "inputs": [], "name": "NotLinked", "type": "error" }, { "inputs": [], "name": "SenderNotBase", "type": "error" }, { "inputs": [], "name": "SenderNotDeployer", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "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": "isApproved", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "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": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseERC20", "outputs": [ { "internalType": "address", "name": "base", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "result", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "result", "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": "payable", "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "result", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "result", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "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" }, { "stateMutability": "payable", "type": "receive" } ]
608060405234801561000f575f80fd5b50604051610c30380380610c3083398101604081905261002e9161005b565b683602298b8c10b0123180546001600160a01b0319166001600160a01b0392909216919091179055610088565b5f6020828403121561006b575f80fd5b81516001600160a01b0381168114610081575f80fd5b9392505050565b610b9b806100955f395ff3fe6080604052600436106100eb575f3560e01c80636352211e11610089578063a22cb46511610058578063a22cb465146103d5578063b88d4fde146103f4578063c87b56dd14610413578063e985e9c514610432576100f2565b80636352211e1461036f57806370a082311461038e57806395d89b41146103ad57806397e5311c146103c1576100f2565b8063095ea7b3116100c5578063095ea7b3146102fc57806318160ddd1461031b57806323b872dd1461033d57806342842e0e1461035c576100f2565b806301ffc9a71461025357806306fdde03146102a4578063081812fc146102c5576100f2565b366100f257005b683602298b8c10b012305f3560e01c63263c69d68190036101b75781546001600160a01b0316331461013757604051631b1e598960e11b815260040160405180910390fd5b602036103d5f3e6004356024018036103d5f3e602081033560051b81018036103d5f3e5b8082146101ac5781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f38a450505081602001915061015b565b505060015f5260205ff35b80630f4599e5036102515760018201546001600160a01b03161561020d5760018201546001600160a01b03166004356001600160a01b03161461020d576040516362cf623d60e11b815260040160405180910390fd5b81546001600160a01b03161561023657604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560015f908152602090f35b005b34801561025e575f80fd5b5061028f61026d366004610943565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b506102b8610451565b60405161029b9190610971565b3480156102d0575f80fd5b506102e46102df3660046109bc565b6104a4565b6040516001600160a01b03909116815260200161029b565b348015610307575f80fd5b506102516103163660046109ee565b6104e7565b348015610326575f80fd5b5061032f610567565b60405190815260200161029b565b348015610348575f80fd5b50610251610357366004610a16565b6105a0565b61025161036a366004610a16565b61062c565b34801561037a575f80fd5b506102e46103893660046109bc565b61065d565b348015610399575f80fd5b5061032f6103a8366004610a4f565b610693565b3480156103b8575f80fd5b506102b86106d8565b3480156103cc575f80fd5b506102e4610706565b3480156103e0575f80fd5b506102516103ef366004610a68565b61073b565b3480156103ff575f80fd5b5061025161040e366004610aa1565b6107b8565b34801561041e575f80fd5b506102b861042d3660046109bc565b610812565b34801561043d575f80fd5b5061028f61044c366004610b34565b61086b565b60605f61045c610706565b905060405191506306fdde035f525f806004601c845afa61047f573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e815160208301016040525090565b5f806104ae610706565b905063081812fc5f528260205260205f6024601c845afa601f3d11166104da573d5f6040513e3d604051fd5b5050600c5160601c919050565b5f6104f0610706565b90508260601b60601c925060405163d10b6e0c5f5283602052826040523360605260205f6064601c34865af1601f3d111661052d573d5f823e3d81fd5b80604052505f6060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f38a4505050565b5f80610571610706565b905063e2c792815f5260205f6004601c845afa601f3d1116610599573d5f6040513e3d604051fd5b50505f5190565b5f6105a9610706565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af16001825114166105fe573d5f823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f38a450505050565b6106378383836105a0565b813b156106585761065883838360405180602001604052805f8152506108ba565b505050565b5f80610667610706565b9050636352211e5f528260205260205f6024601c845afa601f3d11166104da573d5f6040513e3d604051fd5b5f8061069d610706565b90508260601b60601c60205263f5b100ea5f5260205f6024601c845afa601f3d11166106cf573d5f6040513e3d604051fd5b50505f51919050565b60605f6106e3610706565b905060405191506395d89b415f525f806004601c845afa61047f573d5f833e3d82fd5b683602298b8c10b01230546001600160a01b03168061073857604051632d9523d760e11b815260040160405180910390fd5b90565b5f610744610706565b90508260601b60601c925060405163813500fc5f52836020528215156040523360605260205f6064601c34865af160015f511416610784573d5f823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a360405250505f60605250565b6107c38585856105a0565b833b1561080b5761080b85858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506108ba92505050565b5050505050565b60605f61081d610706565b905060405191508260205263c87b56dd5f525f806024601c845afa610844573d5f833e3d82fd5b60205f803e60205f51833e815160205f5101602084013e8151602083010160405250919050565b5f80610875610706565b9050604051836040528460601b602c5263e985e9c560601b600c5260205f6044601c855afa601f3d11166108ab573d5f823e3d81fd5b60405250505f51151592915050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610901578060c08401826020870160045afa505b60208360a48301601c86015f8a5af1610922573d15610922573d5f843e3d83fd5b508060e01b82511461093b5763d1a57ed65f526004601cfd5b505050505050565b5f60208284031215610953575f80fd5b81356001600160e01b03198116811461096a575f80fd5b9392505050565b5f6020808352835180828501525f5b8181101561099c57858101830151858201604001528201610980565b505f604082860101526040601f19601f8301168501019250505092915050565b5f602082840312156109cc575f80fd5b5035919050565b80356001600160a01b03811681146109e9575f80fd5b919050565b5f80604083850312156109ff575f80fd5b610a08836109d3565b946020939093013593505050565b5f805f60608486031215610a28575f80fd5b610a31846109d3565b9250610a3f602085016109d3565b9150604084013590509250925092565b5f60208284031215610a5f575f80fd5b61096a826109d3565b5f8060408385031215610a79575f80fd5b610a82836109d3565b915060208301358015158114610a96575f80fd5b809150509250929050565b5f805f805f60808688031215610ab5575f80fd5b610abe866109d3565b9450610acc602087016109d3565b935060408601359250606086013567ffffffffffffffff80821115610aef575f80fd5b818801915088601f830112610b02575f80fd5b813581811115610b10575f80fd5b896020828501011115610b21575f80fd5b9699959850939650602001949392505050565b5f8060408385031215610b45575f80fd5b610b4e836109d3565b9150610b5c602084016109d3565b9050925092905056fea2646970667358221220a18c7df9616356ea4b7b684a1b311a95c089f0cdb8aa4ccfcde752d99b5d566964736f6c63430008140033000000000000000000000000faa83e7b683c2b285a0d23573c4ac1294996aba6