[ { "inputs": [ { "internalType": "address", "name": "deployer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyLinked", "type": "error" }, { "inputs": [], "name": "CannotLink", "type": "error" }, { "inputs": [], "name": "FnSelectorNotRecognized", "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": "oldOwner", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "nftOwner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "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": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "nftOwner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "ownerAt", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pullOwner", "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": "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "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": "", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405234801561001057600080fd5b50604051610d8a380380610d8a83398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008c565b60006020828403121561006e57600080fd5b81516001600160a01b038116811461008557600080fd5b9392505050565b610cef8061009b6000396000f3fe60806040526004361061010d5760003560e01c80636cef16e61161009557806397e5311c1161006457806397e5311c146104d7578063a22cb465146104ec578063b88d4fde1461050c578063c87b56dd1461051f578063e985e9c51461053f5761011f565b80636cef16e61461046757806370a082311461047c5780638da5cb5b1461049c57806395d89b41146104c25761011f565b806318160ddd116100dc57806318160ddd146103de57806323b872dd14610401578063243598791461041457806342842e0e146104345780636352211e146104475761011f565b806301ffc9a71461031f57806306fdde0314610371578063081812fc14610393578063095ea7b3146103cb5761011f565b3661011f57341561011d57600080fd5b005b683602298b8c10b0123060003560e01c63263c69d68190036101d55781546001600160a01b0316331461016557604051631b1e598960e11b815260040160405180910390fd5b600435602401602081033560051b81015b8082146101c85781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4505050816020019150610176565b5050600160005260206000f35b8063144027d30361026b5781546001600160a01b0316331461020a57604051631b1e598960e11b815260040160405180910390fd5b600435602435604435602401602081033560051b81015b80821461025c57813583857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4816020019150610221565b50505050600160005260206000f35b80630f4599e5036103065760018201546001600160a01b0316156102c15760018201546001600160a01b03166004356001600160a01b0316146102c1576040516362cf623d60e11b815260040160405180910390fd5b81546001600160a01b0316156102ea57604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560016000908152602090f35b604051631e085ca760e11b815260040160405180910390fd5b34801561032b57600080fd5b5061035c61033a366004610a7a565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b34801561037d57600080fd5b5061038661055f565b6040516103689190610aab565b34801561039f57600080fd5b506103b36103ae366004610af9565b610575565b6040516001600160a01b039091168152602001610368565b61011d6103d9366004610b2e565b61058d565b3480156103ea57600080fd5b506103f3610613565b604051908152602001610368565b61011d61040f366004610b58565b610625565b34801561042057600080fd5b506103b361042f366004610af9565b6106b4565b61011d610442366004610b58565b6106c6565b34801561045357600080fd5b506103b3610462366004610af9565b6106f8565b34801561047357600080fd5b5061035c61070a565b34801561048857600080fd5b506103f3610497366004610b94565b6107c5565b3480156104a857600080fd5b50683602298b8c10b01232546001600160a01b03166103b3565b3480156104ce57600080fd5b506103866107e0565b3480156104e357600080fd5b506103b36107f1565b3480156104f857600080fd5b5061011d610507366004610baf565b610826565b61011d61051a366004610beb565b6108a9565b34801561052b57600080fd5b5061038661053a366004610af9565b610904565b34801561054b57600080fd5b5061035c61055a366004610c86565b610914565b60606105706306fdde036000610940565b905090565b600061058763081812fc8360006109a6565b92915050565b60006105976107f1565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d11166105d7573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b600061057063e2c792816000806109a6565b600061062f6107f1565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af1600182511416610685573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b600061058763243598798360006109a6565b6106d1838383610625565b813b156106f3576106f3838383604051806020016040528060008152506109ee565b505050565b6000610587636352211e8360006109a6565b60008060006107176107f1565b9050638da5cb5b600052602060006004601c845afa600c51683602298b8c10b0123254601f3d119290921660609190911c029250683602298b8c10b01230906001600160a01b0390811690841681146107ba576002820180546001600160a01b0319166001600160a01b0386811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b600194505050505090565b600061058763f5b100ea836001600160a01b031660006109a6565b60606105706395d89b416000610940565b683602298b8c10b01230546001600160a01b03168061082357604051632d9523d760e11b815260040160405180910390fd5b90565b60006108306107f1565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af160016000511416610874573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b6108b4858585610625565b833b156108fd576108fd85858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109ee92505050565b5050505050565b606061058763c87b56dd83610940565b600061093763e985e9c5846001600160a01b0316846001600160a01b03166109a6565b15159392505050565b6060600061094c6107f1565b9050604051915083600052826020526000806024601c845afa610972573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016000815260208101604052505092915050565b6000806109b16107f1565b9050604051856000528460205283604052602060006044601c855afa601f3d11166109df573d6000823e3d81fd5b60405250506000519392505050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610a35578060c08401826020870160045afa505b60208360a48301601c860160008a5af1610a58573d15610a58573d6000843e3d83fd5b508060e01b825114610a725763d1a57ed66000526004601cfd5b505050505050565b600060208284031215610a8c57600080fd5b81356001600160e01b031981168114610aa457600080fd5b9392505050565b600060208083528351808285015260005b81811015610ad857858101830151858201604001528201610abc565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610b0b57600080fd5b5035919050565b80356001600160a01b0381168114610b2957600080fd5b919050565b60008060408385031215610b4157600080fd5b610b4a83610b12565b946020939093013593505050565b600080600060608486031215610b6d57600080fd5b610b7684610b12565b9250610b8460208501610b12565b9150604084013590509250925092565b600060208284031215610ba657600080fd5b610aa482610b12565b60008060408385031215610bc257600080fd5b610bcb83610b12565b915060208301358015158114610be057600080fd5b809150509250929050565b600080600080600060808688031215610c0357600080fd5b610c0c86610b12565b9450610c1a60208701610b12565b935060408601359250606086013567ffffffffffffffff80821115610c3e57600080fd5b818801915088601f830112610c5257600080fd5b813581811115610c6157600080fd5b896020828501011115610c7357600080fd5b9699959850939650602001949392505050565b60008060408385031215610c9957600080fd5b610ca283610b12565b9150610cb060208401610b12565b9050925092905056fea26469706673582212200e87cf271d5be3cb755549d04d2284da9449cd52544c16bbfa125e8ba26a27fa64736f6c63430008140033000000000000000000000000b293d072d53baf49ac4b3ad84fbb0cbd203ba747