{ "contractName": "ERC721", "abi": [ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "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": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "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": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"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\":\"tokenId\",\"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\":\"tokenId\",\"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\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x81c02855bc239e16ec09eee000a8bec691424c715188d6d881037e69c45414c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46e3ecc8920aeb78c362a387520fe28e022cdc6d04256d9e5874eb8ff6868b6d\",\"dweb:/ipfs/QmdfCTHrV6CZMGiM3KqGF8tWkdNvGpEmWFyy72X1LAHsz2\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x51b758a8815ecc9596c66c37d56b1d33883a444631a3f916b9fe65cb863ef7c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997ca03557985b3c6f9143a18b6c3a710b3bc1c7f189ee956d305a966ecfb922\",\"dweb:/ipfs/QmQaD3Wb62F88SHqmpLttvF6wKuPDQep2LLUcKPekeRzvz\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b50604051620014e2380380620014e28339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61125080620002926000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610d60565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610dd5565b61012461011f366004610de8565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610e1d565b6103a6565b005b61014f61015f366004610e47565b6104bc565b61014f610172366004610e47565b6104ed565b610124610185366004610de8565b610508565b61019d610198366004610e83565b61057f565b6040519081526020016100f3565b610104610606565b61014f6101c1366004610e9e565b610615565b61014f6101d4366004610ef0565b610624565b6101046101e7366004610de8565b61065c565b6100e76101fa366004610fcc565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610fff565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610fff565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b182610508565b9050806001600160a01b0316836001600160a01b0316141561041f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610381565b336001600160a01b038216148061043b575061043b81336101fa565b6104ad5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610381565b6104b78383610744565b505050565b6104c633826107b2565b6104e25760405162461bcd60e51b81526004016103819061103a565b6104b78383836108a9565b6104b783838360405180602001604052806000815250610624565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610381565b60006001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610381565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610fff565b610620338383610a49565b5050565b61062e33836107b2565b61064a5760405162461bcd60e51b81526004016103819061103a565b61065684848484610b18565b50505050565b6000818152600260205260409020546060906001600160a01b03166106db5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610381565b60006106f260408051602081019091526000815290565b90506000815111610712576040518060200160405280600081525061073d565b8061071c84610b4b565b60405160200161072d92919061108b565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077982610508565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610381565b600061083683610508565b9050806001600160a01b0316846001600160a01b031614806108715750836001600160a01b03166108668461030c565b6001600160a01b0316145b806108a157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108bc82610508565b6001600160a01b0316146109245760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610381565b6001600160a01b0382166109865760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610381565b610991600082610744565b6001600160a01b03831660009081526003602052604081208054600192906109ba9084906110d0565b90915550506001600160a01b03821660009081526003602052604081208054600192906109e89084906110e7565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aab5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610381565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b238484846108a9565b610b2f84848484610c49565b6106565760405162461bcd60e51b8152600401610381906110ff565b606081610b6f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610b995780610b8381611151565b9150610b929050600a83611182565b9150610b73565b60008167ffffffffffffffff811115610bb457610bb4610eda565b6040519080825280601f01601f191660200182016040528015610bde576020820181803683370190505b5090505b84156108a157610bf36001836110d0565b9150610c00600a86611196565b610c0b9060306110e7565b60f81b818381518110610c2057610c206111aa565b60200101906001600160f81b031916908160001a905350610c42600a86611182565b9450610be2565b60006001600160a01b0384163b15610d3c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c8d9033908990889088906004016111c0565b6020604051808303816000875af1925050508015610cc8575060408051601f3d908101601f19168201909252610cc5918101906111fd565b60015b610d22573d808015610cf6576040519150601f19603f3d011682016040523d82523d6000602084013e610cfb565b606091505b508051610d1a5760405162461bcd60e51b8152600401610381906110ff565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a1565b506001949350505050565b6001600160e01b031981168114610d5d57600080fd5b50565b600060208284031215610d7257600080fd5b813561073d81610d47565b60005b83811015610d98578181015183820152602001610d80565b838111156106565750506000910152565b60008151808452610dc1816020860160208601610d7d565b601f01601f19169290920160200192915050565b60208152600061073d6020830184610da9565b600060208284031215610dfa57600080fd5b5035919050565b80356001600160a01b0381168114610e1857600080fd5b919050565b60008060408385031215610e3057600080fd5b610e3983610e01565b946020939093013593505050565b600080600060608486031215610e5c57600080fd5b610e6584610e01565b9250610e7360208501610e01565b9150604084013590509250925092565b600060208284031215610e9557600080fd5b61073d82610e01565b60008060408385031215610eb157600080fd5b610eba83610e01565b915060208301358015158114610ecf57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f0657600080fd5b610f0f85610e01565b9350610f1d60208601610e01565b925060408501359150606085013567ffffffffffffffff80821115610f4157600080fd5b818701915087601f830112610f5557600080fd5b813581811115610f6757610f67610eda565b604051601f8201601f19908116603f01168101908382118183101715610f8f57610f8f610eda565b816040528281528a6020848701011115610fa857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610fdf57600080fd5b610fe883610e01565b9150610ff660208401610e01565b90509250929050565b600181811c9082168061101357607f821691505b6020821081141561103457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000835161109d818460208801610d7d565b8351908301906110b1818360208801610d7d565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156110e2576110e26110ba565b500390565b600082198211156110fa576110fa6110ba565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000600019821415611165576111656110ba565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111915761119161116c565b500490565b6000826111a5576111a561116c565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111f390830184610da9565b9695505050505050565b60006020828403121561120f57600080fd5b815161073d81610d4756fea2646970667358221220a8c6c7e228460662c9ae59467089873187ca06d167788f3d97a9e47cf8f2e9ba64736f6c634300080b0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610d60565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610dd5565b61012461011f366004610de8565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610e1d565b6103a6565b005b61014f61015f366004610e47565b6104bc565b61014f610172366004610e47565b6104ed565b610124610185366004610de8565b610508565b61019d610198366004610e83565b61057f565b6040519081526020016100f3565b610104610606565b61014f6101c1366004610e9e565b610615565b61014f6101d4366004610ef0565b610624565b6101046101e7366004610de8565b61065c565b6100e76101fa366004610fcc565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610fff565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610fff565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b182610508565b9050806001600160a01b0316836001600160a01b0316141561041f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610381565b336001600160a01b038216148061043b575061043b81336101fa565b6104ad5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610381565b6104b78383610744565b505050565b6104c633826107b2565b6104e25760405162461bcd60e51b81526004016103819061103a565b6104b78383836108a9565b6104b783838360405180602001604052806000815250610624565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610381565b60006001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610381565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610fff565b610620338383610a49565b5050565b61062e33836107b2565b61064a5760405162461bcd60e51b81526004016103819061103a565b61065684848484610b18565b50505050565b6000818152600260205260409020546060906001600160a01b03166106db5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610381565b60006106f260408051602081019091526000815290565b90506000815111610712576040518060200160405280600081525061073d565b8061071c84610b4b565b60405160200161072d92919061108b565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077982610508565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610381565b600061083683610508565b9050806001600160a01b0316846001600160a01b031614806108715750836001600160a01b03166108668461030c565b6001600160a01b0316145b806108a157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108bc82610508565b6001600160a01b0316146109245760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610381565b6001600160a01b0382166109865760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610381565b610991600082610744565b6001600160a01b03831660009081526003602052604081208054600192906109ba9084906110d0565b90915550506001600160a01b03821660009081526003602052604081208054600192906109e89084906110e7565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aab5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610381565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b238484846108a9565b610b2f84848484610c49565b6106565760405162461bcd60e51b8152600401610381906110ff565b606081610b6f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610b995780610b8381611151565b9150610b929050600a83611182565b9150610b73565b60008167ffffffffffffffff811115610bb457610bb4610eda565b6040519080825280601f01601f191660200182016040528015610bde576020820181803683370190505b5090505b84156108a157610bf36001836110d0565b9150610c00600a86611196565b610c0b9060306110e7565b60f81b818381518110610c2057610c206111aa565b60200101906001600160f81b031916908160001a905350610c42600a86611182565b9450610be2565b60006001600160a01b0384163b15610d3c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c8d9033908990889088906004016111c0565b6020604051808303816000875af1925050508015610cc8575060408051601f3d908101601f19168201909252610cc5918101906111fd565b60015b610d22573d808015610cf6576040519150601f19603f3d011682016040523d82523d6000602084013e610cfb565b606091505b508051610d1a5760405162461bcd60e51b8152600401610381906110ff565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a1565b506001949350505050565b6001600160e01b031981168114610d5d57600080fd5b50565b600060208284031215610d7257600080fd5b813561073d81610d47565b60005b83811015610d98578181015183820152602001610d80565b838111156106565750506000910152565b60008151808452610dc1816020860160208601610d7d565b601f01601f19169290920160200192915050565b60208152600061073d6020830184610da9565b600060208284031215610dfa57600080fd5b5035919050565b80356001600160a01b0381168114610e1857600080fd5b919050565b60008060408385031215610e3057600080fd5b610e3983610e01565b946020939093013593505050565b600080600060608486031215610e5c57600080fd5b610e6584610e01565b9250610e7360208501610e01565b9150604084013590509250925092565b600060208284031215610e9557600080fd5b61073d82610e01565b60008060408385031215610eb157600080fd5b610eba83610e01565b915060208301358015158114610ecf57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f0657600080fd5b610f0f85610e01565b9350610f1d60208601610e01565b925060408501359150606085013567ffffffffffffffff80821115610f4157600080fd5b818701915087601f830112610f5557600080fd5b813581811115610f6757610f67610eda565b604051601f8201601f19908116603f01168101908382118183101715610f8f57610f8f610eda565b816040528281528a6020848701011115610fa857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610fdf57600080fd5b610fe883610e01565b9150610ff660208401610e01565b90509250929050565b600181811c9082168061101357607f821691505b6020821081141561103457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000835161109d818460208801610d7d565b8351908301906110b1818360208801610d7d565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156110e2576110e26110ba565b500390565b600082198211156110fa576110fa6110ba565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000600019821415611165576111656110ba565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111915761119161116c565b500490565b6000826111a5576111a561116c565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906111f390830184610da9565b9695505050505050565b60006020828403121561120f57600080fd5b815161073d81610d4756fea2646970667358221220a8c6c7e228460662c9ae59467089873187ca06d167788f3d97a9e47cf8f2e9ba64736f6c634300080b0033", "immutableReferences": {}, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:1985:15", "statements": [ { "nodeType": "YulBlock", "src": "6:3:15", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "46:95:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "63:1:15", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "70:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "75:10:15", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "66:3:15" }, "nodeType": "YulFunctionCall", "src": "66:20:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "56:6:15" }, "nodeType": "YulFunctionCall", "src": "56:31:15" }, "nodeType": "YulExpressionStatement", "src": "56:31:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "103:1:15", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "106:4:15", "type": "", "value": "0x41" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "96:6:15" }, "nodeType": "YulFunctionCall", "src": "96:15:15" }, "nodeType": "YulExpressionStatement", "src": "96:15:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "127:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "130:4:15", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "120:6:15" }, "nodeType": "YulFunctionCall", "src": "120:15:15" }, "nodeType": "YulExpressionStatement", "src": "120:15:15" } ] }, "name": "panic_error_0x41", "nodeType": "YulFunctionDefinition", "src": "14:127:15" }, { "body": { "nodeType": "YulBlock", "src": "210:821:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "259:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "268:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "271:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "261:6:15" }, "nodeType": "YulFunctionCall", "src": "261:12:15" }, "nodeType": "YulExpressionStatement", "src": "261:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "238:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "246:4:15", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "234:3:15" }, "nodeType": "YulFunctionCall", "src": "234:17:15" }, { "name": "end", "nodeType": "YulIdentifier", "src": "253:3:15" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "230:3:15" }, "nodeType": "YulFunctionCall", "src": "230:27:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "223:6:15" }, "nodeType": "YulFunctionCall", "src": "223:35:15" }, "nodeType": "YulIf", "src": "220:55:15" }, { "nodeType": "YulVariableDeclaration", "src": "284:23:15", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "300:6:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "294:5:15" }, "nodeType": "YulFunctionCall", "src": "294:13:15" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "288:2:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "316:28:15", "value": { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "334:2:15", "type": "", "value": "64" }, { "kind": "number", "nodeType": "YulLiteral", "src": "338:1:15", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "330:3:15" }, "nodeType": "YulFunctionCall", "src": "330:10:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "342:1:15", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "326:3:15" }, "nodeType": "YulFunctionCall", "src": "326:18:15" }, "variables": [ { "name": "_2", "nodeType": "YulTypedName", "src": "320:2:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "367:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nodeType": "YulIdentifier", "src": "369:16:15" }, "nodeType": "YulFunctionCall", "src": "369:18:15" }, "nodeType": "YulExpressionStatement", "src": "369:18:15" } ] }, "condition": { "arguments": [ { "name": "_1", "nodeType": "YulIdentifier", "src": "359:2:15" }, { "name": "_2", "nodeType": "YulIdentifier", "src": "363:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "356:2:15" }, "nodeType": "YulFunctionCall", "src": "356:10:15" }, "nodeType": "YulIf", "src": "353:36:15" }, { "nodeType": "YulVariableDeclaration", "src": "398:17:15", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "412:2:15", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "408:3:15" }, "nodeType": "YulFunctionCall", "src": "408:7:15" }, "variables": [ { "name": "_3", "nodeType": "YulTypedName", "src": "402:2:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "424:23:15", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "444:2:15", "type": "", "value": "64" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "438:5:15" }, "nodeType": "YulFunctionCall", "src": "438:9:15" }, "variables": [ { "name": "memPtr", "nodeType": "YulTypedName", "src": "428:6:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "456:71:15", "value": { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "478:6:15" }, { "arguments": [ { "arguments": [ { "arguments": [ { "arguments": [ { "name": "_1", "nodeType": "YulIdentifier", "src": "502:2:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "506:4:15", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "498:3:15" }, "nodeType": "YulFunctionCall", "src": "498:13:15" }, { "name": "_3", "nodeType": "YulIdentifier", "src": "513:2:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "494:3:15" }, "nodeType": "YulFunctionCall", "src": "494:22:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "518:2:15", "type": "", "value": "63" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "490:3:15" }, "nodeType": "YulFunctionCall", "src": "490:31:15" }, { "name": "_3", "nodeType": "YulIdentifier", "src": "523:2:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "486:3:15" }, "nodeType": "YulFunctionCall", "src": "486:40:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "474:3:15" }, "nodeType": "YulFunctionCall", "src": "474:53:15" }, "variables": [ { "name": "newFreePtr", "nodeType": "YulTypedName", "src": "460:10:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "586:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nodeType": "YulIdentifier", "src": "588:16:15" }, "nodeType": "YulFunctionCall", "src": "588:18:15" }, "nodeType": "YulExpressionStatement", "src": "588:18:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "545:10:15" }, { "name": "_2", "nodeType": "YulIdentifier", "src": "557:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "542:2:15" }, "nodeType": "YulFunctionCall", "src": "542:18:15" }, { "arguments": [ { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "565:10:15" }, { "name": "memPtr", "nodeType": "YulIdentifier", "src": "577:6:15" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "562:2:15" }, "nodeType": "YulFunctionCall", "src": "562:22:15" } ], "functionName": { "name": "or", "nodeType": "YulIdentifier", "src": "539:2:15" }, "nodeType": "YulFunctionCall", "src": "539:46:15" }, "nodeType": "YulIf", "src": "536:72:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "624:2:15", "type": "", "value": "64" }, { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "628:10:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "617:6:15" }, "nodeType": "YulFunctionCall", "src": "617:22:15" }, "nodeType": "YulExpressionStatement", "src": "617:22:15" }, { "expression": { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "655:6:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "663:2:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "648:6:15" }, "nodeType": "YulFunctionCall", "src": "648:18:15" }, "nodeType": "YulExpressionStatement", "src": "648:18:15" }, { "nodeType": "YulVariableDeclaration", "src": "675:14:15", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "685:4:15", "type": "", "value": "0x20" }, "variables": [ { "name": "_4", "nodeType": "YulTypedName", "src": "679:2:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "735:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "744:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "747:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "737:6:15" }, "nodeType": "YulFunctionCall", "src": "737:12:15" }, "nodeType": "YulExpressionStatement", "src": "737:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "712:6:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "720:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "708:3:15" }, "nodeType": "YulFunctionCall", "src": "708:15:15" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "725:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "704:3:15" }, "nodeType": "YulFunctionCall", "src": "704:24:15" }, { "name": "end", "nodeType": "YulIdentifier", "src": "730:3:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "701:2:15" }, "nodeType": "YulFunctionCall", "src": "701:33:15" }, "nodeType": "YulIf", "src": "698:53:15" }, { "nodeType": "YulVariableDeclaration", "src": "760:10:15", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "769:1:15", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "764:1:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "825:87:15", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "854:6:15" }, { "name": "i", "nodeType": "YulIdentifier", "src": "862:1:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "850:3:15" }, "nodeType": "YulFunctionCall", "src": "850:14:15" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "866:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "846:3:15" }, "nodeType": "YulFunctionCall", "src": "846:23:15" }, { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "885:6:15" }, { "name": "i", "nodeType": "YulIdentifier", "src": "893:1:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "881:3:15" }, "nodeType": "YulFunctionCall", "src": "881:14:15" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "897:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "877:3:15" }, "nodeType": "YulFunctionCall", "src": "877:23:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "871:5:15" }, "nodeType": "YulFunctionCall", "src": "871:30:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "839:6:15" }, "nodeType": "YulFunctionCall", "src": "839:63:15" }, "nodeType": "YulExpressionStatement", "src": "839:63:15" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "790:1:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "793:2:15" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "787:2:15" }, "nodeType": "YulFunctionCall", "src": "787:9:15" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "797:19:15", "statements": [ { "nodeType": "YulAssignment", "src": "799:15:15", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "808:1:15" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "811:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "804:3:15" }, "nodeType": "YulFunctionCall", "src": "804:10:15" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "799:1:15" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "783:3:15", "statements": [] }, "src": "779:133:15" }, { "body": { "nodeType": "YulBlock", "src": "942:59:15", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "971:6:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "979:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "967:3:15" }, "nodeType": "YulFunctionCall", "src": "967:15:15" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "984:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "963:3:15" }, "nodeType": "YulFunctionCall", "src": "963:24:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "989:1:15", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "956:6:15" }, "nodeType": "YulFunctionCall", "src": "956:35:15" }, "nodeType": "YulExpressionStatement", "src": "956:35:15" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "927:1:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "930:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "924:2:15" }, "nodeType": "YulFunctionCall", "src": "924:9:15" }, "nodeType": "YulIf", "src": "921:80:15" }, { "nodeType": "YulAssignment", "src": "1010:15:15", "value": { "name": "memPtr", "nodeType": "YulIdentifier", "src": "1019:6:15" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", "src": "1010:5:15" } ] } ] }, "name": "abi_decode_string_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", "src": "184:6:15", "type": "" }, { "name": "end", "nodeType": "YulTypedName", "src": "192:3:15", "type": "" } ], "returnVariables": [ { "name": "array", "nodeType": "YulTypedName", "src": "200:5:15", "type": "" } ], "src": "146:885:15" }, { "body": { "nodeType": "YulBlock", "src": "1154:444:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "1200:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1209:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1212:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "1202:6:15" }, "nodeType": "YulFunctionCall", "src": "1202:12:15" }, "nodeType": "YulExpressionStatement", "src": "1202:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "1175:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "1184:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "1171:3:15" }, "nodeType": "YulFunctionCall", "src": "1171:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1196:2:15", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "1167:3:15" }, "nodeType": "YulFunctionCall", "src": "1167:32:15" }, "nodeType": "YulIf", "src": "1164:52:15" }, { "nodeType": "YulVariableDeclaration", "src": "1225:30:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1245:9:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "1239:5:15" }, "nodeType": "YulFunctionCall", "src": "1239:16:15" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", "src": "1229:6:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "1264:28:15", "value": { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1282:2:15", "type": "", "value": "64" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1286:1:15", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "1278:3:15" }, "nodeType": "YulFunctionCall", "src": "1278:10:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1290:1:15", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "1274:3:15" }, "nodeType": "YulFunctionCall", "src": "1274:18:15" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "1268:2:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "1319:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1328:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1331:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "1321:6:15" }, "nodeType": "YulFunctionCall", "src": "1321:12:15" }, "nodeType": "YulExpressionStatement", "src": "1321:12:15" } ] }, "condition": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "1307:6:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "1315:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "1304:2:15" }, "nodeType": "YulFunctionCall", "src": "1304:14:15" }, "nodeType": "YulIf", "src": "1301:34:15" }, { "nodeType": "YulAssignment", "src": "1344:71:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1387:9:15" }, { "name": "offset", "nodeType": "YulIdentifier", "src": "1398:6:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1383:3:15" }, "nodeType": "YulFunctionCall", "src": "1383:22:15" }, { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "1407:7:15" } ], "functionName": { "name": "abi_decode_string_fromMemory", "nodeType": "YulIdentifier", "src": "1354:28:15" }, "nodeType": "YulFunctionCall", "src": "1354:61:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "1344:6:15" } ] }, { "nodeType": "YulVariableDeclaration", "src": "1424:41:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1450:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1461:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1446:3:15" }, "nodeType": "YulFunctionCall", "src": "1446:18:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "1440:5:15" }, "nodeType": "YulFunctionCall", "src": "1440:25:15" }, "variables": [ { "name": "offset_1", "nodeType": "YulTypedName", "src": "1428:8:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "1494:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1503:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1506:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "1496:6:15" }, "nodeType": "YulFunctionCall", "src": "1496:12:15" }, "nodeType": "YulExpressionStatement", "src": "1496:12:15" } ] }, "condition": { "arguments": [ { "name": "offset_1", "nodeType": "YulIdentifier", "src": "1480:8:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "1490:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "1477:2:15" }, "nodeType": "YulFunctionCall", "src": "1477:16:15" }, "nodeType": "YulIf", "src": "1474:36:15" }, { "nodeType": "YulAssignment", "src": "1519:73:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1562:9:15" }, { "name": "offset_1", "nodeType": "YulIdentifier", "src": "1573:8:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1558:3:15" }, "nodeType": "YulFunctionCall", "src": "1558:24:15" }, { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "1584:7:15" } ], "functionName": { "name": "abi_decode_string_fromMemory", "nodeType": "YulIdentifier", "src": "1529:28:15" }, "nodeType": "YulFunctionCall", "src": "1529:63:15" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "1519:6:15" } ] } ] }, "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "1112:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "1123:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "1135:6:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "1143:6:15", "type": "" } ], "src": "1036:562:15" }, { "body": { "nodeType": "YulBlock", "src": "1658:325:15", "statements": [ { "nodeType": "YulAssignment", "src": "1668:22:15", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1682:1:15", "type": "", "value": "1" }, { "name": "data", "nodeType": "YulIdentifier", "src": "1685:4:15" } ], "functionName": { "name": "shr", "nodeType": "YulIdentifier", "src": "1678:3:15" }, "nodeType": "YulFunctionCall", "src": "1678:12:15" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", "src": "1668:6:15" } ] }, { "nodeType": "YulVariableDeclaration", "src": "1699:38:15", "value": { "arguments": [ { "name": "data", "nodeType": "YulIdentifier", "src": "1729:4:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1735:1:15", "type": "", "value": "1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "1725:3:15" }, "nodeType": "YulFunctionCall", "src": "1725:12:15" }, "variables": [ { "name": "outOfPlaceEncoding", "nodeType": "YulTypedName", "src": "1703:18:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "1776:31:15", "statements": [ { "nodeType": "YulAssignment", "src": "1778:27:15", "value": { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "1792:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1800:4:15", "type": "", "value": "0x7f" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "1788:3:15" }, "nodeType": "YulFunctionCall", "src": "1788:17:15" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", "src": "1778:6:15" } ] } ] }, "condition": { "arguments": [ { "name": "outOfPlaceEncoding", "nodeType": "YulIdentifier", "src": "1756:18:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "1749:6:15" }, "nodeType": "YulFunctionCall", "src": "1749:26:15" }, "nodeType": "YulIf", "src": "1746:61:15" }, { "body": { "nodeType": "YulBlock", "src": "1866:111:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1887:1:15", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1894:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1899:10:15", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "1890:3:15" }, "nodeType": "YulFunctionCall", "src": "1890:20:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1880:6:15" }, "nodeType": "YulFunctionCall", "src": "1880:31:15" }, "nodeType": "YulExpressionStatement", "src": "1880:31:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1931:1:15", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1934:4:15", "type": "", "value": "0x22" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1924:6:15" }, "nodeType": "YulFunctionCall", "src": "1924:15:15" }, "nodeType": "YulExpressionStatement", "src": "1924:15:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1959:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1962:4:15", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "1952:6:15" }, "nodeType": "YulFunctionCall", "src": "1952:15:15" }, "nodeType": "YulExpressionStatement", "src": "1952:15:15" } ] }, "condition": { "arguments": [ { "name": "outOfPlaceEncoding", "nodeType": "YulIdentifier", "src": "1822:18:15" }, { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "1845:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1853:2:15", "type": "", "value": "32" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "1842:2:15" }, "nodeType": "YulFunctionCall", "src": "1842:14:15" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", "src": "1819:2:15" }, "nodeType": "YulFunctionCall", "src": "1819:38:15" }, "nodeType": "YulIf", "src": "1816:161:15" } ] }, "name": "extract_byte_array_length", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "data", "nodeType": "YulTypedName", "src": "1638:4:15", "type": "" } ], "returnVariables": [ { "name": "length", "nodeType": "YulTypedName", "src": "1647:6:15", "type": "" } ], "src": "1603:380:15" } ] }, "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n if gt(i, _1)\n {\n mstore(add(add(memPtr, _1), _4), 0)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}", "id": 15, "language": "Yul", "name": "#utility.yul" } ], "deployedGeneratedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:12313:15", "statements": [ { "nodeType": "YulBlock", "src": "6:3:15", "statements": [] }, { "body": { "nodeType": "YulBlock", "src": "58:87:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "123:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "132:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "135:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "125:6:15" }, "nodeType": "YulFunctionCall", "src": "125:12:15" }, "nodeType": "YulExpressionStatement", "src": "125:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "81:5:15" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "92:5:15" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "103:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "108:10:15", "type": "", "value": "0xffffffff" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "99:3:15" }, "nodeType": "YulFunctionCall", "src": "99:20:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "88:3:15" }, "nodeType": "YulFunctionCall", "src": "88:32:15" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", "src": "78:2:15" }, "nodeType": "YulFunctionCall", "src": "78:43:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "71:6:15" }, "nodeType": "YulFunctionCall", "src": "71:51:15" }, "nodeType": "YulIf", "src": "68:71:15" } ] }, "name": "validator_revert_bytes4", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", "src": "47:5:15", "type": "" } ], "src": "14:131:15" }, { "body": { "nodeType": "YulBlock", "src": "219:176:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "265:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "274:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "277:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "267:6:15" }, "nodeType": "YulFunctionCall", "src": "267:12:15" }, "nodeType": "YulExpressionStatement", "src": "267:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "240:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "249:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "236:3:15" }, "nodeType": "YulFunctionCall", "src": "236:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "261:2:15", "type": "", "value": "32" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "232:3:15" }, "nodeType": "YulFunctionCall", "src": "232:32:15" }, "nodeType": "YulIf", "src": "229:52:15" }, { "nodeType": "YulVariableDeclaration", "src": "290:36:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "316:9:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "303:12:15" }, "nodeType": "YulFunctionCall", "src": "303:23:15" }, "variables": [ { "name": "value", "nodeType": "YulTypedName", "src": "294:5:15", "type": "" } ] }, { "expression": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "359:5:15" } ], "functionName": { "name": "validator_revert_bytes4", "nodeType": "YulIdentifier", "src": "335:23:15" }, "nodeType": "YulFunctionCall", "src": "335:30:15" }, "nodeType": "YulExpressionStatement", "src": "335:30:15" }, { "nodeType": "YulAssignment", "src": "374:15:15", "value": { "name": "value", "nodeType": "YulIdentifier", "src": "384:5:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "374:6:15" } ] } ] }, "name": "abi_decode_tuple_t_bytes4", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "185:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "196:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "208:6:15", "type": "" } ], "src": "150:245:15" }, { "body": { "nodeType": "YulBlock", "src": "495:92:15", "statements": [ { "nodeType": "YulAssignment", "src": "505:26:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "517:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "528:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "513:3:15" }, "nodeType": "YulFunctionCall", "src": "513:18:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "505:4:15" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "547:9:15" }, { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "572:6:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "565:6:15" }, "nodeType": "YulFunctionCall", "src": "565:14:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "558:6:15" }, "nodeType": "YulFunctionCall", "src": "558:22:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "540:6:15" }, "nodeType": "YulFunctionCall", "src": "540:41:15" }, "nodeType": "YulExpressionStatement", "src": "540:41:15" } ] }, "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "464:9:15", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "475:6:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "486:4:15", "type": "" } ], "src": "400:187:15" }, { "body": { "nodeType": "YulBlock", "src": "645:205:15", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "655:10:15", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "664:1:15", "type": "", "value": "0" }, "variables": [ { "name": "i", "nodeType": "YulTypedName", "src": "659:1:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "724:63:15", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "749:3:15" }, { "name": "i", "nodeType": "YulIdentifier", "src": "754:1:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "745:3:15" }, "nodeType": "YulFunctionCall", "src": "745:11:15" }, { "arguments": [ { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "768:3:15" }, { "name": "i", "nodeType": "YulIdentifier", "src": "773:1:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "764:3:15" }, "nodeType": "YulFunctionCall", "src": "764:11:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "758:5:15" }, "nodeType": "YulFunctionCall", "src": "758:18:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "738:6:15" }, "nodeType": "YulFunctionCall", "src": "738:39:15" }, "nodeType": "YulExpressionStatement", "src": "738:39:15" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "685:1:15" }, { "name": "length", "nodeType": "YulIdentifier", "src": "688:6:15" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "682:2:15" }, "nodeType": "YulFunctionCall", "src": "682:13:15" }, "nodeType": "YulForLoop", "post": { "nodeType": "YulBlock", "src": "696:19:15", "statements": [ { "nodeType": "YulAssignment", "src": "698:15:15", "value": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "707:1:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "710:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "703:3:15" }, "nodeType": "YulFunctionCall", "src": "703:10:15" }, "variableNames": [ { "name": "i", "nodeType": "YulIdentifier", "src": "698:1:15" } ] } ] }, "pre": { "nodeType": "YulBlock", "src": "678:3:15", "statements": [] }, "src": "674:113:15" }, { "body": { "nodeType": "YulBlock", "src": "813:31:15", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "name": "dst", "nodeType": "YulIdentifier", "src": "826:3:15" }, { "name": "length", "nodeType": "YulIdentifier", "src": "831:6:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "822:3:15" }, "nodeType": "YulFunctionCall", "src": "822:16:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "840:1:15", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "815:6:15" }, "nodeType": "YulFunctionCall", "src": "815:27:15" }, "nodeType": "YulExpressionStatement", "src": "815:27:15" } ] }, "condition": { "arguments": [ { "name": "i", "nodeType": "YulIdentifier", "src": "802:1:15" }, { "name": "length", "nodeType": "YulIdentifier", "src": "805:6:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "799:2:15" }, "nodeType": "YulFunctionCall", "src": "799:13:15" }, "nodeType": "YulIf", "src": "796:48:15" } ] }, "name": "copy_memory_to_memory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "src", "nodeType": "YulTypedName", "src": "623:3:15", "type": "" }, { "name": "dst", "nodeType": "YulTypedName", "src": "628:3:15", "type": "" }, { "name": "length", "nodeType": "YulTypedName", "src": "633:6:15", "type": "" } ], "src": "592:258:15" }, { "body": { "nodeType": "YulBlock", "src": "905:208:15", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "915:26:15", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "935:5:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "929:5:15" }, "nodeType": "YulFunctionCall", "src": "929:12:15" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "919:6:15", "type": "" } ] }, { "expression": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", "src": "957:3:15" }, { "name": "length", "nodeType": "YulIdentifier", "src": "962:6:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "950:6:15" }, "nodeType": "YulFunctionCall", "src": "950:19:15" }, "nodeType": "YulExpressionStatement", "src": "950:19:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "1004:5:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1011:4:15", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1000:3:15" }, "nodeType": "YulFunctionCall", "src": "1000:16:15" }, { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", "src": "1022:3:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1027:4:15", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1018:3:15" }, "nodeType": "YulFunctionCall", "src": "1018:14:15" }, { "name": "length", "nodeType": "YulIdentifier", "src": "1034:6:15" } ], "functionName": { "name": "copy_memory_to_memory", "nodeType": "YulIdentifier", "src": "978:21:15" }, "nodeType": "YulFunctionCall", "src": "978:63:15" }, "nodeType": "YulExpressionStatement", "src": "978:63:15" }, { "nodeType": "YulAssignment", "src": "1050:57:15", "value": { "arguments": [ { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", "src": "1065:3:15" }, { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "1078:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1086:2:15", "type": "", "value": "31" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1074:3:15" }, "nodeType": "YulFunctionCall", "src": "1074:15:15" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1095:2:15", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "1091:3:15" }, "nodeType": "YulFunctionCall", "src": "1091:7:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "1070:3:15" }, "nodeType": "YulFunctionCall", "src": "1070:29:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1061:3:15" }, "nodeType": "YulFunctionCall", "src": "1061:39:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1102:4:15", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1057:3:15" }, "nodeType": "YulFunctionCall", "src": "1057:50:15" }, "variableNames": [ { "name": "end", "nodeType": "YulIdentifier", "src": "1050:3:15" } ] } ] }, "name": "abi_encode_string", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", "src": "882:5:15", "type": "" }, { "name": "pos", "nodeType": "YulTypedName", "src": "889:3:15", "type": "" } ], "returnVariables": [ { "name": "end", "nodeType": "YulTypedName", "src": "897:3:15", "type": "" } ], "src": "855:258:15" }, { "body": { "nodeType": "YulBlock", "src": "1239:99:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1256:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1267:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1249:6:15" }, "nodeType": "YulFunctionCall", "src": "1249:21:15" }, "nodeType": "YulExpressionStatement", "src": "1249:21:15" }, { "nodeType": "YulAssignment", "src": "1279:53:15", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "1305:6:15" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1317:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1328:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1313:3:15" }, "nodeType": "YulFunctionCall", "src": "1313:18:15" } ], "functionName": { "name": "abi_encode_string", "nodeType": "YulIdentifier", "src": "1287:17:15" }, "nodeType": "YulFunctionCall", "src": "1287:45:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "1279:4:15" } ] } ] }, "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "1208:9:15", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "1219:6:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "1230:4:15", "type": "" } ], "src": "1118:220:15" }, { "body": { "nodeType": "YulBlock", "src": "1413:110:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "1459:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1468:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1471:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "1461:6:15" }, "nodeType": "YulFunctionCall", "src": "1461:12:15" }, "nodeType": "YulExpressionStatement", "src": "1461:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "1434:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "1443:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "1430:3:15" }, "nodeType": "YulFunctionCall", "src": "1430:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1455:2:15", "type": "", "value": "32" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "1426:3:15" }, "nodeType": "YulFunctionCall", "src": "1426:32:15" }, "nodeType": "YulIf", "src": "1423:52:15" }, { "nodeType": "YulAssignment", "src": "1484:33:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1507:9:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "1494:12:15" }, "nodeType": "YulFunctionCall", "src": "1494:23:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "1484:6:15" } ] } ] }, "name": "abi_decode_tuple_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "1379:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "1390:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "1402:6:15", "type": "" } ], "src": "1343:180:15" }, { "body": { "nodeType": "YulBlock", "src": "1629:102:15", "statements": [ { "nodeType": "YulAssignment", "src": "1639:26:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1651:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1662:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "1647:3:15" }, "nodeType": "YulFunctionCall", "src": "1647:18:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "1639:4:15" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "1681:9:15" }, { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "1696:6:15" }, { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1712:3:15", "type": "", "value": "160" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1717:1:15", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "1708:3:15" }, "nodeType": "YulFunctionCall", "src": "1708:11:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1721:1:15", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "1704:3:15" }, "nodeType": "YulFunctionCall", "src": "1704:19:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "1692:3:15" }, "nodeType": "YulFunctionCall", "src": "1692:32:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "1674:6:15" }, "nodeType": "YulFunctionCall", "src": "1674:51:15" }, "nodeType": "YulExpressionStatement", "src": "1674:51:15" } ] }, "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "1598:9:15", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "1609:6:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "1620:4:15", "type": "" } ], "src": "1528:203:15" }, { "body": { "nodeType": "YulBlock", "src": "1785:124:15", "statements": [ { "nodeType": "YulAssignment", "src": "1795:29:15", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "1817:6:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "1804:12:15" }, "nodeType": "YulFunctionCall", "src": "1804:20:15" }, "variableNames": [ { "name": "value", "nodeType": "YulIdentifier", "src": "1795:5:15" } ] }, { "body": { "nodeType": "YulBlock", "src": "1887:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1896:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1899:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "1889:6:15" }, "nodeType": "YulFunctionCall", "src": "1889:12:15" }, "nodeType": "YulExpressionStatement", "src": "1889:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "1846:5:15" }, { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "1857:5:15" }, { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1872:3:15", "type": "", "value": "160" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1877:1:15", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "1868:3:15" }, "nodeType": "YulFunctionCall", "src": "1868:11:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1881:1:15", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "1864:3:15" }, "nodeType": "YulFunctionCall", "src": "1864:19:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "1853:3:15" }, "nodeType": "YulFunctionCall", "src": "1853:31:15" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", "src": "1843:2:15" }, "nodeType": "YulFunctionCall", "src": "1843:42:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "1836:6:15" }, "nodeType": "YulFunctionCall", "src": "1836:50:15" }, "nodeType": "YulIf", "src": "1833:70:15" } ] }, "name": "abi_decode_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "offset", "nodeType": "YulTypedName", "src": "1764:6:15", "type": "" } ], "returnVariables": [ { "name": "value", "nodeType": "YulTypedName", "src": "1775:5:15", "type": "" } ], "src": "1736:173:15" }, { "body": { "nodeType": "YulBlock", "src": "2001:167:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "2047:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "2056:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2059:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "2049:6:15" }, "nodeType": "YulFunctionCall", "src": "2049:12:15" }, "nodeType": "YulExpressionStatement", "src": "2049:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "2022:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "2031:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "2018:3:15" }, "nodeType": "YulFunctionCall", "src": "2018:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2043:2:15", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "2014:3:15" }, "nodeType": "YulFunctionCall", "src": "2014:32:15" }, "nodeType": "YulIf", "src": "2011:52:15" }, { "nodeType": "YulAssignment", "src": "2072:39:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2101:9:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "2082:18:15" }, "nodeType": "YulFunctionCall", "src": "2082:29:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "2072:6:15" } ] }, { "nodeType": "YulAssignment", "src": "2120:42:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2147:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2158:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "2143:3:15" }, "nodeType": "YulFunctionCall", "src": "2143:18:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "2130:12:15" }, "nodeType": "YulFunctionCall", "src": "2130:32:15" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "2120:6:15" } ] } ] }, "name": "abi_decode_tuple_t_addresst_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "1959:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "1970:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "1982:6:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "1990:6:15", "type": "" } ], "src": "1914:254:15" }, { "body": { "nodeType": "YulBlock", "src": "2277:224:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "2323:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "2332:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2335:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "2325:6:15" }, "nodeType": "YulFunctionCall", "src": "2325:12:15" }, "nodeType": "YulExpressionStatement", "src": "2325:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "2298:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "2307:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "2294:3:15" }, "nodeType": "YulFunctionCall", "src": "2294:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2319:2:15", "type": "", "value": "96" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "2290:3:15" }, "nodeType": "YulFunctionCall", "src": "2290:32:15" }, "nodeType": "YulIf", "src": "2287:52:15" }, { "nodeType": "YulAssignment", "src": "2348:39:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2377:9:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "2358:18:15" }, "nodeType": "YulFunctionCall", "src": "2358:29:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "2348:6:15" } ] }, { "nodeType": "YulAssignment", "src": "2396:48:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2429:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2440:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "2425:3:15" }, "nodeType": "YulFunctionCall", "src": "2425:18:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "2406:18:15" }, "nodeType": "YulFunctionCall", "src": "2406:38:15" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "2396:6:15" } ] }, { "nodeType": "YulAssignment", "src": "2453:42:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2480:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2491:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "2476:3:15" }, "nodeType": "YulFunctionCall", "src": "2476:18:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "2463:12:15" }, "nodeType": "YulFunctionCall", "src": "2463:32:15" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", "src": "2453:6:15" } ] } ] }, "name": "abi_decode_tuple_t_addresst_addresst_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "2227:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "2238:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "2250:6:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "2258:6:15", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", "src": "2266:6:15", "type": "" } ], "src": "2173:328:15" }, { "body": { "nodeType": "YulBlock", "src": "2576:116:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "2622:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "2631:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2634:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "2624:6:15" }, "nodeType": "YulFunctionCall", "src": "2624:12:15" }, "nodeType": "YulExpressionStatement", "src": "2624:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "2597:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "2606:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "2593:3:15" }, "nodeType": "YulFunctionCall", "src": "2593:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2618:2:15", "type": "", "value": "32" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "2589:3:15" }, "nodeType": "YulFunctionCall", "src": "2589:32:15" }, "nodeType": "YulIf", "src": "2586:52:15" }, { "nodeType": "YulAssignment", "src": "2647:39:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2676:9:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "2657:18:15" }, "nodeType": "YulFunctionCall", "src": "2657:29:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "2647:6:15" } ] } ] }, "name": "abi_decode_tuple_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "2542:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "2553:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "2565:6:15", "type": "" } ], "src": "2506:186:15" }, { "body": { "nodeType": "YulBlock", "src": "2798:76:15", "statements": [ { "nodeType": "YulAssignment", "src": "2808:26:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2820:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2831:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "2816:3:15" }, "nodeType": "YulFunctionCall", "src": "2816:18:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "2808:4:15" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "2850:9:15" }, { "name": "value0", "nodeType": "YulIdentifier", "src": "2861:6:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "2843:6:15" }, "nodeType": "YulFunctionCall", "src": "2843:25:15" }, "nodeType": "YulExpressionStatement", "src": "2843:25:15" } ] }, "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "2767:9:15", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "2778:6:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "2789:4:15", "type": "" } ], "src": "2697:177:15" }, { "body": { "nodeType": "YulBlock", "src": "2963:263:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "3009:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3018:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3021:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "3011:6:15" }, "nodeType": "YulFunctionCall", "src": "3011:12:15" }, "nodeType": "YulExpressionStatement", "src": "3011:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "2984:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "2993:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "2980:3:15" }, "nodeType": "YulFunctionCall", "src": "2980:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3005:2:15", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "2976:3:15" }, "nodeType": "YulFunctionCall", "src": "2976:32:15" }, "nodeType": "YulIf", "src": "2973:52:15" }, { "nodeType": "YulAssignment", "src": "3034:39:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "3063:9:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "3044:18:15" }, "nodeType": "YulFunctionCall", "src": "3044:29:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "3034:6:15" } ] }, { "nodeType": "YulVariableDeclaration", "src": "3082:45:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "3112:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3123:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "3108:3:15" }, "nodeType": "YulFunctionCall", "src": "3108:18:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "3095:12:15" }, "nodeType": "YulFunctionCall", "src": "3095:32:15" }, "variables": [ { "name": "value", "nodeType": "YulTypedName", "src": "3086:5:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "3180:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3189:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3192:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "3182:6:15" }, "nodeType": "YulFunctionCall", "src": "3182:12:15" }, "nodeType": "YulExpressionStatement", "src": "3182:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "3149:5:15" }, { "arguments": [ { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "3170:5:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "3163:6:15" }, "nodeType": "YulFunctionCall", "src": "3163:13:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "3156:6:15" }, "nodeType": "YulFunctionCall", "src": "3156:21:15" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", "src": "3146:2:15" }, "nodeType": "YulFunctionCall", "src": "3146:32:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "3139:6:15" }, "nodeType": "YulFunctionCall", "src": "3139:40:15" }, "nodeType": "YulIf", "src": "3136:60:15" }, { "nodeType": "YulAssignment", "src": "3205:15:15", "value": { "name": "value", "nodeType": "YulIdentifier", "src": "3215:5:15" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "3205:6:15" } ] } ] }, "name": "abi_decode_tuple_t_addresst_bool", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "2921:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "2932:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "2944:6:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "2952:6:15", "type": "" } ], "src": "2879:347:15" }, { "body": { "nodeType": "YulBlock", "src": "3263:95:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3280:1:15", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3287:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3292:10:15", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "3283:3:15" }, "nodeType": "YulFunctionCall", "src": "3283:20:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "3273:6:15" }, "nodeType": "YulFunctionCall", "src": "3273:31:15" }, "nodeType": "YulExpressionStatement", "src": "3273:31:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3320:1:15", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3323:4:15", "type": "", "value": "0x41" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "3313:6:15" }, "nodeType": "YulFunctionCall", "src": "3313:15:15" }, "nodeType": "YulExpressionStatement", "src": "3313:15:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3344:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3347:4:15", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "3337:6:15" }, "nodeType": "YulFunctionCall", "src": "3337:15:15" }, "nodeType": "YulExpressionStatement", "src": "3337:15:15" } ] }, "name": "panic_error_0x41", "nodeType": "YulFunctionDefinition", "src": "3231:127:15" }, { "body": { "nodeType": "YulBlock", "src": "3493:1008:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "3540:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3549:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3552:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "3542:6:15" }, "nodeType": "YulFunctionCall", "src": "3542:12:15" }, "nodeType": "YulExpressionStatement", "src": "3542:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "3514:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "3523:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "3510:3:15" }, "nodeType": "YulFunctionCall", "src": "3510:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3535:3:15", "type": "", "value": "128" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "3506:3:15" }, "nodeType": "YulFunctionCall", "src": "3506:33:15" }, "nodeType": "YulIf", "src": "3503:53:15" }, { "nodeType": "YulAssignment", "src": "3565:39:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "3594:9:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "3575:18:15" }, "nodeType": "YulFunctionCall", "src": "3575:29:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "3565:6:15" } ] }, { "nodeType": "YulAssignment", "src": "3613:48:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "3646:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3657:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "3642:3:15" }, "nodeType": "YulFunctionCall", "src": "3642:18:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "3623:18:15" }, "nodeType": "YulFunctionCall", "src": "3623:38:15" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "3613:6:15" } ] }, { "nodeType": "YulAssignment", "src": "3670:42:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "3697:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3708:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "3693:3:15" }, "nodeType": "YulFunctionCall", "src": "3693:18:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "3680:12:15" }, "nodeType": "YulFunctionCall", "src": "3680:32:15" }, "variableNames": [ { "name": "value2", "nodeType": "YulIdentifier", "src": "3670:6:15" } ] }, { "nodeType": "YulVariableDeclaration", "src": "3721:46:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "3752:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3763:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "3748:3:15" }, "nodeType": "YulFunctionCall", "src": "3748:18:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "3735:12:15" }, "nodeType": "YulFunctionCall", "src": "3735:32:15" }, "variables": [ { "name": "offset", "nodeType": "YulTypedName", "src": "3725:6:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "3776:28:15", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "3786:18:15", "type": "", "value": "0xffffffffffffffff" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "3780:2:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "3831:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3840:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3843:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "3833:6:15" }, "nodeType": "YulFunctionCall", "src": "3833:12:15" }, "nodeType": "YulExpressionStatement", "src": "3833:12:15" } ] }, "condition": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "3819:6:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "3827:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "3816:2:15" }, "nodeType": "YulFunctionCall", "src": "3816:14:15" }, "nodeType": "YulIf", "src": "3813:34:15" }, { "nodeType": "YulVariableDeclaration", "src": "3856:32:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "3870:9:15" }, { "name": "offset", "nodeType": "YulIdentifier", "src": "3881:6:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "3866:3:15" }, "nodeType": "YulFunctionCall", "src": "3866:22:15" }, "variables": [ { "name": "_2", "nodeType": "YulTypedName", "src": "3860:2:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "3936:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "3945:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3948:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "3938:6:15" }, "nodeType": "YulFunctionCall", "src": "3938:12:15" }, "nodeType": "YulExpressionStatement", "src": "3938:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "_2", "nodeType": "YulIdentifier", "src": "3915:2:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "3919:4:15", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "3911:3:15" }, "nodeType": "YulFunctionCall", "src": "3911:13:15" }, { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "3926:7:15" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "3907:3:15" }, "nodeType": "YulFunctionCall", "src": "3907:27:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "3900:6:15" }, "nodeType": "YulFunctionCall", "src": "3900:35:15" }, "nodeType": "YulIf", "src": "3897:55:15" }, { "nodeType": "YulVariableDeclaration", "src": "3961:26:15", "value": { "arguments": [ { "name": "_2", "nodeType": "YulIdentifier", "src": "3984:2:15" } ], "functionName": { "name": "calldataload", "nodeType": "YulIdentifier", "src": "3971:12:15" }, "nodeType": "YulFunctionCall", "src": "3971:16:15" }, "variables": [ { "name": "_3", "nodeType": "YulTypedName", "src": "3965:2:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "4010:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nodeType": "YulIdentifier", "src": "4012:16:15" }, "nodeType": "YulFunctionCall", "src": "4012:18:15" }, "nodeType": "YulExpressionStatement", "src": "4012:18:15" } ] }, "condition": { "arguments": [ { "name": "_3", "nodeType": "YulIdentifier", "src": "4002:2:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "4006:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "3999:2:15" }, "nodeType": "YulFunctionCall", "src": "3999:10:15" }, "nodeType": "YulIf", "src": "3996:36:15" }, { "nodeType": "YulVariableDeclaration", "src": "4041:17:15", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "4055:2:15", "type": "", "value": "31" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "4051:3:15" }, "nodeType": "YulFunctionCall", "src": "4051:7:15" }, "variables": [ { "name": "_4", "nodeType": "YulTypedName", "src": "4045:2:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "4067:23:15", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "4087:2:15", "type": "", "value": "64" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "4081:5:15" }, "nodeType": "YulFunctionCall", "src": "4081:9:15" }, "variables": [ { "name": "memPtr", "nodeType": "YulTypedName", "src": "4071:6:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "4099:71:15", "value": { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "4121:6:15" }, { "arguments": [ { "arguments": [ { "arguments": [ { "arguments": [ { "name": "_3", "nodeType": "YulIdentifier", "src": "4145:2:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4149:4:15", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4141:3:15" }, "nodeType": "YulFunctionCall", "src": "4141:13:15" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "4156:2:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "4137:3:15" }, "nodeType": "YulFunctionCall", "src": "4137:22:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4161:2:15", "type": "", "value": "63" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4133:3:15" }, "nodeType": "YulFunctionCall", "src": "4133:31:15" }, { "name": "_4", "nodeType": "YulIdentifier", "src": "4166:2:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "4129:3:15" }, "nodeType": "YulFunctionCall", "src": "4129:40:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4117:3:15" }, "nodeType": "YulFunctionCall", "src": "4117:53:15" }, "variables": [ { "name": "newFreePtr", "nodeType": "YulTypedName", "src": "4103:10:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "4229:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x41", "nodeType": "YulIdentifier", "src": "4231:16:15" }, "nodeType": "YulFunctionCall", "src": "4231:18:15" }, "nodeType": "YulExpressionStatement", "src": "4231:18:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "4188:10:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "4200:2:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "4185:2:15" }, "nodeType": "YulFunctionCall", "src": "4185:18:15" }, { "arguments": [ { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "4208:10:15" }, { "name": "memPtr", "nodeType": "YulIdentifier", "src": "4220:6:15" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "4205:2:15" }, "nodeType": "YulFunctionCall", "src": "4205:22:15" } ], "functionName": { "name": "or", "nodeType": "YulIdentifier", "src": "4182:2:15" }, "nodeType": "YulFunctionCall", "src": "4182:46:15" }, "nodeType": "YulIf", "src": "4179:72:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "4267:2:15", "type": "", "value": "64" }, { "name": "newFreePtr", "nodeType": "YulIdentifier", "src": "4271:10:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "4260:6:15" }, "nodeType": "YulFunctionCall", "src": "4260:22:15" }, "nodeType": "YulExpressionStatement", "src": "4260:22:15" }, { "expression": { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "4298:6:15" }, { "name": "_3", "nodeType": "YulIdentifier", "src": "4306:2:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "4291:6:15" }, "nodeType": "YulFunctionCall", "src": "4291:18:15" }, "nodeType": "YulExpressionStatement", "src": "4291:18:15" }, { "body": { "nodeType": "YulBlock", "src": "4355:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "4364:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4367:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "4357:6:15" }, "nodeType": "YulFunctionCall", "src": "4357:12:15" }, "nodeType": "YulExpressionStatement", "src": "4357:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "_2", "nodeType": "YulIdentifier", "src": "4332:2:15" }, { "name": "_3", "nodeType": "YulIdentifier", "src": "4336:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4328:3:15" }, "nodeType": "YulFunctionCall", "src": "4328:11:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4341:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4324:3:15" }, "nodeType": "YulFunctionCall", "src": "4324:20:15" }, { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "4346:7:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "4321:2:15" }, "nodeType": "YulFunctionCall", "src": "4321:33:15" }, "nodeType": "YulIf", "src": "4318:53:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "4397:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4405:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4393:3:15" }, "nodeType": "YulFunctionCall", "src": "4393:15:15" }, { "arguments": [ { "name": "_2", "nodeType": "YulIdentifier", "src": "4414:2:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4418:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4410:3:15" }, "nodeType": "YulFunctionCall", "src": "4410:11:15" }, { "name": "_3", "nodeType": "YulIdentifier", "src": "4423:2:15" } ], "functionName": { "name": "calldatacopy", "nodeType": "YulIdentifier", "src": "4380:12:15" }, "nodeType": "YulFunctionCall", "src": "4380:46:15" }, "nodeType": "YulExpressionStatement", "src": "4380:46:15" }, { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "memPtr", "nodeType": "YulIdentifier", "src": "4450:6:15" }, { "name": "_3", "nodeType": "YulIdentifier", "src": "4458:2:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4446:3:15" }, "nodeType": "YulFunctionCall", "src": "4446:15:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4463:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4442:3:15" }, "nodeType": "YulFunctionCall", "src": "4442:24:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4468:1:15", "type": "", "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "4435:6:15" }, "nodeType": "YulFunctionCall", "src": "4435:35:15" }, "nodeType": "YulExpressionStatement", "src": "4435:35:15" }, { "nodeType": "YulAssignment", "src": "4479:16:15", "value": { "name": "memPtr", "nodeType": "YulIdentifier", "src": "4489:6:15" }, "variableNames": [ { "name": "value3", "nodeType": "YulIdentifier", "src": "4479:6:15" } ] } ] }, "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "3435:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "3446:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "3458:6:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "3466:6:15", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", "src": "3474:6:15", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", "src": "3482:6:15", "type": "" } ], "src": "3363:1138:15" }, { "body": { "nodeType": "YulBlock", "src": "4593:173:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "4639:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "4648:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4651:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "4641:6:15" }, "nodeType": "YulFunctionCall", "src": "4641:12:15" }, "nodeType": "YulExpressionStatement", "src": "4641:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "4614:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "4623:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "4610:3:15" }, "nodeType": "YulFunctionCall", "src": "4610:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4635:2:15", "type": "", "value": "64" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "4606:3:15" }, "nodeType": "YulFunctionCall", "src": "4606:32:15" }, "nodeType": "YulIf", "src": "4603:52:15" }, { "nodeType": "YulAssignment", "src": "4664:39:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "4693:9:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "4674:18:15" }, "nodeType": "YulFunctionCall", "src": "4674:29:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "4664:6:15" } ] }, { "nodeType": "YulAssignment", "src": "4712:48:15", "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "4745:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4756:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "4741:3:15" }, "nodeType": "YulFunctionCall", "src": "4741:18:15" } ], "functionName": { "name": "abi_decode_address", "nodeType": "YulIdentifier", "src": "4722:18:15" }, "nodeType": "YulFunctionCall", "src": "4722:38:15" }, "variableNames": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "4712:6:15" } ] } ] }, "name": "abi_decode_tuple_t_addresst_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "4551:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "4562:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "4574:6:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "4582:6:15", "type": "" } ], "src": "4506:260:15" }, { "body": { "nodeType": "YulBlock", "src": "4826:325:15", "statements": [ { "nodeType": "YulAssignment", "src": "4836:22:15", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "4850:1:15", "type": "", "value": "1" }, { "name": "data", "nodeType": "YulIdentifier", "src": "4853:4:15" } ], "functionName": { "name": "shr", "nodeType": "YulIdentifier", "src": "4846:3:15" }, "nodeType": "YulFunctionCall", "src": "4846:12:15" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", "src": "4836:6:15" } ] }, { "nodeType": "YulVariableDeclaration", "src": "4867:38:15", "value": { "arguments": [ { "name": "data", "nodeType": "YulIdentifier", "src": "4897:4:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4903:1:15", "type": "", "value": "1" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "4893:3:15" }, "nodeType": "YulFunctionCall", "src": "4893:12:15" }, "variables": [ { "name": "outOfPlaceEncoding", "nodeType": "YulTypedName", "src": "4871:18:15", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "4944:31:15", "statements": [ { "nodeType": "YulAssignment", "src": "4946:27:15", "value": { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "4960:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "4968:4:15", "type": "", "value": "0x7f" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "4956:3:15" }, "nodeType": "YulFunctionCall", "src": "4956:17:15" }, "variableNames": [ { "name": "length", "nodeType": "YulIdentifier", "src": "4946:6:15" } ] } ] }, "condition": { "arguments": [ { "name": "outOfPlaceEncoding", "nodeType": "YulIdentifier", "src": "4924:18:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "4917:6:15" }, "nodeType": "YulFunctionCall", "src": "4917:26:15" }, "nodeType": "YulIf", "src": "4914:61:15" }, { "body": { "nodeType": "YulBlock", "src": "5034:111:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "5055:1:15", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "5062:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5067:10:15", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "5058:3:15" }, "nodeType": "YulFunctionCall", "src": "5058:20:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5048:6:15" }, "nodeType": "YulFunctionCall", "src": "5048:31:15" }, "nodeType": "YulExpressionStatement", "src": "5048:31:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "5099:1:15", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5102:4:15", "type": "", "value": "0x22" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5092:6:15" }, "nodeType": "YulFunctionCall", "src": "5092:15:15" }, "nodeType": "YulExpressionStatement", "src": "5092:15:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "5127:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5130:4:15", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "5120:6:15" }, "nodeType": "YulFunctionCall", "src": "5120:15:15" }, "nodeType": "YulExpressionStatement", "src": "5120:15:15" } ] }, "condition": { "arguments": [ { "name": "outOfPlaceEncoding", "nodeType": "YulIdentifier", "src": "4990:18:15" }, { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "5013:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5021:2:15", "type": "", "value": "32" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "5010:2:15" }, "nodeType": "YulFunctionCall", "src": "5010:14:15" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", "src": "4987:2:15" }, "nodeType": "YulFunctionCall", "src": "4987:38:15" }, "nodeType": "YulIf", "src": "4984:161:15" } ] }, "name": "extract_byte_array_length", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "data", "nodeType": "YulTypedName", "src": "4806:4:15", "type": "" } ], "returnVariables": [ { "name": "length", "nodeType": "YulTypedName", "src": "4815:6:15", "type": "" } ], "src": "4771:380:15" }, { "body": { "nodeType": "YulBlock", "src": "5330:234:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5347:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5358:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5340:6:15" }, "nodeType": "YulFunctionCall", "src": "5340:21:15" }, "nodeType": "YulExpressionStatement", "src": "5340:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5381:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5392:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5377:3:15" }, "nodeType": "YulFunctionCall", "src": "5377:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5397:2:15", "type": "", "value": "44" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5370:6:15" }, "nodeType": "YulFunctionCall", "src": "5370:30:15" }, "nodeType": "YulExpressionStatement", "src": "5370:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5420:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5431:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5416:3:15" }, "nodeType": "YulFunctionCall", "src": "5416:18:15" }, { "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578", "kind": "string", "nodeType": "YulLiteral", "src": "5436:34:15", "type": "", "value": "ERC721: approved query for nonex" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5409:6:15" }, "nodeType": "YulFunctionCall", "src": "5409:62:15" }, "nodeType": "YulExpressionStatement", "src": "5409:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5491:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5502:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5487:3:15" }, "nodeType": "YulFunctionCall", "src": "5487:18:15" }, { "hexValue": "697374656e7420746f6b656e", "kind": "string", "nodeType": "YulLiteral", "src": "5507:14:15", "type": "", "value": "istent token" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5480:6:15" }, "nodeType": "YulFunctionCall", "src": "5480:42:15" }, "nodeType": "YulExpressionStatement", "src": "5480:42:15" }, { "nodeType": "YulAssignment", "src": "5531:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5543:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5554:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5539:3:15" }, "nodeType": "YulFunctionCall", "src": "5539:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "5531:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "5307:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "5321:4:15", "type": "" } ], "src": "5156:408:15" }, { "body": { "nodeType": "YulBlock", "src": "5743:223:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5760:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5771:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5753:6:15" }, "nodeType": "YulFunctionCall", "src": "5753:21:15" }, "nodeType": "YulExpressionStatement", "src": "5753:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5794:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5805:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5790:3:15" }, "nodeType": "YulFunctionCall", "src": "5790:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5810:2:15", "type": "", "value": "33" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5783:6:15" }, "nodeType": "YulFunctionCall", "src": "5783:30:15" }, "nodeType": "YulExpressionStatement", "src": "5783:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5833:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5844:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5829:3:15" }, "nodeType": "YulFunctionCall", "src": "5829:18:15" }, { "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e65", "kind": "string", "nodeType": "YulLiteral", "src": "5849:34:15", "type": "", "value": "ERC721: approval to current owne" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5822:6:15" }, "nodeType": "YulFunctionCall", "src": "5822:62:15" }, "nodeType": "YulExpressionStatement", "src": "5822:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5904:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5915:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5900:3:15" }, "nodeType": "YulFunctionCall", "src": "5900:18:15" }, { "hexValue": "72", "kind": "string", "nodeType": "YulLiteral", "src": "5920:3:15", "type": "", "value": "r" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "5893:6:15" }, "nodeType": "YulFunctionCall", "src": "5893:31:15" }, "nodeType": "YulExpressionStatement", "src": "5893:31:15" }, { "nodeType": "YulAssignment", "src": "5933:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "5945:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5956:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5941:3:15" }, "nodeType": "YulFunctionCall", "src": "5941:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "5933:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "5720:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "5734:4:15", "type": "" } ], "src": "5569:397:15" }, { "body": { "nodeType": "YulBlock", "src": "6145:246:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6162:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6173:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6155:6:15" }, "nodeType": "YulFunctionCall", "src": "6155:21:15" }, "nodeType": "YulExpressionStatement", "src": "6155:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6196:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6207:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6192:3:15" }, "nodeType": "YulFunctionCall", "src": "6192:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6212:2:15", "type": "", "value": "56" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6185:6:15" }, "nodeType": "YulFunctionCall", "src": "6185:30:15" }, "nodeType": "YulExpressionStatement", "src": "6185:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6235:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6246:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6231:3:15" }, "nodeType": "YulFunctionCall", "src": "6231:18:15" }, { "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f77", "kind": "string", "nodeType": "YulLiteral", "src": "6251:34:15", "type": "", "value": "ERC721: approve caller is not ow" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6224:6:15" }, "nodeType": "YulFunctionCall", "src": "6224:62:15" }, "nodeType": "YulExpressionStatement", "src": "6224:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6306:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6317:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6302:3:15" }, "nodeType": "YulFunctionCall", "src": "6302:18:15" }, { "hexValue": "6e6572206e6f7220617070726f76656420666f7220616c6c", "kind": "string", "nodeType": "YulLiteral", "src": "6322:26:15", "type": "", "value": "ner nor approved for all" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6295:6:15" }, "nodeType": "YulFunctionCall", "src": "6295:54:15" }, "nodeType": "YulExpressionStatement", "src": "6295:54:15" }, { "nodeType": "YulAssignment", "src": "6358:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6370:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6381:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6366:3:15" }, "nodeType": "YulFunctionCall", "src": "6366:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "6358:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "6122:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "6136:4:15", "type": "" } ], "src": "5971:420:15" }, { "body": { "nodeType": "YulBlock", "src": "6570:239:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6587:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6598:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6580:6:15" }, "nodeType": "YulFunctionCall", "src": "6580:21:15" }, "nodeType": "YulExpressionStatement", "src": "6580:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6621:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6632:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6617:3:15" }, "nodeType": "YulFunctionCall", "src": "6617:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6637:2:15", "type": "", "value": "49" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6610:6:15" }, "nodeType": "YulFunctionCall", "src": "6610:30:15" }, "nodeType": "YulExpressionStatement", "src": "6610:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6660:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6671:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6656:3:15" }, "nodeType": "YulFunctionCall", "src": "6656:18:15" }, { "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f", "kind": "string", "nodeType": "YulLiteral", "src": "6676:34:15", "type": "", "value": "ERC721: transfer caller is not o" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6649:6:15" }, "nodeType": "YulFunctionCall", "src": "6649:62:15" }, "nodeType": "YulExpressionStatement", "src": "6649:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6731:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6742:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6727:3:15" }, "nodeType": "YulFunctionCall", "src": "6727:18:15" }, { "hexValue": "776e6572206e6f7220617070726f766564", "kind": "string", "nodeType": "YulLiteral", "src": "6747:19:15", "type": "", "value": "wner nor approved" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6720:6:15" }, "nodeType": "YulFunctionCall", "src": "6720:47:15" }, "nodeType": "YulExpressionStatement", "src": "6720:47:15" }, { "nodeType": "YulAssignment", "src": "6776:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "6788:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6799:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6784:3:15" }, "nodeType": "YulFunctionCall", "src": "6784:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "6776:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "6547:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "6561:4:15", "type": "" } ], "src": "6396:413:15" }, { "body": { "nodeType": "YulBlock", "src": "6988:231:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7005:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7016:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6998:6:15" }, "nodeType": "YulFunctionCall", "src": "6998:21:15" }, "nodeType": "YulExpressionStatement", "src": "6998:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7039:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7050:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7035:3:15" }, "nodeType": "YulFunctionCall", "src": "7035:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7055:2:15", "type": "", "value": "41" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7028:6:15" }, "nodeType": "YulFunctionCall", "src": "7028:30:15" }, "nodeType": "YulExpressionStatement", "src": "7028:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7078:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7089:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7074:3:15" }, "nodeType": "YulFunctionCall", "src": "7074:18:15" }, { "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374", "kind": "string", "nodeType": "YulLiteral", "src": "7094:34:15", "type": "", "value": "ERC721: owner query for nonexist" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7067:6:15" }, "nodeType": "YulFunctionCall", "src": "7067:62:15" }, "nodeType": "YulExpressionStatement", "src": "7067:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7149:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7160:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7145:3:15" }, "nodeType": "YulFunctionCall", "src": "7145:18:15" }, { "hexValue": "656e7420746f6b656e", "kind": "string", "nodeType": "YulLiteral", "src": "7165:11:15", "type": "", "value": "ent token" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7138:6:15" }, "nodeType": "YulFunctionCall", "src": "7138:39:15" }, "nodeType": "YulExpressionStatement", "src": "7138:39:15" }, { "nodeType": "YulAssignment", "src": "7186:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7198:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7209:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7194:3:15" }, "nodeType": "YulFunctionCall", "src": "7194:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "7186:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "6965:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "6979:4:15", "type": "" } ], "src": "6814:405:15" }, { "body": { "nodeType": "YulBlock", "src": "7398:232:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7415:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7426:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7408:6:15" }, "nodeType": "YulFunctionCall", "src": "7408:21:15" }, "nodeType": "YulExpressionStatement", "src": "7408:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7449:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7460:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7445:3:15" }, "nodeType": "YulFunctionCall", "src": "7445:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7465:2:15", "type": "", "value": "42" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7438:6:15" }, "nodeType": "YulFunctionCall", "src": "7438:30:15" }, "nodeType": "YulExpressionStatement", "src": "7438:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7488:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7499:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7484:3:15" }, "nodeType": "YulFunctionCall", "src": "7484:18:15" }, { "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65", "kind": "string", "nodeType": "YulLiteral", "src": "7504:34:15", "type": "", "value": "ERC721: balance query for the ze" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7477:6:15" }, "nodeType": "YulFunctionCall", "src": "7477:62:15" }, "nodeType": "YulExpressionStatement", "src": "7477:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7559:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7570:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7555:3:15" }, "nodeType": "YulFunctionCall", "src": "7555:18:15" }, { "hexValue": "726f2061646472657373", "kind": "string", "nodeType": "YulLiteral", "src": "7575:12:15", "type": "", "value": "ro address" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7548:6:15" }, "nodeType": "YulFunctionCall", "src": "7548:40:15" }, "nodeType": "YulExpressionStatement", "src": "7548:40:15" }, { "nodeType": "YulAssignment", "src": "7597:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7609:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7620:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7605:3:15" }, "nodeType": "YulFunctionCall", "src": "7605:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "7597:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "7375:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "7389:4:15", "type": "" } ], "src": "7224:406:15" }, { "body": { "nodeType": "YulBlock", "src": "7809:237:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7826:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7837:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7819:6:15" }, "nodeType": "YulFunctionCall", "src": "7819:21:15" }, "nodeType": "YulExpressionStatement", "src": "7819:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7860:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7871:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7856:3:15" }, "nodeType": "YulFunctionCall", "src": "7856:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7876:2:15", "type": "", "value": "47" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7849:6:15" }, "nodeType": "YulFunctionCall", "src": "7849:30:15" }, "nodeType": "YulExpressionStatement", "src": "7849:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7899:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7910:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7895:3:15" }, "nodeType": "YulFunctionCall", "src": "7895:18:15" }, { "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f", "kind": "string", "nodeType": "YulLiteral", "src": "7915:34:15", "type": "", "value": "ERC721Metadata: URI query for no" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7888:6:15" }, "nodeType": "YulFunctionCall", "src": "7888:62:15" }, "nodeType": "YulExpressionStatement", "src": "7888:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "7970:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7981:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7966:3:15" }, "nodeType": "YulFunctionCall", "src": "7966:18:15" }, { "hexValue": "6e6578697374656e7420746f6b656e", "kind": "string", "nodeType": "YulLiteral", "src": "7986:17:15", "type": "", "value": "nexistent token" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7959:6:15" }, "nodeType": "YulFunctionCall", "src": "7959:45:15" }, "nodeType": "YulExpressionStatement", "src": "7959:45:15" }, { "nodeType": "YulAssignment", "src": "8013:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "8025:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8036:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8021:3:15" }, "nodeType": "YulFunctionCall", "src": "8021:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "8013:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "7786:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "7800:4:15", "type": "" } ], "src": "7635:411:15" }, { "body": { "nodeType": "YulBlock", "src": "8238:283:15", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "8248:27:15", "value": { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "8268:6:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "8262:5:15" }, "nodeType": "YulFunctionCall", "src": "8262:13:15" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "8252:6:15", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "8310:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8318:4:15", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8306:3:15" }, "nodeType": "YulFunctionCall", "src": "8306:17:15" }, { "name": "pos", "nodeType": "YulIdentifier", "src": "8325:3:15" }, { "name": "length", "nodeType": "YulIdentifier", "src": "8330:6:15" } ], "functionName": { "name": "copy_memory_to_memory", "nodeType": "YulIdentifier", "src": "8284:21:15" }, "nodeType": "YulFunctionCall", "src": "8284:53:15" }, "nodeType": "YulExpressionStatement", "src": "8284:53:15" }, { "nodeType": "YulVariableDeclaration", "src": "8346:29:15", "value": { "arguments": [ { "name": "pos", "nodeType": "YulIdentifier", "src": "8363:3:15" }, { "name": "length", "nodeType": "YulIdentifier", "src": "8368:6:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8359:3:15" }, "nodeType": "YulFunctionCall", "src": "8359:16:15" }, "variables": [ { "name": "end_1", "nodeType": "YulTypedName", "src": "8350:5:15", "type": "" } ] }, { "nodeType": "YulVariableDeclaration", "src": "8384:29:15", "value": { "arguments": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "8406:6:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "8400:5:15" }, "nodeType": "YulFunctionCall", "src": "8400:13:15" }, "variables": [ { "name": "length_1", "nodeType": "YulTypedName", "src": "8388:8:15", "type": "" } ] }, { "expression": { "arguments": [ { "arguments": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "8448:6:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8456:4:15", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8444:3:15" }, "nodeType": "YulFunctionCall", "src": "8444:17:15" }, { "name": "end_1", "nodeType": "YulIdentifier", "src": "8463:5:15" }, { "name": "length_1", "nodeType": "YulIdentifier", "src": "8470:8:15" } ], "functionName": { "name": "copy_memory_to_memory", "nodeType": "YulIdentifier", "src": "8422:21:15" }, "nodeType": "YulFunctionCall", "src": "8422:57:15" }, "nodeType": "YulExpressionStatement", "src": "8422:57:15" }, { "nodeType": "YulAssignment", "src": "8488:27:15", "value": { "arguments": [ { "name": "end_1", "nodeType": "YulIdentifier", "src": "8499:5:15" }, { "name": "length_1", "nodeType": "YulIdentifier", "src": "8506:8:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8495:3:15" }, "nodeType": "YulFunctionCall", "src": "8495:20:15" }, "variableNames": [ { "name": "end", "nodeType": "YulIdentifier", "src": "8488:3:15" } ] } ] }, "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "pos", "nodeType": "YulTypedName", "src": "8206:3:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "8211:6:15", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "8219:6:15", "type": "" } ], "returnVariables": [ { "name": "end", "nodeType": "YulTypedName", "src": "8230:3:15", "type": "" } ], "src": "8051:470:15" }, { "body": { "nodeType": "YulBlock", "src": "8700:234:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "8717:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8728:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "8710:6:15" }, "nodeType": "YulFunctionCall", "src": "8710:21:15" }, "nodeType": "YulExpressionStatement", "src": "8710:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "8751:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8762:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8747:3:15" }, "nodeType": "YulFunctionCall", "src": "8747:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8767:2:15", "type": "", "value": "44" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "8740:6:15" }, "nodeType": "YulFunctionCall", "src": "8740:30:15" }, "nodeType": "YulExpressionStatement", "src": "8740:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "8790:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8801:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8786:3:15" }, "nodeType": "YulFunctionCall", "src": "8786:18:15" }, { "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578", "kind": "string", "nodeType": "YulLiteral", "src": "8806:34:15", "type": "", "value": "ERC721: operator query for nonex" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "8779:6:15" }, "nodeType": "YulFunctionCall", "src": "8779:62:15" }, "nodeType": "YulExpressionStatement", "src": "8779:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "8861:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8872:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8857:3:15" }, "nodeType": "YulFunctionCall", "src": "8857:18:15" }, { "hexValue": "697374656e7420746f6b656e", "kind": "string", "nodeType": "YulLiteral", "src": "8877:14:15", "type": "", "value": "istent token" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "8850:6:15" }, "nodeType": "YulFunctionCall", "src": "8850:42:15" }, "nodeType": "YulExpressionStatement", "src": "8850:42:15" }, { "nodeType": "YulAssignment", "src": "8901:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "8913:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "8924:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "8909:3:15" }, "nodeType": "YulFunctionCall", "src": "8909:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "8901:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "8677:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "8691:4:15", "type": "" } ], "src": "8526:408:15" }, { "body": { "nodeType": "YulBlock", "src": "9113:231:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9130:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9141:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9123:6:15" }, "nodeType": "YulFunctionCall", "src": "9123:21:15" }, "nodeType": "YulExpressionStatement", "src": "9123:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9164:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9175:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9160:3:15" }, "nodeType": "YulFunctionCall", "src": "9160:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9180:2:15", "type": "", "value": "41" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9153:6:15" }, "nodeType": "YulFunctionCall", "src": "9153:30:15" }, "nodeType": "YulExpressionStatement", "src": "9153:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9203:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9214:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9199:3:15" }, "nodeType": "YulFunctionCall", "src": "9199:18:15" }, { "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e20746861742069", "kind": "string", "nodeType": "YulLiteral", "src": "9219:34:15", "type": "", "value": "ERC721: transfer of token that i" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9192:6:15" }, "nodeType": "YulFunctionCall", "src": "9192:62:15" }, "nodeType": "YulExpressionStatement", "src": "9192:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9274:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9285:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9270:3:15" }, "nodeType": "YulFunctionCall", "src": "9270:18:15" }, { "hexValue": "73206e6f74206f776e", "kind": "string", "nodeType": "YulLiteral", "src": "9290:11:15", "type": "", "value": "s not own" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9263:6:15" }, "nodeType": "YulFunctionCall", "src": "9263:39:15" }, "nodeType": "YulExpressionStatement", "src": "9263:39:15" }, { "nodeType": "YulAssignment", "src": "9311:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9323:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9334:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9319:3:15" }, "nodeType": "YulFunctionCall", "src": "9319:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "9311:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "9090:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "9104:4:15", "type": "" } ], "src": "8939:405:15" }, { "body": { "nodeType": "YulBlock", "src": "9523:226:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9540:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9551:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9533:6:15" }, "nodeType": "YulFunctionCall", "src": "9533:21:15" }, "nodeType": "YulExpressionStatement", "src": "9533:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9574:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9585:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9570:3:15" }, "nodeType": "YulFunctionCall", "src": "9570:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9590:2:15", "type": "", "value": "36" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9563:6:15" }, "nodeType": "YulFunctionCall", "src": "9563:30:15" }, "nodeType": "YulExpressionStatement", "src": "9563:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9613:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9624:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9609:3:15" }, "nodeType": "YulFunctionCall", "src": "9609:18:15" }, { "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f20616464", "kind": "string", "nodeType": "YulLiteral", "src": "9629:34:15", "type": "", "value": "ERC721: transfer to the zero add" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9602:6:15" }, "nodeType": "YulFunctionCall", "src": "9602:62:15" }, "nodeType": "YulExpressionStatement", "src": "9602:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9684:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9695:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9680:3:15" }, "nodeType": "YulFunctionCall", "src": "9680:18:15" }, { "hexValue": "72657373", "kind": "string", "nodeType": "YulLiteral", "src": "9700:6:15", "type": "", "value": "ress" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9673:6:15" }, "nodeType": "YulFunctionCall", "src": "9673:34:15" }, "nodeType": "YulExpressionStatement", "src": "9673:34:15" }, { "nodeType": "YulAssignment", "src": "9716:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "9728:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9739:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "9724:3:15" }, "nodeType": "YulFunctionCall", "src": "9724:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "9716:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "9500:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "9514:4:15", "type": "" } ], "src": "9349:400:15" }, { "body": { "nodeType": "YulBlock", "src": "9786:95:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "9803:1:15", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "9810:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9815:10:15", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "9806:3:15" }, "nodeType": "YulFunctionCall", "src": "9806:20:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9796:6:15" }, "nodeType": "YulFunctionCall", "src": "9796:31:15" }, "nodeType": "YulExpressionStatement", "src": "9796:31:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "9843:1:15", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9846:4:15", "type": "", "value": "0x11" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "9836:6:15" }, "nodeType": "YulFunctionCall", "src": "9836:15:15" }, "nodeType": "YulExpressionStatement", "src": "9836:15:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "9867:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "9870:4:15", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "9860:6:15" }, "nodeType": "YulFunctionCall", "src": "9860:15:15" }, "nodeType": "YulExpressionStatement", "src": "9860:15:15" } ] }, "name": "panic_error_0x11", "nodeType": "YulFunctionDefinition", "src": "9754:127:15" }, { "body": { "nodeType": "YulBlock", "src": "9935:76:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "9957:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x11", "nodeType": "YulIdentifier", "src": "9959:16:15" }, "nodeType": "YulFunctionCall", "src": "9959:18:15" }, "nodeType": "YulExpressionStatement", "src": "9959:18:15" } ] }, "condition": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "9951:1:15" }, { "name": "y", "nodeType": "YulIdentifier", "src": "9954:1:15" } ], "functionName": { "name": "lt", "nodeType": "YulIdentifier", "src": "9948:2:15" }, "nodeType": "YulFunctionCall", "src": "9948:8:15" }, "nodeType": "YulIf", "src": "9945:34:15" }, { "nodeType": "YulAssignment", "src": "9988:17:15", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "10000:1:15" }, { "name": "y", "nodeType": "YulIdentifier", "src": "10003:1:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "9996:3:15" }, "nodeType": "YulFunctionCall", "src": "9996:9:15" }, "variableNames": [ { "name": "diff", "nodeType": "YulIdentifier", "src": "9988:4:15" } ] } ] }, "name": "checked_sub_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", "src": "9917:1:15", "type": "" }, { "name": "y", "nodeType": "YulTypedName", "src": "9920:1:15", "type": "" } ], "returnVariables": [ { "name": "diff", "nodeType": "YulTypedName", "src": "9926:4:15", "type": "" } ], "src": "9886:125:15" }, { "body": { "nodeType": "YulBlock", "src": "10064:80:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "10091:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x11", "nodeType": "YulIdentifier", "src": "10093:16:15" }, "nodeType": "YulFunctionCall", "src": "10093:18:15" }, "nodeType": "YulExpressionStatement", "src": "10093:18:15" } ] }, "condition": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "10080:1:15" }, { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", "src": "10087:1:15" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "10083:3:15" }, "nodeType": "YulFunctionCall", "src": "10083:6:15" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "10077:2:15" }, "nodeType": "YulFunctionCall", "src": "10077:13:15" }, "nodeType": "YulIf", "src": "10074:39:15" }, { "nodeType": "YulAssignment", "src": "10122:16:15", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "10133:1:15" }, { "name": "y", "nodeType": "YulIdentifier", "src": "10136:1:15" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10129:3:15" }, "nodeType": "YulFunctionCall", "src": "10129:9:15" }, "variableNames": [ { "name": "sum", "nodeType": "YulIdentifier", "src": "10122:3:15" } ] } ] }, "name": "checked_add_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", "src": "10047:1:15", "type": "" }, { "name": "y", "nodeType": "YulTypedName", "src": "10050:1:15", "type": "" } ], "returnVariables": [ { "name": "sum", "nodeType": "YulTypedName", "src": "10056:3:15", "type": "" } ], "src": "10016:128:15" }, { "body": { "nodeType": "YulBlock", "src": "10323:175:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10340:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10351:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "10333:6:15" }, "nodeType": "YulFunctionCall", "src": "10333:21:15" }, "nodeType": "YulExpressionStatement", "src": "10333:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10374:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10385:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10370:3:15" }, "nodeType": "YulFunctionCall", "src": "10370:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10390:2:15", "type": "", "value": "25" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "10363:6:15" }, "nodeType": "YulFunctionCall", "src": "10363:30:15" }, "nodeType": "YulExpressionStatement", "src": "10363:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10413:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10424:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10409:3:15" }, "nodeType": "YulFunctionCall", "src": "10409:18:15" }, { "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", "kind": "string", "nodeType": "YulLiteral", "src": "10429:27:15", "type": "", "value": "ERC721: approve to caller" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "10402:6:15" }, "nodeType": "YulFunctionCall", "src": "10402:55:15" }, "nodeType": "YulExpressionStatement", "src": "10402:55:15" }, { "nodeType": "YulAssignment", "src": "10466:26:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10478:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10489:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10474:3:15" }, "nodeType": "YulFunctionCall", "src": "10474:18:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "10466:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "10300:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "10314:4:15", "type": "" } ], "src": "10149:349:15" }, { "body": { "nodeType": "YulBlock", "src": "10677:240:15", "statements": [ { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10694:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10705:2:15", "type": "", "value": "32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "10687:6:15" }, "nodeType": "YulFunctionCall", "src": "10687:21:15" }, "nodeType": "YulExpressionStatement", "src": "10687:21:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10728:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10739:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10724:3:15" }, "nodeType": "YulFunctionCall", "src": "10724:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10744:2:15", "type": "", "value": "50" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "10717:6:15" }, "nodeType": "YulFunctionCall", "src": "10717:30:15" }, "nodeType": "YulExpressionStatement", "src": "10717:30:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10767:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10778:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10763:3:15" }, "nodeType": "YulFunctionCall", "src": "10763:18:15" }, { "hexValue": "4552433732313a207472616e7366657220746f206e6f6e204552433732315265", "kind": "string", "nodeType": "YulLiteral", "src": "10783:34:15", "type": "", "value": "ERC721: transfer to non ERC721Re" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "10756:6:15" }, "nodeType": "YulFunctionCall", "src": "10756:62:15" }, "nodeType": "YulExpressionStatement", "src": "10756:62:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10838:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10849:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10834:3:15" }, "nodeType": "YulFunctionCall", "src": "10834:18:15" }, { "hexValue": "63656976657220696d706c656d656e746572", "kind": "string", "nodeType": "YulLiteral", "src": "10854:20:15", "type": "", "value": "ceiver implementer" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "10827:6:15" }, "nodeType": "YulFunctionCall", "src": "10827:48:15" }, "nodeType": "YulExpressionStatement", "src": "10827:48:15" }, { "nodeType": "YulAssignment", "src": "10884:27:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "10896:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "10907:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "10892:3:15" }, "nodeType": "YulFunctionCall", "src": "10892:19:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "10884:4:15" } ] } ] }, "name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "10654:9:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "10668:4:15", "type": "" } ], "src": "10503:414:15" }, { "body": { "nodeType": "YulBlock", "src": "10969:88:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "11000:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x11", "nodeType": "YulIdentifier", "src": "11002:16:15" }, "nodeType": "YulFunctionCall", "src": "11002:18:15" }, "nodeType": "YulExpressionStatement", "src": "11002:18:15" } ] }, "condition": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "10985:5:15" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "10996:1:15", "type": "", "value": "0" } ], "functionName": { "name": "not", "nodeType": "YulIdentifier", "src": "10992:3:15" }, "nodeType": "YulFunctionCall", "src": "10992:6:15" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", "src": "10982:2:15" }, "nodeType": "YulFunctionCall", "src": "10982:17:15" }, "nodeType": "YulIf", "src": "10979:43:15" }, { "nodeType": "YulAssignment", "src": "11031:20:15", "value": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "11042:5:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11049:1:15", "type": "", "value": "1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "11038:3:15" }, "nodeType": "YulFunctionCall", "src": "11038:13:15" }, "variableNames": [ { "name": "ret", "nodeType": "YulIdentifier", "src": "11031:3:15" } ] } ] }, "name": "increment_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "value", "nodeType": "YulTypedName", "src": "10951:5:15", "type": "" } ], "returnVariables": [ { "name": "ret", "nodeType": "YulTypedName", "src": "10961:3:15", "type": "" } ], "src": "10922:135:15" }, { "body": { "nodeType": "YulBlock", "src": "11094:95:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11111:1:15", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11118:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11123:10:15", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "11114:3:15" }, "nodeType": "YulFunctionCall", "src": "11114:20:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11104:6:15" }, "nodeType": "YulFunctionCall", "src": "11104:31:15" }, "nodeType": "YulExpressionStatement", "src": "11104:31:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11151:1:15", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11154:4:15", "type": "", "value": "0x12" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11144:6:15" }, "nodeType": "YulFunctionCall", "src": "11144:15:15" }, "nodeType": "YulExpressionStatement", "src": "11144:15:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11175:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11178:4:15", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "11168:6:15" }, "nodeType": "YulFunctionCall", "src": "11168:15:15" }, "nodeType": "YulExpressionStatement", "src": "11168:15:15" } ] }, "name": "panic_error_0x12", "nodeType": "YulFunctionDefinition", "src": "11062:127:15" }, { "body": { "nodeType": "YulBlock", "src": "11240:74:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "11263:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x12", "nodeType": "YulIdentifier", "src": "11265:16:15" }, "nodeType": "YulFunctionCall", "src": "11265:18:15" }, "nodeType": "YulExpressionStatement", "src": "11265:18:15" } ] }, "condition": { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", "src": "11260:1:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "11253:6:15" }, "nodeType": "YulFunctionCall", "src": "11253:9:15" }, "nodeType": "YulIf", "src": "11250:35:15" }, { "nodeType": "YulAssignment", "src": "11294:14:15", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "11303:1:15" }, { "name": "y", "nodeType": "YulIdentifier", "src": "11306:1:15" } ], "functionName": { "name": "div", "nodeType": "YulIdentifier", "src": "11299:3:15" }, "nodeType": "YulFunctionCall", "src": "11299:9:15" }, "variableNames": [ { "name": "r", "nodeType": "YulIdentifier", "src": "11294:1:15" } ] } ] }, "name": "checked_div_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", "src": "11225:1:15", "type": "" }, { "name": "y", "nodeType": "YulTypedName", "src": "11228:1:15", "type": "" } ], "returnVariables": [ { "name": "r", "nodeType": "YulTypedName", "src": "11234:1:15", "type": "" } ], "src": "11194:120:15" }, { "body": { "nodeType": "YulBlock", "src": "11357:74:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "11380:22:15", "statements": [ { "expression": { "arguments": [], "functionName": { "name": "panic_error_0x12", "nodeType": "YulIdentifier", "src": "11382:16:15" }, "nodeType": "YulFunctionCall", "src": "11382:18:15" }, "nodeType": "YulExpressionStatement", "src": "11382:18:15" } ] }, "condition": { "arguments": [ { "name": "y", "nodeType": "YulIdentifier", "src": "11377:1:15" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "11370:6:15" }, "nodeType": "YulFunctionCall", "src": "11370:9:15" }, "nodeType": "YulIf", "src": "11367:35:15" }, { "nodeType": "YulAssignment", "src": "11411:14:15", "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", "src": "11420:1:15" }, { "name": "y", "nodeType": "YulIdentifier", "src": "11423:1:15" } ], "functionName": { "name": "mod", "nodeType": "YulIdentifier", "src": "11416:3:15" }, "nodeType": "YulFunctionCall", "src": "11416:9:15" }, "variableNames": [ { "name": "r", "nodeType": "YulIdentifier", "src": "11411:1:15" } ] } ] }, "name": "mod_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", "src": "11342:1:15", "type": "" }, { "name": "y", "nodeType": "YulTypedName", "src": "11345:1:15", "type": "" } ], "returnVariables": [ { "name": "r", "nodeType": "YulTypedName", "src": "11351:1:15", "type": "" } ], "src": "11319:112:15" }, { "body": { "nodeType": "YulBlock", "src": "11468:95:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11485:1:15", "type": "", "value": "0" }, { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11492:3:15", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11497:10:15", "type": "", "value": "0x4e487b71" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "11488:3:15" }, "nodeType": "YulFunctionCall", "src": "11488:20:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11478:6:15" }, "nodeType": "YulFunctionCall", "src": "11478:31:15" }, "nodeType": "YulExpressionStatement", "src": "11478:31:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11525:1:15", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11528:4:15", "type": "", "value": "0x32" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11518:6:15" }, "nodeType": "YulFunctionCall", "src": "11518:15:15" }, "nodeType": "YulExpressionStatement", "src": "11518:15:15" }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11549:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11552:4:15", "type": "", "value": "0x24" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "11542:6:15" }, "nodeType": "YulFunctionCall", "src": "11542:15:15" }, "nodeType": "YulExpressionStatement", "src": "11542:15:15" } ] }, "name": "panic_error_0x32", "nodeType": "YulFunctionDefinition", "src": "11436:127:15" }, { "body": { "nodeType": "YulBlock", "src": "11771:286:15", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "11781:29:15", "value": { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "11799:3:15", "type": "", "value": "160" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11804:1:15", "type": "", "value": "1" } ], "functionName": { "name": "shl", "nodeType": "YulIdentifier", "src": "11795:3:15" }, "nodeType": "YulFunctionCall", "src": "11795:11:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11808:1:15", "type": "", "value": "1" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "11791:3:15" }, "nodeType": "YulFunctionCall", "src": "11791:19:15" }, "variables": [ { "name": "_1", "nodeType": "YulTypedName", "src": "11785:2:15", "type": "" } ] }, { "expression": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "11826:9:15" }, { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "11841:6:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "11849:2:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "11837:3:15" }, "nodeType": "YulFunctionCall", "src": "11837:15:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11819:6:15" }, "nodeType": "YulFunctionCall", "src": "11819:34:15" }, "nodeType": "YulExpressionStatement", "src": "11819:34:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "11873:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11884:2:15", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "11869:3:15" }, "nodeType": "YulFunctionCall", "src": "11869:18:15" }, { "arguments": [ { "name": "value1", "nodeType": "YulIdentifier", "src": "11893:6:15" }, { "name": "_1", "nodeType": "YulIdentifier", "src": "11901:2:15" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", "src": "11889:3:15" }, "nodeType": "YulFunctionCall", "src": "11889:15:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11862:6:15" }, "nodeType": "YulFunctionCall", "src": "11862:43:15" }, "nodeType": "YulExpressionStatement", "src": "11862:43:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "11925:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11936:2:15", "type": "", "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "11921:3:15" }, "nodeType": "YulFunctionCall", "src": "11921:18:15" }, { "name": "value2", "nodeType": "YulIdentifier", "src": "11941:6:15" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11914:6:15" }, "nodeType": "YulFunctionCall", "src": "11914:34:15" }, "nodeType": "YulExpressionStatement", "src": "11914:34:15" }, { "expression": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "11968:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11979:2:15", "type": "", "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "11964:3:15" }, "nodeType": "YulFunctionCall", "src": "11964:18:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "11984:3:15", "type": "", "value": "128" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "11957:6:15" }, "nodeType": "YulFunctionCall", "src": "11957:31:15" }, "nodeType": "YulExpressionStatement", "src": "11957:31:15" }, { "nodeType": "YulAssignment", "src": "11997:54:15", "value": { "arguments": [ { "name": "value3", "nodeType": "YulIdentifier", "src": "12023:6:15" }, { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "12035:9:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "12046:3:15", "type": "", "value": "128" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "12031:3:15" }, "nodeType": "YulFunctionCall", "src": "12031:19:15" } ], "functionName": { "name": "abi_encode_string", "nodeType": "YulIdentifier", "src": "12005:17:15" }, "nodeType": "YulFunctionCall", "src": "12005:46:15" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", "src": "11997:4:15" } ] } ] }, "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "11716:9:15", "type": "" }, { "name": "value3", "nodeType": "YulTypedName", "src": "11727:6:15", "type": "" }, { "name": "value2", "nodeType": "YulTypedName", "src": "11735:6:15", "type": "" }, { "name": "value1", "nodeType": "YulTypedName", "src": "11743:6:15", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", "src": "11751:6:15", "type": "" } ], "returnVariables": [ { "name": "tail", "nodeType": "YulTypedName", "src": "11762:4:15", "type": "" } ], "src": "11568:489:15" }, { "body": { "nodeType": "YulBlock", "src": "12142:169:15", "statements": [ { "body": { "nodeType": "YulBlock", "src": "12188:16:15", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "12197:1:15", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "12200:1:15", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "12190:6:15" }, "nodeType": "YulFunctionCall", "src": "12190:12:15" }, "nodeType": "YulExpressionStatement", "src": "12190:12:15" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "dataEnd", "nodeType": "YulIdentifier", "src": "12163:7:15" }, { "name": "headStart", "nodeType": "YulIdentifier", "src": "12172:9:15" } ], "functionName": { "name": "sub", "nodeType": "YulIdentifier", "src": "12159:3:15" }, "nodeType": "YulFunctionCall", "src": "12159:23:15" }, { "kind": "number", "nodeType": "YulLiteral", "src": "12184:2:15", "type": "", "value": "32" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "12155:3:15" }, "nodeType": "YulFunctionCall", "src": "12155:32:15" }, "nodeType": "YulIf", "src": "12152:52:15" }, { "nodeType": "YulVariableDeclaration", "src": "12213:29:15", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", "src": "12232:9:15" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "12226:5:15" }, "nodeType": "YulFunctionCall", "src": "12226:16:15" }, "variables": [ { "name": "value", "nodeType": "YulTypedName", "src": "12217:5:15", "type": "" } ] }, { "expression": { "arguments": [ { "name": "value", "nodeType": "YulIdentifier", "src": "12275:5:15" } ], "functionName": { "name": "validator_revert_bytes4", "nodeType": "YulIdentifier", "src": "12251:23:15" }, "nodeType": "YulFunctionCall", "src": "12251:30:15" }, "nodeType": "YulExpressionStatement", "src": "12251:30:15" }, { "nodeType": "YulAssignment", "src": "12290:15:15", "value": { "name": "value", "nodeType": "YulIdentifier", "src": "12300:5:15" }, "variableNames": [ { "name": "value0", "nodeType": "YulIdentifier", "src": "12290:6:15" } ] } ] }, "name": "abi_decode_tuple_t_bytes4_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", "src": "12108:9:15", "type": "" }, { "name": "dataEnd", "nodeType": "YulTypedName", "src": "12119:7:15", "type": "" } ], "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", "src": "12131:6:15", "type": "" } ], "src": "12062:249:15" } ] }, "contents": "{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length) { mstore(add(dst, length), 0) }\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"ERC721: approved query for nonex\")\n mstore(add(headStart, 96), \"istent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 56)\n mstore(add(headStart, 64), \"ERC721: approve caller is not ow\")\n mstore(add(headStart, 96), \"ner nor approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 49)\n mstore(add(headStart, 64), \"ERC721: transfer caller is not o\")\n mstore(add(headStart, 96), \"wner nor approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: owner query for nonexist\")\n mstore(add(headStart, 96), \"ent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"ERC721: balance query for the ze\")\n mstore(add(headStart, 96), \"ro address\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 47)\n mstore(add(headStart, 64), \"ERC721Metadata: URI query for no\")\n mstore(add(headStart, 96), \"nexistent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 44)\n mstore(add(headStart, 64), \"ERC721: operator query for nonex\")\n mstore(add(headStart, 96), \"istent token\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: transfer of token that i\")\n mstore(add(headStart, 96), \"s not own\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n if lt(x, y) { panic_error_0x11() }\n diff := sub(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := div(x, y)\n }\n function mod_t_uint256(x, y) -> r\n {\n if iszero(y) { panic_error_0x12() }\n r := mod(x, y)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}", "id": 15, "language": "Yul", "name": "#utility.yul" } ], "sourceMap": "613:13006:1:-:0;;;1375:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1441:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1464:17:1;;;;:7;;:17;;;;;:::i;:::-;;1375:113;;613:13006;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;613:13006:1;;;-1:-1:-1;613:13006:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:15;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:15;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:15;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:15:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:15;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;613:13006:1;;;;;;", "deployedSourceMap": "613:13006:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1555:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:15;;558:22;540:41;;528:2;513:18;1555:300:1;;;;;;;;2473:98;;;:::i;:::-;;;;;;;:::i;3984:217::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:15;;;1674:51;;1662:2;1647:18;3984:217:1;1528:203:15;3522:401:1;;;;;;:::i;:::-;;:::i;:::-;;4711:330;;;;;;:::i;:::-;;:::i;5107:179::-;;;;;;:::i;:::-;;:::i;2176:235::-;;;;;;:::i;:::-;;:::i;1914:205::-;;;;;;:::i;:::-;;:::i;:::-;;;2843:25:15;;;2831:2;2816:18;1914:205:1;2697:177:15;2635:102:1;;;:::i;4268:153::-;;;;;;:::i;:::-;;:::i;5352:320::-;;;;;;:::i;:::-;;:::i;2803:329::-;;;;;;:::i;:::-;;:::i;4487:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4607:25:1;;;4584:4;4607:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4487:162;1555:300;1657:4;-1:-1:-1;;;;;;1692:40:1;;-1:-1:-1;;;1692:40:1;;:104;;-1:-1:-1;;;;;;;1748:48:1;;-1:-1:-1;;;1748:48:1;1692:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:10;;;1812:36:1;1673:175;1555:300;-1:-1:-1;;1555:300:1:o;2473:98::-;2527:13;2559:5;2552:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:98;:::o;3984:217::-;4060:7;7232:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7232:16:1;4079:73;;;;-1:-1:-1;;;4079:73:1;;5358:2:15;4079:73:1;;;5340:21:15;5397:2;5377:18;;;5370:30;5436:34;5416:18;;;5409:62;-1:-1:-1;;;5487:18:15;;;5480:42;5539:19;;4079:73:1;;;;;;;;;-1:-1:-1;4170:24:1;;;;:15;:24;;;;;;-1:-1:-1;;;;;4170:24:1;;3984:217::o;3522:401::-;3602:13;3618:23;3633:7;3618:14;:23::i;:::-;3602:39;;3665:5;-1:-1:-1;;;;;3659:11:1;:2;-1:-1:-1;;;;;3659:11:1;;;3651:57;;;;-1:-1:-1;;;3651:57:1;;5771:2:15;3651:57:1;;;5753:21:15;5810:2;5790:18;;;5783:30;5849:34;5829:18;;;5822:62;-1:-1:-1;;;5900:18:15;;;5893:31;5941:19;;3651:57:1;5569:397:15;3651:57:1;719:10:7;-1:-1:-1;;;;;3740:21:1;;;;:62;;-1:-1:-1;3765:37:1;3782:5;719:10:7;4487:162:1;:::i;3765:37::-;3719:165;;;;-1:-1:-1;;;3719:165:1;;6173:2:15;3719:165:1;;;6155:21:15;6212:2;6192:18;;;6185:30;6251:34;6231:18;;;6224:62;6322:26;6302:18;;;6295:54;6366:19;;3719:165:1;5971:420:15;3719:165:1;3895:21;3904:2;3908:7;3895:8;:21::i;:::-;3592:331;3522:401;;:::o;4711:330::-;4900:41;719:10:7;4933:7:1;4900:18;:41::i;:::-;4892:103;;;;-1:-1:-1;;;4892:103:1;;;;;;;:::i;:::-;5006:28;5016:4;5022:2;5026:7;5006:9;:28::i;5107:179::-;5240:39;5257:4;5263:2;5267:7;5240:39;;;;;;;;;;;;:16;:39::i;2176:235::-;2248:7;2283:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2283:16:1;2317:19;2309:73;;;;-1:-1:-1;;;2309:73:1;;7016:2:15;2309:73:1;;;6998:21:15;7055:2;7035:18;;;7028:30;7094:34;7074:18;;;7067:62;-1:-1:-1;;;7145:18:15;;;7138:39;7194:19;;2309:73:1;6814:405:15;1914:205:1;1986:7;-1:-1:-1;;;;;2013:19:1;;2005:74;;;;-1:-1:-1;;;2005:74:1;;7426:2:15;2005:74:1;;;7408:21:15;7465:2;7445:18;;;7438:30;7504:34;7484:18;;;7477:62;-1:-1:-1;;;7555:18:15;;;7548:40;7605:19;;2005:74:1;7224:406:15;2005:74:1;-1:-1:-1;;;;;;2096:16:1;;;;;:9;:16;;;;;;;1914:205::o;2635:102::-;2691:13;2723:7;2716:14;;;;;:::i;4268:153::-;4362:52;719:10:7;4395:8:1;4405;4362:18;:52::i;:::-;4268:153;;:::o;5352:320::-;5521:41;719:10:7;5554:7:1;5521:18;:41::i;:::-;5513:103;;;;-1:-1:-1;;;5513:103:1;;;;;;;:::i;:::-;5626:39;5640:4;5646:2;5650:7;5659:5;5626:13;:39::i;:::-;5352:320;;;;:::o;2803:329::-;7209:4;7232:16;;;:7;:16;;;;;;2876:13;;-1:-1:-1;;;;;7232:16:1;2901:76;;;;-1:-1:-1;;;2901:76:1;;7837:2:15;2901:76:1;;;7819:21:15;7876:2;7856:18;;;7849:30;7915:34;7895:18;;;7888:62;-1:-1:-1;;;7966:18:15;;;7959:45;8021:19;;2901:76:1;7635:411:15;2901:76:1;2988:21;3012:10;3449:9;;;;;;;;;-1:-1:-1;3449:9:1;;;3373:92;3012:10;2988:34;;3063:1;3045:7;3039:21;:25;:86;;;;;;;;;;;;;;;;;3091:7;3100:18;:7;:16;:18::i;:::-;3074:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3039:86;3032:93;2803:329;-1:-1:-1;;;2803:329:1:o;10995:171::-;11069:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11069:29:1;-1:-1:-1;;;;;11069:29:1;;;;;;;;:24;;11122:23;11069:24;11122:14;:23::i;:::-;-1:-1:-1;;;;;11113:46:1;;;;;;;;;;;10995:171;;:::o;7427:344::-;7520:4;7232:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7232:16:1;7536:73;;;;-1:-1:-1;;;7536:73:1;;8728:2:15;7536:73:1;;;8710:21:15;8767:2;8747:18;;;8740:30;8806:34;8786:18;;;8779:62;-1:-1:-1;;;8857:18:15;;;8850:42;8909:19;;7536:73:1;8526:408:15;7536:73:1;7619:13;7635:23;7650:7;7635:14;:23::i;:::-;7619:39;;7687:5;-1:-1:-1;;;;;7676:16:1;:7;-1:-1:-1;;;;;7676:16:1;;:51;;;;7720:7;-1:-1:-1;;;;;7696:31:1;:20;7708:7;7696:11;:20::i;:::-;-1:-1:-1;;;;;7696:31:1;;7676:51;:87;;;-1:-1:-1;;;;;;4607:25:1;;;4584:4;4607:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7731:32;7668:96;7427:344;-1:-1:-1;;;;7427:344:1:o;10324:560::-;10478:4;-1:-1:-1;;;;;10451:31:1;:23;10466:7;10451:14;:23::i;:::-;-1:-1:-1;;;;;10451:31:1;;10443:85;;;;-1:-1:-1;;;10443:85:1;;9141:2:15;10443:85:1;;;9123:21:15;9180:2;9160:18;;;9153:30;9219:34;9199:18;;;9192:62;-1:-1:-1;;;9270:18:15;;;9263:39;9319:19;;10443:85:1;8939:405:15;10443:85:1;-1:-1:-1;;;;;10546:16:1;;10538:65;;;;-1:-1:-1;;;10538:65:1;;9551:2:15;10538:65:1;;;9533:21:15;9590:2;9570:18;;;9563:30;9629:34;9609:18;;;9602:62;-1:-1:-1;;;9680:18:15;;;9673:34;9724:19;;10538:65:1;9349:400:15;10538:65:1;10715:29;10732:1;10736:7;10715:8;:29::i;:::-;-1:-1:-1;;;;;10755:15:1;;;;;;:9;:15;;;;;:20;;10774:1;;10755:15;:20;;10774:1;;10755:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10785:13:1;;;;;;:9;:13;;;;;:18;;10802:1;;10785:13;:18;;10802:1;;10785:18;:::i;:::-;;;;-1:-1:-1;;10813:16:1;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10813:21:1;-1:-1:-1;;;;;10813:21:1;;;;;;;;;10850:27;;10813:16;;10850:27;;;;;;;10324:560;;;:::o;11301:307::-;11451:8;-1:-1:-1;;;;;11442:17:1;:5;-1:-1:-1;;;;;11442:17:1;;;11434:55;;;;-1:-1:-1;;;11434:55:1;;10351:2:15;11434:55:1;;;10333:21:15;10390:2;10370:18;;;10363:30;10429:27;10409:18;;;10402:55;10474:18;;11434:55:1;10149:349:15;11434:55:1;-1:-1:-1;;;;;11499:25:1;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11499:46:1;;;;;;;;;;11560:41;;540::15;;;11560::1;;513:18:15;11560:41:1;;;;;;;11301:307;;;:::o;6534:::-;6685:28;6695:4;6701:2;6705:7;6685:9;:28::i;:::-;6731:48;6754:4;6760:2;6764:7;6773:5;6731:22;:48::i;:::-;6723:111;;;;-1:-1:-1;;;6723:111:1;;;;;;;:::i;328:703:9:-;384:13;601:10;597:51;;-1:-1:-1;;627:10:9;;;;;;;;;;;;-1:-1:-1;;;627:10:9;;;;;328:703::o;597:51::-;672:5;657:12;711:75;718:9;;711:75;;743:8;;;;:::i;:::-;;-1:-1:-1;765:10:9;;-1:-1:-1;773:2:9;765:10;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:17:9;;795:39;;844:150;851:10;;844:150;;877:11;887:1;877:11;;:::i;:::-;;-1:-1:-1;945:10:9;953:2;945:5;:10;:::i;:::-;932:24;;:2;:24;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;902:56:9;;;;;;;;-1:-1:-1;972:11:9;981:2;972:11;;:::i;:::-;;;844:150;;12161:778:1;12311:4;-1:-1:-1;;;;;12331:13:1;;1087:20:6;1133:8;12327:606:1;;12366:72;;-1:-1:-1;;;12366:72:1;;-1:-1:-1;;;;;12366:36:1;;;;;:72;;719:10:7;;12417:4:1;;12423:7;;12432:5;;12366:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12366:72:1;;;;;;;;-1:-1:-1;;12366:72:1;;;;;;;;;;;;:::i;:::-;;;12362:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12605:13:1;;12601:266;;12647:60;;-1:-1:-1;;;12647:60:1;;;;;;;:::i;12601:266::-;12819:6;12813:13;12804:6;12800:2;12796:15;12789:38;12362:519;-1:-1:-1;;;;;;12488:51:1;-1:-1:-1;;;12488:51:1;;-1:-1:-1;12481:58:1;;12327:606;-1:-1:-1;12918:4:1;12161:778;;;;;;:::o;14:131:15:-;-1:-1:-1;;;;;;88:32:15;;78:43;;68:71;;135:1;132;125:12;68:71;14:131;:::o;150:245::-;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:15;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:15;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:15:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:15;;1343:180;-1:-1:-1;1343:180:15:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:15;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:15:o;2173:328::-;2250:6;2258;2266;2319:2;2307:9;2298:7;2294:23;2290:32;2287:52;;;2335:1;2332;2325:12;2287:52;2358:29;2377:9;2358:29;:::i;:::-;2348:39;;2406:38;2440:2;2429:9;2425:18;2406:38;:::i;:::-;2396:48;;2491:2;2480:9;2476:18;2463:32;2453:42;;2173:328;;;;;:::o;2506:186::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;2657:29;2676:9;2657:29;:::i;2879:347::-;2944:6;2952;3005:2;2993:9;2984:7;2980:23;2976:32;2973:52;;;3021:1;3018;3011:12;2973:52;3044:29;3063:9;3044:29;:::i;:::-;3034:39;;3123:2;3112:9;3108:18;3095:32;3170:5;3163:13;3156:21;3149:5;3146:32;3136:60;;3192:1;3189;3182:12;3136:60;3215:5;3205:15;;;2879:347;;;;;:::o;3231:127::-;3292:10;3287:3;3283:20;3280:1;3273:31;3323:4;3320:1;3313:15;3347:4;3344:1;3337:15;3363:1138;3458:6;3466;3474;3482;3535:3;3523:9;3514:7;3510:23;3506:33;3503:53;;;3552:1;3549;3542:12;3503:53;3575:29;3594:9;3575:29;:::i;:::-;3565:39;;3623:38;3657:2;3646:9;3642:18;3623:38;:::i;:::-;3613:48;;3708:2;3697:9;3693:18;3680:32;3670:42;;3763:2;3752:9;3748:18;3735:32;3786:18;3827:2;3819:6;3816:14;3813:34;;;3843:1;3840;3833:12;3813:34;3881:6;3870:9;3866:22;3856:32;;3926:7;3919:4;3915:2;3911:13;3907:27;3897:55;;3948:1;3945;3938:12;3897:55;3984:2;3971:16;4006:2;4002;3999:10;3996:36;;;4012:18;;:::i;:::-;4087:2;4081:9;4055:2;4141:13;;-1:-1:-1;;4137:22:15;;;4161:2;4133:31;4129:40;4117:53;;;4185:18;;;4205:22;;;4182:46;4179:72;;;4231:18;;:::i;:::-;4271:10;4267:2;4260:22;4306:2;4298:6;4291:18;4346:7;4341:2;4336;4332;4328:11;4324:20;4321:33;4318:53;;;4367:1;4364;4357:12;4318:53;4423:2;4418;4414;4410:11;4405:2;4397:6;4393:15;4380:46;4468:1;4463:2;4458;4450:6;4446:15;4442:24;4435:35;4489:6;4479:16;;;;;;;3363:1138;;;;;;;:::o;4506:260::-;4574:6;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4674:29;4693:9;4674:29;:::i;:::-;4664:39;;4722:38;4756:2;4745:9;4741:18;4722:38;:::i;:::-;4712:48;;4506:260;;;;;:::o;4771:380::-;4850:1;4846:12;;;;4893;;;4914:61;;4968:4;4960:6;4956:17;4946:27;;4914:61;5021:2;5013:6;5010:14;4990:18;4987:38;4984:161;;;5067:10;5062:3;5058:20;5055:1;5048:31;5102:4;5099:1;5092:15;5130:4;5127:1;5120:15;4984:161;;4771:380;;;:::o;6396:413::-;6598:2;6580:21;;;6637:2;6617:18;;;6610:30;6676:34;6671:2;6656:18;;6649:62;-1:-1:-1;;;6742:2:15;6727:18;;6720:47;6799:3;6784:19;;6396:413::o;8051:470::-;8230:3;8268:6;8262:13;8284:53;8330:6;8325:3;8318:4;8310:6;8306:17;8284:53;:::i;:::-;8400:13;;8359:16;;;;8422:57;8400:13;8359:16;8456:4;8444:17;;8422:57;:::i;:::-;8495:20;;8051:470;-1:-1:-1;;;;8051:470:15:o;9754:127::-;9815:10;9810:3;9806:20;9803:1;9796:31;9846:4;9843:1;9836:15;9870:4;9867:1;9860:15;9886:125;9926:4;9954:1;9951;9948:8;9945:34;;;9959:18;;:::i;:::-;-1:-1:-1;9996:9:15;;9886:125::o;10016:128::-;10056:3;10087:1;10083:6;10080:1;10077:13;10074:39;;;10093:18;;:::i;:::-;-1:-1:-1;10129:9:15;;10016:128::o;10503:414::-;10705:2;10687:21;;;10744:2;10724:18;;;10717:30;10783:34;10778:2;10763:18;;10756:62;-1:-1:-1;;;10849:2:15;10834:18;;10827:48;10907:3;10892:19;;10503:414::o;10922:135::-;10961:3;-1:-1:-1;;10982:17:15;;10979:43;;;11002:18;;:::i;:::-;-1:-1:-1;11049:1:15;11038:13;;10922:135::o;11062:127::-;11123:10;11118:3;11114:20;11111:1;11104:31;11154:4;11151:1;11144:15;11178:4;11175:1;11168:15;11194:120;11234:1;11260;11250:35;;11265:18;;:::i;:::-;-1:-1:-1;11299:9:15;;11194:120::o;11319:112::-;11351:1;11377;11367:35;;11382:18;;:::i;:::-;-1:-1:-1;11416:9:15;;11319:112::o;11436:127::-;11497:10;11492:3;11488:20;11485:1;11478:31;11528:4;11525:1;11518:15;11552:4;11549:1;11542:15;11568:489;-1:-1:-1;;;;;11837:15:15;;;11819:34;;11889:15;;11884:2;11869:18;;11862:43;11936:2;11921:18;;11914:34;;;11984:3;11979:2;11964:18;;11957:31;;;11762:4;;12005:46;;12031:19;;12023:6;12005:46;:::i;:::-;11997:54;11568:489;-1:-1:-1;;;;;;11568:489:15:o;12062:249::-;12131:6;12184:2;12172:9;12163:7;12159:23;12155:32;12152:52;;;12200:1;12197;12190:12;12152:52;12232:9;12226:16;12251:30;12275:5;12251:30;:::i", "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: balance query for the zero address\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: owner query for nonexistent token\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overriden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n _safeTransfer(from, to, tokenId, _data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory _data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, _data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer of token that is not own\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits a {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits a {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param _data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n", "sourcePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "ast": { "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "exportedSymbols": { "Address": [ 1521 ], "Context": [ 1543 ], "ERC165": [ 1844 ], "ERC721": [ 935 ], "IERC165": [ 1856 ], "IERC721": [ 1051 ], "IERC721Metadata": [ 1224 ], "IERC721Receiver": [ 1069 ], "Strings": [ 1820 ] }, "id": 936, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { "id": 106, "literals": [ "solidity", "^", "0.8", ".0" ], "nodeType": "PragmaDirective", "src": "92:23:1" }, { "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "file": "./IERC721.sol", "id": 107, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1052, "src": "117:23:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "file": "./IERC721Receiver.sol", "id": 108, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1070, "src": "141:31:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "file": "./extensions/IERC721Metadata.sol", "id": 109, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1225, "src": "173:42:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Address.sol", "file": "../../utils/Address.sol", "id": 110, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1522, "src": "216:33:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 111, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1544, "src": "250:33:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", "file": "../../utils/Strings.sol", "id": 112, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1821, "src": "284:33:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol", "file": "../../utils/introspection/ERC165.sol", "id": 113, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1845, "src": "318:46:1", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 115, "name": "Context", "nodeType": "IdentifierPath", "referencedDeclaration": 1543, "src": "632:7:1" }, "id": 116, "nodeType": "InheritanceSpecifier", "src": "632:7:1" }, { "baseName": { "id": 117, "name": "ERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 1844, "src": "641:6:1" }, "id": 118, "nodeType": "InheritanceSpecifier", "src": "641:6:1" }, { "baseName": { "id": 119, "name": "IERC721", "nodeType": "IdentifierPath", "referencedDeclaration": 1051, "src": "649:7:1" }, "id": 120, "nodeType": "InheritanceSpecifier", "src": "649:7:1" }, { "baseName": { "id": 121, "name": "IERC721Metadata", "nodeType": "IdentifierPath", "referencedDeclaration": 1224, "src": "658:15:1" }, "id": 122, "nodeType": "InheritanceSpecifier", "src": "658:15:1" } ], "canonicalName": "ERC721", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 114, "nodeType": "StructuredDocumentation", "src": "366:246:1", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}." }, "fullyImplemented": true, "id": 935, "linearizedBaseContracts": [ 935, 1224, 1051, 1844, 1856, 1543 ], "name": "ERC721", "nameLocation": "622:6:1", "nodeType": "ContractDefinition", "nodes": [ { "id": 125, "libraryName": { "id": 123, "name": "Address", "nodeType": "IdentifierPath", "referencedDeclaration": 1521, "src": "686:7:1" }, "nodeType": "UsingForDirective", "src": "680:26:1", "typeName": { "id": 124, "name": "address", "nodeType": "ElementaryTypeName", "src": "698:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "id": 128, "libraryName": { "id": 126, "name": "Strings", "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "717:7:1" }, "nodeType": "UsingForDirective", "src": "711:26:1", "typeName": { "id": 127, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "id": 130, "mutability": "mutable", "name": "_name", "nameLocation": "776:5:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "761:20:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 129, "name": "string", "nodeType": "ElementaryTypeName", "src": "761:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "constant": false, "id": 132, "mutability": "mutable", "name": "_symbol", "nameLocation": "823:7:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "808:22:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 131, "name": "string", "nodeType": "ElementaryTypeName", "src": "808:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "constant": false, "id": 136, "mutability": "mutable", "name": "_owners", "nameLocation": "919:7:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "883:43:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 135, "keyType": { "id": 133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "891:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "883:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 134, "name": "address", "nodeType": "ElementaryTypeName", "src": "902:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "visibility": "private" }, { "constant": false, "id": 140, "mutability": "mutable", "name": "_balances", "nameLocation": "1013:9:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "977:45:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 139, "keyType": { "id": 137, "name": "address", "nodeType": "ElementaryTypeName", "src": "985:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "977:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "996:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "visibility": "private" }, { "constant": false, "id": 144, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1114:15:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "1078:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 143, "keyType": { "id": 141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1086:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "1078:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 142, "name": "address", "nodeType": "ElementaryTypeName", "src": "1097:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "visibility": "private" }, { "constant": false, "id": 150, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1237:18:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "1184:71:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "typeName": { "id": 149, "keyType": { "id": 145, "name": "address", "nodeType": "ElementaryTypeName", "src": "1192:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1184:44:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "valueType": { "id": 148, "keyType": { "id": 146, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1203:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 147, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1222:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } }, "visibility": "private" }, { "body": { "id": 166, "nodeType": "Block", "src": "1431:57:1", "statements": [ { "expression": { "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 158, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "1441:5:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 159, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "1449:5:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1441:13:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 161, "nodeType": "ExpressionStatement", "src": "1441:13:1" }, { "expression": { "id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 162, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 132, "src": "1464:7:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 163, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 155, "src": "1474:7:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1464:17:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 165, "nodeType": "ExpressionStatement", "src": "1464:17:1" } ] }, "documentation": { "id": 151, "nodeType": "StructuredDocumentation", "src": "1262:108:1", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." }, "id": 167, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { "id": 156, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 153, "mutability": "mutable", "name": "name_", "nameLocation": "1401:5:1", "nodeType": "VariableDeclaration", "scope": 167, "src": "1387:19:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 152, "name": "string", "nodeType": "ElementaryTypeName", "src": "1387:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 155, "mutability": "mutable", "name": "symbol_", "nameLocation": "1422:7:1", "nodeType": "VariableDeclaration", "scope": 167, "src": "1408:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 154, "name": "string", "nodeType": "ElementaryTypeName", "src": "1408:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1386:44:1" }, "returnParameters": { "id": 157, "nodeType": "ParameterList", "parameters": [], "src": "1431:0:1" }, "scope": 935, "src": "1375:113:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 1843, 1855 ], "body": { "id": 197, "nodeType": "Block", "src": "1663:192:1", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 178, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 170, "src": "1692:11:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "arguments": [ { "id": 180, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1051, "src": "1712:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$", "typeString": "type(contract IERC721)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$", "typeString": "type(contract IERC721)" } ], "id": 179, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967269, "src": "1707:4:1", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1707:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$1051", "typeString": "type(contract IERC721)" } }, "id": 182, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1707:25:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "1692:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 184, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 170, "src": "1748:11:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "arguments": [ { "id": 186, "name": "IERC721Metadata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1224, "src": "1768:15:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$", "typeString": "type(contract IERC721Metadata)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$", "typeString": "type(contract IERC721Metadata)" } ], "id": 185, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967269, "src": "1763:4:1", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 187, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1763:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$1224", "typeString": "type(contract IERC721Metadata)" } }, "id": 188, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1763:33:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "1748:48:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1692:104:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 193, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 170, "src": "1836:11:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "expression": { "id": 191, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, "src": "1812:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_super$_ERC721_$935_$", "typeString": "type(contract super ERC721)" } }, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 1843, "src": "1812:23:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)" } }, "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1812:36:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1692:156:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 177, "id": 196, "nodeType": "Return", "src": "1673:175:1" } ] }, "documentation": { "id": 168, "nodeType": "StructuredDocumentation", "src": "1494:56:1", "text": " @dev See {IERC165-supportsInterface}." }, "functionSelector": "01ffc9a7", "id": 198, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1564:17:1", "nodeType": "FunctionDefinition", "overrides": { "id": 174, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 172, "name": "ERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 1844, "src": "1631:6:1" }, { "id": 173, "name": "IERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 1856, "src": "1639:7:1" } ], "src": "1622:25:1" }, "parameters": { "id": 171, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 170, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1589:11:1", "nodeType": "VariableDeclaration", "scope": 198, "src": "1582:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 169, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1582:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" } ], "src": "1581:20:1" }, "returnParameters": { "id": 177, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 176, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 198, "src": "1657:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 175, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1657:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "1656:6:1" }, "scope": 935, "src": "1555:300:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 976 ], "body": { "id": 221, "nodeType": "Block", "src": "1995:124:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 208, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "2013:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2030:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 210, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2022:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 209, "name": "address", "nodeType": "ElementaryTypeName", "src": "2022:7:1", "typeDescriptions": {} } }, "id": 212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2022:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2013:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373", "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2034:44:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", "typeString": "literal_string \"ERC721: balance query for the zero address\"" }, "value": "ERC721: balance query for the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", "typeString": "literal_string \"ERC721: balance query for the zero address\"" } ], "id": 207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "2005:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2005:74:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 216, "nodeType": "ExpressionStatement", "src": "2005:74:1" }, { "expression": { "baseExpression": { "id": 217, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "2096:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 219, "indexExpression": { "id": 218, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "2106:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2096:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 206, "id": 220, "nodeType": "Return", "src": "2089:23:1" } ] }, "documentation": { "id": 199, "nodeType": "StructuredDocumentation", "src": "1861:48:1", "text": " @dev See {IERC721-balanceOf}." }, "functionSelector": "70a08231", "id": 222, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "1923:9:1", "nodeType": "FunctionDefinition", "overrides": { "id": 203, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1968:8:1" }, "parameters": { "id": 202, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 201, "mutability": "mutable", "name": "owner", "nameLocation": "1941:5:1", "nodeType": "VariableDeclaration", "scope": 222, "src": "1933:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 200, "name": "address", "nodeType": "ElementaryTypeName", "src": "1933:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1932:15:1" }, "returnParameters": { "id": 206, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 205, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 222, "src": "1986:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 204, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1986:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1985:9:1" }, "scope": 935, "src": "1914:205:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 984 ], "body": { "id": 249, "nodeType": "Block", "src": "2257:154:1", "statements": [ { "assignments": [ 232 ], "declarations": [ { "constant": false, "id": 232, "mutability": "mutable", "name": "owner", "nameLocation": "2275:5:1", "nodeType": "VariableDeclaration", "scope": 249, "src": "2267:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 231, "name": "address", "nodeType": "ElementaryTypeName", "src": "2267:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 236, "initialValue": { "baseExpression": { "id": 233, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "2283:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 235, "indexExpression": { "id": 234, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 225, "src": "2291:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2283:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2267:32:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 238, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "2317:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2334:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 240, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2326:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 239, "name": "address", "nodeType": "ElementaryTypeName", "src": "2326:7:1", "typeDescriptions": {} } }, "id": 242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2326:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2317:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2338:43:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" }, "value": "ERC721: owner query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" } ], "id": 237, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "2309:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2309:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 246, "nodeType": "ExpressionStatement", "src": "2309:73:1" }, { "expression": { "id": 247, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "2399:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 230, "id": 248, "nodeType": "Return", "src": "2392:12:1" } ] }, "documentation": { "id": 223, "nodeType": "StructuredDocumentation", "src": "2125:46:1", "text": " @dev See {IERC721-ownerOf}." }, "functionSelector": "6352211e", "id": 250, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "2185:7:1", "nodeType": "FunctionDefinition", "overrides": { "id": 227, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2230:8:1" }, "parameters": { "id": 226, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 225, "mutability": "mutable", "name": "tokenId", "nameLocation": "2201:7:1", "nodeType": "VariableDeclaration", "scope": 250, "src": "2193:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 224, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2193:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2192:17:1" }, "returnParameters": { "id": 230, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 229, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 250, "src": "2248:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 228, "name": "address", "nodeType": "ElementaryTypeName", "src": "2248:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "2247:9:1" }, "scope": 935, "src": "2176:235:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1209 ], "body": { "id": 259, "nodeType": "Block", "src": "2542:29:1", "statements": [ { "expression": { "id": 257, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "2559:5:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 256, "id": 258, "nodeType": "Return", "src": "2552:12:1" } ] }, "documentation": { "id": 251, "nodeType": "StructuredDocumentation", "src": "2417:51:1", "text": " @dev See {IERC721Metadata-name}." }, "functionSelector": "06fdde03", "id": 260, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2482:4:1", "nodeType": "FunctionDefinition", "overrides": { "id": 253, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2509:8:1" }, "parameters": { "id": 252, "nodeType": "ParameterList", "parameters": [], "src": "2486:2:1" }, "returnParameters": { "id": 256, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 255, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 260, "src": "2527:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 254, "name": "string", "nodeType": "ElementaryTypeName", "src": "2527:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2526:15:1" }, "scope": 935, "src": "2473:98:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1215 ], "body": { "id": 269, "nodeType": "Block", "src": "2706:31:1", "statements": [ { "expression": { "id": 267, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 132, "src": "2723:7:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 266, "id": 268, "nodeType": "Return", "src": "2716:14:1" } ] }, "documentation": { "id": 261, "nodeType": "StructuredDocumentation", "src": "2577:53:1", "text": " @dev See {IERC721Metadata-symbol}." }, "functionSelector": "95d89b41", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2644:6:1", "nodeType": "FunctionDefinition", "overrides": { "id": 263, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2673:8:1" }, "parameters": { "id": 262, "nodeType": "ParameterList", "parameters": [], "src": "2650:2:1" }, "returnParameters": { "id": 266, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 265, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 270, "src": "2691:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 264, "name": "string", "nodeType": "ElementaryTypeName", "src": "2691:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2690:15:1" }, "scope": 935, "src": "2635:102:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1223 ], "body": { "id": 311, "nodeType": "Block", "src": "2891:241:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 281, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 273, "src": "2917:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 280, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "2909:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 282, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2909:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2927:49:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" }, "value": "ERC721Metadata: URI query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" } ], "id": 279, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "2901:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2901:76:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 285, "nodeType": "ExpressionStatement", "src": "2901:76:1" }, { "assignments": [ 287 ], "declarations": [ { "constant": false, "id": 287, "mutability": "mutable", "name": "baseURI", "nameLocation": "3002:7:1", "nodeType": "VariableDeclaration", "scope": 311, "src": "2988:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 286, "name": "string", "nodeType": "ElementaryTypeName", "src": "2988:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "id": 290, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 288, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "3012:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)" } }, "id": 289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3012:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2988:34:1" }, { "expression": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "arguments": [ { "id": 293, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "3045:7:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 292, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3039:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 291, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3039:5:1", "typeDescriptions": {} } }, "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3039:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "3039:21:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3063:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3039:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "hexValue": "", "id": 308, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3123:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }, "id": 309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3039:86:1", "trueExpression": { "arguments": [ { "arguments": [ { "id": 302, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "3091:7:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 303, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 273, "src": "3100:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "3100:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (string memory)" } }, "id": 305, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3100:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "expression": { "id": 300, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967295, "src": "3074:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 301, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "3074:16:1", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3074:45:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 299, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3067:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 298, "name": "string", "nodeType": "ElementaryTypeName", "src": "3067:6:1", "typeDescriptions": {} } }, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3067:53:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 278, "id": 310, "nodeType": "Return", "src": "3032:93:1" } ] }, "documentation": { "id": 271, "nodeType": "StructuredDocumentation", "src": "2743:55:1", "text": " @dev See {IERC721Metadata-tokenURI}." }, "functionSelector": "c87b56dd", "id": 312, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "2812:8:1", "nodeType": "FunctionDefinition", "overrides": { "id": 275, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2858:8:1" }, "parameters": { "id": 274, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 273, "mutability": "mutable", "name": "tokenId", "nameLocation": "2829:7:1", "nodeType": "VariableDeclaration", "scope": 312, "src": "2821:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 272, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2821:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2820:17:1" }, "returnParameters": { "id": 278, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 277, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 312, "src": "2876:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 276, "name": "string", "nodeType": "ElementaryTypeName", "src": "2876:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2875:15:1" }, "scope": 935, "src": "2803:329:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "body": { "id": 320, "nodeType": "Block", "src": "3439:26:1", "statements": [ { "expression": { "hexValue": "", "id": 318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3456:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }, "functionReturnParameters": 317, "id": 319, "nodeType": "Return", "src": "3449:9:1" } ] }, "documentation": { "id": 313, "nodeType": "StructuredDocumentation", "src": "3138:230:1", "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overriden in child contracts." }, "id": 321, "implemented": true, "kind": "function", "modifiers": [], "name": "_baseURI", "nameLocation": "3382:8:1", "nodeType": "FunctionDefinition", "parameters": { "id": 314, "nodeType": "ParameterList", "parameters": [], "src": "3390:2:1" }, "returnParameters": { "id": 317, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 316, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 321, "src": "3424:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 315, "name": "string", "nodeType": "ElementaryTypeName", "src": "3424:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "3423:15:1" }, "scope": 935, "src": "3373:92:1", "stateMutability": "view", "virtual": true, "visibility": "internal" }, { "baseFunctions": [ 1012 ], "body": { "id": 363, "nodeType": "Block", "src": "3592:331:1", "statements": [ { "assignments": [ 331 ], "declarations": [ { "constant": false, "id": 331, "mutability": "mutable", "name": "owner", "nameLocation": "3610:5:1", "nodeType": "VariableDeclaration", "scope": 363, "src": "3602:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 330, "name": "address", "nodeType": "ElementaryTypeName", "src": "3602:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 336, "initialValue": { "arguments": [ { "id": 334, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3633:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 332, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "3618:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "3618:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3618:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "3602:39:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 338, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 324, "src": "3659:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 339, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "3665:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3659:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", "id": 341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3672:35:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\"" }, "value": "ERC721: approval to current owner" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\"" } ], "id": 337, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "3651:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 342, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3651:57:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 343, "nodeType": "ExpressionStatement", "src": "3651:57:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 345, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "3740:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 346, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3740:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 347, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "3756:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3740:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 350, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "3782:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 351, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "3789:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 352, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3789:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 349, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3765:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3765:37:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3740:62:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c", "id": 355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3816:58:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" }, "value": "ERC721: approve caller is not owner nor approved for all" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" } ], "id": 344, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "3719:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3719:165:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 357, "nodeType": "ExpressionStatement", "src": "3719:165:1" }, { "expression": { "arguments": [ { "id": 359, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 324, "src": "3904:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 360, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3908:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 358, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "3895:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3895:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 362, "nodeType": "ExpressionStatement", "src": "3895:21:1" } ] }, "documentation": { "id": 322, "nodeType": "StructuredDocumentation", "src": "3471:46:1", "text": " @dev See {IERC721-approve}." }, "functionSelector": "095ea7b3", "id": 364, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3531:7:1", "nodeType": "FunctionDefinition", "overrides": { "id": 328, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3583:8:1" }, "parameters": { "id": 327, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 324, "mutability": "mutable", "name": "to", "nameLocation": "3547:2:1", "nodeType": "VariableDeclaration", "scope": 364, "src": "3539:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 323, "name": "address", "nodeType": "ElementaryTypeName", "src": "3539:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 326, "mutability": "mutable", "name": "tokenId", "nameLocation": "3559:7:1", "nodeType": "VariableDeclaration", "scope": 364, "src": "3551:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3551:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3538:29:1" }, "returnParameters": { "id": 329, "nodeType": "ParameterList", "parameters": [], "src": "3592:0:1" }, "scope": 935, "src": "3522:401:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1020 ], "body": { "id": 384, "nodeType": "Block", "src": "4069:132:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 375, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "4095:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 374, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "4087:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4087:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4105:46:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" }, "value": "ERC721: approved query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" } ], "id": 373, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "4079:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4079:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 379, "nodeType": "ExpressionStatement", "src": "4079:73:1" }, { "expression": { "baseExpression": { "id": 380, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 144, "src": "4170:15:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 382, "indexExpression": { "id": 381, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "4186:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4170:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 372, "id": 383, "nodeType": "Return", "src": "4163:31:1" } ] }, "documentation": { "id": 365, "nodeType": "StructuredDocumentation", "src": "3929:50:1", "text": " @dev See {IERC721-getApproved}." }, "functionSelector": "081812fc", "id": 385, "implemented": true, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "3993:11:1", "nodeType": "FunctionDefinition", "overrides": { "id": 369, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4042:8:1" }, "parameters": { "id": 368, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 367, "mutability": "mutable", "name": "tokenId", "nameLocation": "4013:7:1", "nodeType": "VariableDeclaration", "scope": 385, "src": "4005:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 366, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4005:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4004:17:1" }, "returnParameters": { "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 371, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 385, "src": "4060:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 370, "name": "address", "nodeType": "ElementaryTypeName", "src": "4060:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "4059:9:1" }, "scope": 935, "src": "3984:217:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1028 ], "body": { "id": 401, "nodeType": "Block", "src": "4352:69:1", "statements": [ { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 395, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "4381:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4381:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 397, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 388, "src": "4395:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 398, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 390, "src": "4405:8:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 394, "name": "_setApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 861, "src": "4362:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)" } }, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4362:52:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 400, "nodeType": "ExpressionStatement", "src": "4362:52:1" } ] }, "documentation": { "id": 386, "nodeType": "StructuredDocumentation", "src": "4207:56:1", "text": " @dev See {IERC721-setApprovalForAll}." }, "functionSelector": "a22cb465", "id": 402, "implemented": true, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4277:17:1", "nodeType": "FunctionDefinition", "overrides": { "id": 392, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4343:8:1" }, "parameters": { "id": 391, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 388, "mutability": "mutable", "name": "operator", "nameLocation": "4303:8:1", "nodeType": "VariableDeclaration", "scope": 402, "src": "4295:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 387, "name": "address", "nodeType": "ElementaryTypeName", "src": "4295:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 390, "mutability": "mutable", "name": "approved", "nameLocation": "4318:8:1", "nodeType": "VariableDeclaration", "scope": 402, "src": "4313:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 389, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4313:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "4294:33:1" }, "returnParameters": { "id": 393, "nodeType": "ParameterList", "parameters": [], "src": "4352:0:1" }, "scope": 935, "src": "4268:153:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1038 ], "body": { "id": 419, "nodeType": "Block", "src": "4590:59:1", "statements": [ { "expression": { "baseExpression": { "baseExpression": { "id": 413, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "4607:18:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 415, "indexExpression": { "id": 414, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "4626:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4607:25:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 417, "indexExpression": { "id": 416, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 407, "src": "4633:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4607:35:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 412, "id": 418, "nodeType": "Return", "src": "4600:42:1" } ] }, "documentation": { "id": 403, "nodeType": "StructuredDocumentation", "src": "4427:55:1", "text": " @dev See {IERC721-isApprovedForAll}." }, "functionSelector": "e985e9c5", "id": 420, "implemented": true, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4496:16:1", "nodeType": "FunctionDefinition", "overrides": { "id": 409, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4566:8:1" }, "parameters": { "id": 408, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 405, "mutability": "mutable", "name": "owner", "nameLocation": "4521:5:1", "nodeType": "VariableDeclaration", "scope": 420, "src": "4513:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 404, "name": "address", "nodeType": "ElementaryTypeName", "src": "4513:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 407, "mutability": "mutable", "name": "operator", "nameLocation": "4536:8:1", "nodeType": "VariableDeclaration", "scope": 420, "src": "4528:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 406, "name": "address", "nodeType": "ElementaryTypeName", "src": "4528:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "4512:33:1" }, "returnParameters": { "id": 412, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 411, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 420, "src": "4584:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 410, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4584:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "4583:6:1" }, "scope": 935, "src": "4487:162:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1004 ], "body": { "id": 446, "nodeType": "Block", "src": "4830:211:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 433, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "4919:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4919:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 435, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 427, "src": "4933:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 432, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 584, "src": "4900:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" } }, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4900:41:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4943:51:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" }, "value": "ERC721: transfer caller is not owner nor approved" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" } ], "id": 431, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "4892:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4892:103:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 439, "nodeType": "ExpressionStatement", "src": "4892:103:1" }, { "expression": { "arguments": [ { "id": 441, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5016:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 442, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 425, "src": "5022:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 443, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 427, "src": "5026:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 440, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "5006:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 444, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5006:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 445, "nodeType": "ExpressionStatement", "src": "5006:28:1" } ] }, "documentation": { "id": 421, "nodeType": "StructuredDocumentation", "src": "4655:51:1", "text": " @dev See {IERC721-transferFrom}." }, "functionSelector": "23b872dd", "id": 447, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "4720:12:1", "nodeType": "FunctionDefinition", "overrides": { "id": 429, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4821:8:1" }, "parameters": { "id": 428, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 423, "mutability": "mutable", "name": "from", "nameLocation": "4750:4:1", "nodeType": "VariableDeclaration", "scope": 447, "src": "4742:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 422, "name": "address", "nodeType": "ElementaryTypeName", "src": "4742:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 425, "mutability": "mutable", "name": "to", "nameLocation": "4772:2:1", "nodeType": "VariableDeclaration", "scope": 447, "src": "4764:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 424, "name": "address", "nodeType": "ElementaryTypeName", "src": "4764:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 427, "mutability": "mutable", "name": "tokenId", "nameLocation": "4792:7:1", "nodeType": "VariableDeclaration", "scope": 447, "src": "4784:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 426, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4784:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4732:73:1" }, "returnParameters": { "id": 430, "nodeType": "ParameterList", "parameters": [], "src": "4830:0:1" }, "scope": 935, "src": "4711:330:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 994 ], "body": { "id": 465, "nodeType": "Block", "src": "5230:56:1", "statements": [ { "expression": { "arguments": [ { "id": 459, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 450, "src": "5257:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 460, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 452, "src": "5263:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 461, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "5267:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "", "id": 462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5276:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "id": 458, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [ 466, 496 ], "referencedDeclaration": 496, "src": "5240:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5240:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 464, "nodeType": "ExpressionStatement", "src": "5240:39:1" } ] }, "documentation": { "id": 448, "nodeType": "StructuredDocumentation", "src": "5047:55:1", "text": " @dev See {IERC721-safeTransferFrom}." }, "functionSelector": "42842e0e", "id": 466, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5116:16:1", "nodeType": "FunctionDefinition", "overrides": { "id": 456, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5221:8:1" }, "parameters": { "id": 455, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 450, "mutability": "mutable", "name": "from", "nameLocation": "5150:4:1", "nodeType": "VariableDeclaration", "scope": 466, "src": "5142:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 449, "name": "address", "nodeType": "ElementaryTypeName", "src": "5142:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 452, "mutability": "mutable", "name": "to", "nameLocation": "5172:2:1", "nodeType": "VariableDeclaration", "scope": 466, "src": "5164:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 451, "name": "address", "nodeType": "ElementaryTypeName", "src": "5164:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 454, "mutability": "mutable", "name": "tokenId", "nameLocation": "5192:7:1", "nodeType": "VariableDeclaration", "scope": 466, "src": "5184:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 453, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5184:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5132:73:1" }, "returnParameters": { "id": 457, "nodeType": "ParameterList", "parameters": [], "src": "5230:0:1" }, "scope": 935, "src": "5107:179:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1050 ], "body": { "id": 495, "nodeType": "Block", "src": "5503:169:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 481, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "5540:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5540:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 483, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "5554:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 480, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 584, "src": "5521:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" } }, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5521:41:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", "id": 485, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5564:51:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" }, "value": "ERC721: transfer caller is not owner nor approved" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" } ], "id": 479, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "5513:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5513:103:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 487, "nodeType": "ExpressionStatement", "src": "5513:103:1" }, { "expression": { "arguments": [ { "id": 489, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 469, "src": "5640:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 490, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "5646:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 491, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "5650:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 492, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 475, "src": "5659:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 488, "name": "_safeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 525, "src": "5626:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5626:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 494, "nodeType": "ExpressionStatement", "src": "5626:39:1" } ] }, "documentation": { "id": 467, "nodeType": "StructuredDocumentation", "src": "5292:55:1", "text": " @dev See {IERC721-safeTransferFrom}." }, "functionSelector": "b88d4fde", "id": 496, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5361:16:1", "nodeType": "FunctionDefinition", "overrides": { "id": 477, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5494:8:1" }, "parameters": { "id": 476, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 469, "mutability": "mutable", "name": "from", "nameLocation": "5395:4:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5387:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 468, "name": "address", "nodeType": "ElementaryTypeName", "src": "5387:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 471, "mutability": "mutable", "name": "to", "nameLocation": "5417:2:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5409:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 470, "name": "address", "nodeType": "ElementaryTypeName", "src": "5409:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 473, "mutability": "mutable", "name": "tokenId", "nameLocation": "5437:7:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5429:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 472, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5429:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 475, "mutability": "mutable", "name": "_data", "nameLocation": "5467:5:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5454:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 474, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5454:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "5377:101:1" }, "returnParameters": { "id": 478, "nodeType": "ParameterList", "parameters": [], "src": "5503:0:1" }, "scope": 935, "src": "5352:320:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "body": { "id": 524, "nodeType": "Block", "src": "6675:166:1", "statements": [ { "expression": { "arguments": [ { "id": 509, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "6695:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 510, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 501, "src": "6701:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 511, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 503, "src": "6705:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 508, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "6685:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 512, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6685:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 513, "nodeType": "ExpressionStatement", "src": "6685:28:1" }, { "expression": { "arguments": [ { "arguments": [ { "id": 516, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "6754:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 517, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 501, "src": "6760:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 518, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 503, "src": "6764:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 519, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 505, "src": "6773:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 515, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "6731:22:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)" } }, "id": 520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6731:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 521, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6781:52:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" }, "value": "ERC721: transfer to non ERC721Receiver implementer" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" } ], "id": 514, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "6723:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 522, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6723:111:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 523, "nodeType": "ExpressionStatement", "src": "6723:111:1" } ] }, "documentation": { "id": 497, "nodeType": "StructuredDocumentation", "src": "5678:851:1", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." }, "id": 525, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "6543:13:1", "nodeType": "FunctionDefinition", "parameters": { "id": 506, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 499, "mutability": "mutable", "name": "from", "nameLocation": "6574:4:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6566:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 498, "name": "address", "nodeType": "ElementaryTypeName", "src": "6566:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 501, "mutability": "mutable", "name": "to", "nameLocation": "6596:2:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6588:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 500, "name": "address", "nodeType": "ElementaryTypeName", "src": "6588:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 503, "mutability": "mutable", "name": "tokenId", "nameLocation": "6616:7:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6608:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 502, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6608:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 505, "mutability": "mutable", "name": "_data", "nameLocation": "6646:5:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6633:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 504, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6633:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "6556:101:1" }, "returnParameters": { "id": 507, "nodeType": "ParameterList", "parameters": [], "src": "6675:0:1" }, "scope": 935, "src": "6534:307:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 542, "nodeType": "Block", "src": "7215:54:1", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { "id": 533, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "7232:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 535, "indexExpression": { "id": 534, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 528, "src": "7240:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7232:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7260:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 537, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7252:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 536, "name": "address", "nodeType": "ElementaryTypeName", "src": "7252:7:1", "typeDescriptions": {} } }, "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7252:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7232:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 532, "id": 541, "nodeType": "Return", "src": "7225:37:1" } ] }, "documentation": { "id": 526, "nodeType": "StructuredDocumentation", "src": "6847:292:1", "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)." }, "id": 543, "implemented": true, "kind": "function", "modifiers": [], "name": "_exists", "nameLocation": "7153:7:1", "nodeType": "FunctionDefinition", "parameters": { "id": 529, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 528, "mutability": "mutable", "name": "tokenId", "nameLocation": "7169:7:1", "nodeType": "VariableDeclaration", "scope": 543, "src": "7161:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7161:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "7160:17:1" }, "returnParameters": { "id": 532, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 531, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 543, "src": "7209:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 530, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7209:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "7208:6:1" }, "scope": 935, "src": "7144:125:1", "stateMutability": "view", "virtual": true, "visibility": "internal" }, { "body": { "id": 583, "nodeType": "Block", "src": "7526:245:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 555, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "7552:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 554, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "7544:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7544:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7562:46:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" }, "value": "ERC721: operator query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" } ], "id": 553, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "7536:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7536:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 559, "nodeType": "ExpressionStatement", "src": "7536:73:1" }, { "assignments": [ 561 ], "declarations": [ { "constant": false, "id": 561, "mutability": "mutable", "name": "owner", "nameLocation": "7627:5:1", "nodeType": "VariableDeclaration", "scope": 583, "src": "7619:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 560, "name": "address", "nodeType": "ElementaryTypeName", "src": "7619:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 566, "initialValue": { "arguments": [ { "id": 564, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "7650:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 562, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "7635:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "7635:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7635:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7619:39:1" }, { "expression": { "components": [ { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 567, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 546, "src": "7676:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 568, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 561, "src": "7687:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7676:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 571, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "7708:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 570, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7696:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7696:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 573, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 546, "src": "7720:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7696:31:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7676:51:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 577, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 561, "src": "7748:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 578, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 546, "src": "7755:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 576, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "7731:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7731:32:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7676:87:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 581, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7675:89:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 552, "id": 582, "nodeType": "Return", "src": "7668:96:1" } ] }, "documentation": { "id": 544, "nodeType": "StructuredDocumentation", "src": "7275:147:1", "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist." }, "id": 584, "implemented": true, "kind": "function", "modifiers": [], "name": "_isApprovedOrOwner", "nameLocation": "7436:18:1", "nodeType": "FunctionDefinition", "parameters": { "id": 549, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 546, "mutability": "mutable", "name": "spender", "nameLocation": "7463:7:1", "nodeType": "VariableDeclaration", "scope": 584, "src": "7455:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 545, "name": "address", "nodeType": "ElementaryTypeName", "src": "7455:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 548, "mutability": "mutable", "name": "tokenId", "nameLocation": "7480:7:1", "nodeType": "VariableDeclaration", "scope": 584, "src": "7472:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 547, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7472:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "7454:34:1" }, "returnParameters": { "id": 552, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 551, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 584, "src": "7520:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 550, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7520:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "7519:6:1" }, "scope": 935, "src": "7427:344:1", "stateMutability": "view", "virtual": true, "visibility": "internal" }, { "body": { "id": 598, "nodeType": "Block", "src": "8166:43:1", "statements": [ { "expression": { "arguments": [ { "id": 593, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "8186:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 594, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 589, "src": "8190:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "", "id": 595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8199:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "id": 592, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [ 599, 628 ], "referencedDeclaration": 628, "src": "8176:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,bytes memory)" } }, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8176:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 597, "nodeType": "ExpressionStatement", "src": "8176:26:1" } ] }, "documentation": { "id": 585, "nodeType": "StructuredDocumentation", "src": "7777:319:1", "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." }, "id": 599, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8110:9:1", "nodeType": "FunctionDefinition", "parameters": { "id": 590, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 587, "mutability": "mutable", "name": "to", "nameLocation": "8128:2:1", "nodeType": "VariableDeclaration", "scope": 599, "src": "8120:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 586, "name": "address", "nodeType": "ElementaryTypeName", "src": "8120:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 589, "mutability": "mutable", "name": "tokenId", "nameLocation": "8140:7:1", "nodeType": "VariableDeclaration", "scope": 599, "src": "8132:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 588, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8132:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "8119:29:1" }, "returnParameters": { "id": 591, "nodeType": "ParameterList", "parameters": [], "src": "8166:0:1" }, "scope": 935, "src": "8101:108:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 627, "nodeType": "Block", "src": "8545:196:1", "statements": [ { "expression": { "arguments": [ { "id": 610, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "8561:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 611, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "8565:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 609, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 685, "src": "8555:5:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8555:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 613, "nodeType": "ExpressionStatement", "src": "8555:18:1" }, { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8635:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 617, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8627:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 616, "name": "address", "nodeType": "ElementaryTypeName", "src": "8627:7:1", "typeDescriptions": {} } }, "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8627:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 620, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "8639:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 621, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "8643:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 622, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 606, "src": "8652:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 615, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "8604:22:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)" } }, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8604:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 624, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8672:52:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" }, "value": "ERC721: transfer to non ERC721Receiver implementer" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" } ], "id": 614, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "8583:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8583:151:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 626, "nodeType": "ExpressionStatement", "src": "8583:151:1" } ] }, "documentation": { "id": 600, "nodeType": "StructuredDocumentation", "src": "8215:210:1", "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." }, "id": 628, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8439:9:1", "nodeType": "FunctionDefinition", "parameters": { "id": 607, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 602, "mutability": "mutable", "name": "to", "nameLocation": "8466:2:1", "nodeType": "VariableDeclaration", "scope": 628, "src": "8458:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 601, "name": "address", "nodeType": "ElementaryTypeName", "src": "8458:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 604, "mutability": "mutable", "name": "tokenId", "nameLocation": "8486:7:1", "nodeType": "VariableDeclaration", "scope": 628, "src": "8478:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8478:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 606, "mutability": "mutable", "name": "_data", "nameLocation": "8516:5:1", "nodeType": "VariableDeclaration", "scope": 628, "src": "8503:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 605, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8503:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "8448:79:1" }, "returnParameters": { "id": 608, "nodeType": "ParameterList", "parameters": [], "src": "8545:0:1" }, "scope": 935, "src": "8430:311:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 684, "nodeType": "Block", "src": "9124:311:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 637, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9142:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 640, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9156:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 639, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9148:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 638, "name": "address", "nodeType": "ElementaryTypeName", "src": "9148:7:1", "typeDescriptions": {} } }, "id": 641, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9148:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9142:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", "id": 643, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9160:34:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\"" }, "value": "ERC721: mint to the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\"" } ], "id": 636, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "9134:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 644, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9134:61:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 645, "nodeType": "ExpressionStatement", "src": "9134:61:1" }, { "expression": { "arguments": [ { "id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "9213:17:1", "subExpression": { "arguments": [ { "id": 648, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9222:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 647, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "9214:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9214:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", "id": 651, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9232:30:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\"" }, "value": "ERC721: token already minted" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\"" } ], "id": 646, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "9205:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9205:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 653, "nodeType": "ExpressionStatement", "src": "9205:58:1" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9303:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9295:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 655, "name": "address", "nodeType": "ElementaryTypeName", "src": "9295:7:1", "typeDescriptions": {} } }, "id": 658, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9295:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 659, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9307:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 660, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9311:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 654, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "9274:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9274:45:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 662, "nodeType": "ExpressionStatement", "src": "9274:45:1" }, { "expression": { "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 663, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "9330:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 665, "indexExpression": { "id": 664, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9340:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9330:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "hexValue": "31", "id": 666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9347:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "9330:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 668, "nodeType": "ExpressionStatement", "src": "9330:18:1" }, { "expression": { "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 669, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "9358:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 671, "indexExpression": { "id": 670, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9366:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9358:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 672, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9377:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9358:21:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 674, "nodeType": "ExpressionStatement", "src": "9358:21:1" }, { "eventCall": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 678, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9412:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 677, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9404:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 676, "name": "address", "nodeType": "ElementaryTypeName", "src": "9404:7:1", "typeDescriptions": {} } }, "id": 679, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9404:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 680, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9416:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 681, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9420:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 675, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 950, "src": "9395:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9395:33:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 683, "nodeType": "EmitStatement", "src": "9390:38:1" } ] }, "documentation": { "id": 629, "nodeType": "StructuredDocumentation", "src": "8747:311:1", "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event." }, "id": 685, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "9072:5:1", "nodeType": "FunctionDefinition", "parameters": { "id": 634, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 631, "mutability": "mutable", "name": "to", "nameLocation": "9086:2:1", "nodeType": "VariableDeclaration", "scope": 685, "src": "9078:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 630, "name": "address", "nodeType": "ElementaryTypeName", "src": "9078:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 633, "mutability": "mutable", "name": "tokenId", "nameLocation": "9098:7:1", "nodeType": "VariableDeclaration", "scope": 685, "src": "9090:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9090:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "9077:29:1" }, "returnParameters": { "id": 635, "nodeType": "ParameterList", "parameters": [], "src": "9124:0:1" }, "scope": 935, "src": "9063:372:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 735, "nodeType": "Block", "src": "9701:299:1", "statements": [ { "assignments": [ 692 ], "declarations": [ { "constant": false, "id": 692, "mutability": "mutable", "name": "owner", "nameLocation": "9719:5:1", "nodeType": "VariableDeclaration", "scope": 735, "src": "9711:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 691, "name": "address", "nodeType": "ElementaryTypeName", "src": "9711:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 697, "initialValue": { "arguments": [ { "id": 695, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9742:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 693, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9727:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "9727:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 696, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9727:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "9711:39:1" }, { "expression": { "arguments": [ { "id": 699, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 692, "src": "9782:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "hexValue": "30", "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9797:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 701, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9789:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 700, "name": "address", "nodeType": "ElementaryTypeName", "src": "9789:7:1", "typeDescriptions": {} } }, "id": 703, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9789:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 704, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9801:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 698, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "9761:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 705, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9761:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 706, "nodeType": "ExpressionStatement", "src": "9761:48:1" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 710, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9864:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9856:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 708, "name": "address", "nodeType": "ElementaryTypeName", "src": "9856:7:1", "typeDescriptions": {} } }, "id": 711, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9856:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 712, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9868:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 707, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "9847:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9847:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 714, "nodeType": "ExpressionStatement", "src": "9847:29:1" }, { "expression": { "id": 719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 715, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "9887:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 717, "indexExpression": { "id": 716, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 692, "src": "9897:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9887:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "hexValue": "31", "id": 718, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9907:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "9887:21:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 720, "nodeType": "ExpressionStatement", "src": "9887:21:1" }, { "expression": { "id": 724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "9918:23:1", "subExpression": { "baseExpression": { "id": 721, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "9925:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 723, "indexExpression": { "id": 722, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9933:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9925:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 725, "nodeType": "ExpressionStatement", "src": "9918:23:1" }, { "eventCall": { "arguments": [ { "id": 727, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 692, "src": "9966:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "hexValue": "30", "id": 730, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9981:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 729, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9973:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 728, "name": "address", "nodeType": "ElementaryTypeName", "src": "9973:7:1", "typeDescriptions": {} } }, "id": 731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9973:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 732, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9985:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 726, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 950, "src": "9957:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 733, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9957:36:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 734, "nodeType": "EmitStatement", "src": "9952:41:1" } ] }, "documentation": { "id": 686, "nodeType": "StructuredDocumentation", "src": "9441:206:1", "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event." }, "id": 736, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "9661:5:1", "nodeType": "FunctionDefinition", "parameters": { "id": 689, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 688, "mutability": "mutable", "name": "tokenId", "nameLocation": "9675:7:1", "nodeType": "VariableDeclaration", "scope": 736, "src": "9667:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 687, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9667:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "9666:17:1" }, "returnParameters": { "id": 690, "nodeType": "ParameterList", "parameters": [], "src": "9701:0:1" }, "scope": 935, "src": "9652:348:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 804, "nodeType": "Block", "src": "10433:451:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 752, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 749, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10466:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 747, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "10451:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 748, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "10451:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10451:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 751, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10478:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10451:31:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e", "id": 753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10484:43:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", "typeString": "literal_string \"ERC721: transfer of token that is not own\"" }, "value": "ERC721: transfer of token that is not own" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", "typeString": "literal_string \"ERC721: transfer of token that is not own\"" } ], "id": 746, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "10443:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10443:85:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 755, "nodeType": "ExpressionStatement", "src": "10443:85:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 757, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10546:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10560:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 759, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10552:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 758, "name": "address", "nodeType": "ElementaryTypeName", "src": "10552:7:1", "typeDescriptions": {} } }, "id": 761, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10552:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10546:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10564:38:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\"" }, "value": "ERC721: transfer to the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\"" } ], "id": 756, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "10538:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10538:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 765, "nodeType": "ExpressionStatement", "src": "10538:65:1" }, { "expression": { "arguments": [ { "id": 767, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10635:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 768, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10641:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 769, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10645:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 766, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "10614:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 770, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10614:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 771, "nodeType": "ExpressionStatement", "src": "10614:39:1" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10732:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 774, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10724:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 773, "name": "address", "nodeType": "ElementaryTypeName", "src": "10724:7:1", "typeDescriptions": {} } }, "id": 776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10724:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 777, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10736:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 772, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "10715:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 778, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10715:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 779, "nodeType": "ExpressionStatement", "src": "10715:29:1" }, { "expression": { "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 780, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "10755:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 782, "indexExpression": { "id": 781, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10765:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10755:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "hexValue": "31", "id": 783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10774:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "10755:20:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 785, "nodeType": "ExpressionStatement", "src": "10755:20:1" }, { "expression": { "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 786, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "10785:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 788, "indexExpression": { "id": 787, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10795:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10785:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "hexValue": "31", "id": 789, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10802:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "10785:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 791, "nodeType": "ExpressionStatement", "src": "10785:18:1" }, { "expression": { "id": 796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 792, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "10813:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 794, "indexExpression": { "id": 793, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10821:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10813:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 795, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10832:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10813:21:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 797, "nodeType": "ExpressionStatement", "src": "10813:21:1" }, { "eventCall": { "arguments": [ { "id": 799, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10859:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 800, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10865:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 801, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10869:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 798, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 950, "src": "10850:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10850:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 803, "nodeType": "EmitStatement", "src": "10845:32:1" } ] }, "documentation": { "id": 737, "nodeType": "StructuredDocumentation", "src": "10006:313:1", "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event." }, "id": 805, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "10333:9:1", "nodeType": "FunctionDefinition", "parameters": { "id": 744, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 739, "mutability": "mutable", "name": "from", "nameLocation": "10360:4:1", "nodeType": "VariableDeclaration", "scope": 805, "src": "10352:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 738, "name": "address", "nodeType": "ElementaryTypeName", "src": "10352:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 741, "mutability": "mutable", "name": "to", "nameLocation": "10382:2:1", "nodeType": "VariableDeclaration", "scope": 805, "src": "10374:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 740, "name": "address", "nodeType": "ElementaryTypeName", "src": "10374:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 743, "mutability": "mutable", "name": "tokenId", "nameLocation": "10402:7:1", "nodeType": "VariableDeclaration", "scope": 805, "src": "10394:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 742, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10394:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "10342:73:1" }, "returnParameters": { "id": 745, "nodeType": "ParameterList", "parameters": [], "src": "10433:0:1" }, "scope": 935, "src": "10324:560:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 828, "nodeType": "Block", "src": "11059:107:1", "statements": [ { "expression": { "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 813, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 144, "src": "11069:15:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 815, "indexExpression": { "id": 814, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 810, "src": "11085:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11069:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 816, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 808, "src": "11096:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "11069:29:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 818, "nodeType": "ExpressionStatement", "src": "11069:29:1" }, { "eventCall": { "arguments": [ { "arguments": [ { "id": 822, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 810, "src": "11137:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 820, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "11122:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "11122:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11122:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 824, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 808, "src": "11147:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 825, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 810, "src": "11151:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 819, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "11113:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11113:46:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 827, "nodeType": "EmitStatement", "src": "11108:51:1" } ] }, "documentation": { "id": 806, "nodeType": "StructuredDocumentation", "src": "10890:100:1", "text": " @dev Approve `to` to operate on `tokenId`\n Emits a {Approval} event." }, "id": 829, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "11004:8:1", "nodeType": "FunctionDefinition", "parameters": { "id": 811, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 808, "mutability": "mutable", "name": "to", "nameLocation": "11021:2:1", "nodeType": "VariableDeclaration", "scope": 829, "src": "11013:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 807, "name": "address", "nodeType": "ElementaryTypeName", "src": "11013:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 810, "mutability": "mutable", "name": "tokenId", "nameLocation": "11033:7:1", "nodeType": "VariableDeclaration", "scope": 829, "src": "11025:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 809, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11025:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "11012:29:1" }, "returnParameters": { "id": 812, "nodeType": "ParameterList", "parameters": [], "src": "11059:0:1" }, "scope": 935, "src": "10995:171:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 860, "nodeType": "Block", "src": "11424:184:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 842, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 840, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 832, "src": "11442:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 841, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 834, "src": "11451:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "11442:17:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", "id": 843, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11461:27:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\"" }, "value": "ERC721: approve to caller" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\"" } ], "id": 839, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "11434:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11434:55:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 845, "nodeType": "ExpressionStatement", "src": "11434:55:1" }, { "expression": { "id": 852, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "baseExpression": { "id": 846, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "11499:18:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 849, "indexExpression": { "id": 847, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 832, "src": "11518:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11499:25:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 850, "indexExpression": { "id": 848, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 834, "src": "11525:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11499:35:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 851, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 836, "src": "11537:8:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "11499:46:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 853, "nodeType": "ExpressionStatement", "src": "11499:46:1" }, { "eventCall": { "arguments": [ { "id": 855, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 832, "src": "11575:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 856, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 834, "src": "11582:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 857, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 836, "src": "11592:8:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 854, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 968, "src": "11560:14:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)" } }, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11560:41:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 859, "nodeType": "EmitStatement", "src": "11555:46:1" } ] }, "documentation": { "id": 830, "nodeType": "StructuredDocumentation", "src": "11172:124:1", "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits a {ApprovalForAll} event." }, "id": 861, "implemented": true, "kind": "function", "modifiers": [], "name": "_setApprovalForAll", "nameLocation": "11310:18:1", "nodeType": "FunctionDefinition", "parameters": { "id": 837, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 832, "mutability": "mutable", "name": "owner", "nameLocation": "11346:5:1", "nodeType": "VariableDeclaration", "scope": 861, "src": "11338:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 831, "name": "address", "nodeType": "ElementaryTypeName", "src": "11338:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 834, "mutability": "mutable", "name": "operator", "nameLocation": "11369:8:1", "nodeType": "VariableDeclaration", "scope": 861, "src": "11361:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 833, "name": "address", "nodeType": "ElementaryTypeName", "src": "11361:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 836, "mutability": "mutable", "name": "approved", "nameLocation": "11392:8:1", "nodeType": "VariableDeclaration", "scope": 861, "src": "11387:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 835, "name": "bool", "nodeType": "ElementaryTypeName", "src": "11387:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "11328:78:1" }, "returnParameters": { "id": 838, "nodeType": "ParameterList", "parameters": [], "src": "11424:0:1" }, "scope": 935, "src": "11301:307:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 922, "nodeType": "Block", "src": "12317:622:1", "statements": [ { "condition": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 875, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "12331:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 1244, "src": "12331:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)" } }, "id": 877, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12331:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 920, "nodeType": "Block", "src": "12897:36:1", "statements": [ { "expression": { "hexValue": "74727565", "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "12918:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 874, "id": 919, "nodeType": "Return", "src": "12911:11:1" } ] }, "id": 921, "nodeType": "IfStatement", "src": "12327:606:1", "trueBody": { "id": 917, "nodeType": "Block", "src": "12348:543:1", "statements": [ { "clauses": [ { "block": { "id": 897, "nodeType": "Block", "src": "12463:91:1", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 891, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 889, "src": "12488:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "expression": { "id": 892, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "12498:15:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$", "typeString": "type(contract IERC721Receiver)" } }, "id": 893, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1068, "src": "12498:32:1", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" } }, "id": 894, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "src": "12498:41:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "12488:51:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 874, "id": 896, "nodeType": "Return", "src": "12481:58:1" } ] }, "errorName": "", "id": 898, "nodeType": "TryCatchClause", "parameters": { "id": 890, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 889, "mutability": "mutable", "name": "retval", "nameLocation": "12455:6:1", "nodeType": "VariableDeclaration", "scope": 898, "src": "12448:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 888, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "12448:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" } ], "src": "12447:15:1" }, "src": "12439:115:1" }, { "block": { "id": 914, "nodeType": "Block", "src": "12583:298:1", "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 902, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "12605:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 903, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "12605:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12622:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "12605:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 912, "nodeType": "Block", "src": "12732:135:1", "statements": [ { "AST": { "nodeType": "YulBlock", "src": "12763:86:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "12800:2:1", "type": "", "value": "32" }, { "name": "reason", "nodeType": "YulIdentifier", "src": "12804:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "12796:3:1" }, "nodeType": "YulFunctionCall", "src": "12796:15:1" }, { "arguments": [ { "name": "reason", "nodeType": "YulIdentifier", "src": "12819:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "12813:5:1" }, "nodeType": "YulFunctionCall", "src": "12813:13:1" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "12789:6:1" }, "nodeType": "YulFunctionCall", "src": "12789:38:1" }, "nodeType": "YulExpressionStatement", "src": "12789:38:1" } ] }, "evmVersion": "london", "externalReferences": [ { "declaration": 900, "isOffset": false, "isSlot": false, "src": "12804:6:1", "valueSize": 1 }, { "declaration": 900, "isOffset": false, "isSlot": false, "src": "12819:6:1", "valueSize": 1 } ], "id": 911, "nodeType": "InlineAssembly", "src": "12754:95:1" } ] }, "id": 913, "nodeType": "IfStatement", "src": "12601:266:1", "trueBody": { "id": 910, "nodeType": "Block", "src": "12625:101:1", "statements": [ { "expression": { "arguments": [ { "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 907, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12654:52:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" }, "value": "ERC721: transfer to non ERC721Receiver implementer" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" } ], "id": 906, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967277, 4294967277 ], "referencedDeclaration": 4294967277, "src": "12647:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 908, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12647:60:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 909, "nodeType": "ExpressionStatement", "src": "12647:60:1" } ] } } ] }, "errorName": "", "id": 915, "nodeType": "TryCatchClause", "parameters": { "id": 901, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 900, "mutability": "mutable", "name": "reason", "nameLocation": "12575:6:1", "nodeType": "VariableDeclaration", "scope": 915, "src": "12562:19:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 899, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12562:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "12561:21:1" }, "src": "12555:326:1" } ], "externalCall": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 882, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "12403:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12403:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 884, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "12417:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 885, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "12423:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 886, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 870, "src": "12432:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "arguments": [ { "id": 879, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "12382:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 878, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "12366:15:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$", "typeString": "type(contract IERC721Receiver)" } }, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12366:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC721Receiver_$1069", "typeString": "contract IERC721Receiver" } }, "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1068, "src": "12366:36:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" } }, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12366:72:1", "tryCall": true, "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "id": 916, "nodeType": "TryStatement", "src": "12362:519:1" } ] } } ] }, "documentation": { "id": 862, "nodeType": "StructuredDocumentation", "src": "11614:542:1", "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value" }, "id": 923, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOnERC721Received", "nameLocation": "12170:22:1", "nodeType": "FunctionDefinition", "parameters": { "id": 871, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 864, "mutability": "mutable", "name": "from", "nameLocation": "12210:4:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12202:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 863, "name": "address", "nodeType": "ElementaryTypeName", "src": "12202:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 866, "mutability": "mutable", "name": "to", "nameLocation": "12232:2:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12224:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 865, "name": "address", "nodeType": "ElementaryTypeName", "src": "12224:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 868, "mutability": "mutable", "name": "tokenId", "nameLocation": "12252:7:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12244:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 867, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12244:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 870, "mutability": "mutable", "name": "_data", "nameLocation": "12282:5:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12269:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 869, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12269:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "12192:101:1" }, "returnParameters": { "id": 874, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 873, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12311:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 872, "name": "bool", "nodeType": "ElementaryTypeName", "src": "12311:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "12310:6:1" }, "scope": 935, "src": "12161:778:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 933, "nodeType": "Block", "src": "13615:2:1", "statements": [] }, "documentation": { "id": 924, "nodeType": "StructuredDocumentation", "src": "12945:545:1", "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." }, "id": 934, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "13504:20:1", "nodeType": "FunctionDefinition", "parameters": { "id": 931, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 926, "mutability": "mutable", "name": "from", "nameLocation": "13542:4:1", "nodeType": "VariableDeclaration", "scope": 934, "src": "13534:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 925, "name": "address", "nodeType": "ElementaryTypeName", "src": "13534:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 928, "mutability": "mutable", "name": "to", "nameLocation": "13564:2:1", "nodeType": "VariableDeclaration", "scope": 934, "src": "13556:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 927, "name": "address", "nodeType": "ElementaryTypeName", "src": "13556:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 930, "mutability": "mutable", "name": "tokenId", "nameLocation": "13584:7:1", "nodeType": "VariableDeclaration", "scope": 934, "src": "13576:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13576:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "13524:73:1" }, "returnParameters": { "id": 932, "nodeType": "ParameterList", "parameters": [], "src": "13615:0:1" }, "scope": 935, "src": "13495:122:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" } ], "scope": 936, "src": "613:13006:1", "usedErrors": [] } ], "src": "92:13528:1" }, "legacyAST": { "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "exportedSymbols": { "Address": [ 1521 ], "Context": [ 1543 ], "ERC165": [ 1844 ], "ERC721": [ 935 ], "IERC165": [ 1856 ], "IERC721": [ 1051 ], "IERC721Metadata": [ 1224 ], "IERC721Receiver": [ 1069 ], "Strings": [ 1820 ] }, "id": 936, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { "id": 106, "literals": [ "solidity", "^", "0.8", ".0" ], "nodeType": "PragmaDirective", "src": "92:23:1" }, { "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", "file": "./IERC721.sol", "id": 107, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1052, "src": "117:23:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", "file": "./IERC721Receiver.sol", "id": 108, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1070, "src": "141:31:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", "file": "./extensions/IERC721Metadata.sol", "id": 109, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1225, "src": "173:42:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Address.sol", "file": "../../utils/Address.sol", "id": 110, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1522, "src": "216:33:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 111, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1544, "src": "250:33:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", "file": "../../utils/Strings.sol", "id": 112, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1821, "src": "284:33:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol", "file": "../../utils/introspection/ERC165.sol", "id": 113, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 936, "sourceUnit": 1845, "src": "318:46:1", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 115, "name": "Context", "nodeType": "IdentifierPath", "referencedDeclaration": 1543, "src": "632:7:1" }, "id": 116, "nodeType": "InheritanceSpecifier", "src": "632:7:1" }, { "baseName": { "id": 117, "name": "ERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 1844, "src": "641:6:1" }, "id": 118, "nodeType": "InheritanceSpecifier", "src": "641:6:1" }, { "baseName": { "id": 119, "name": "IERC721", "nodeType": "IdentifierPath", "referencedDeclaration": 1051, "src": "649:7:1" }, "id": 120, "nodeType": "InheritanceSpecifier", "src": "649:7:1" }, { "baseName": { "id": 121, "name": "IERC721Metadata", "nodeType": "IdentifierPath", "referencedDeclaration": 1224, "src": "658:15:1" }, "id": 122, "nodeType": "InheritanceSpecifier", "src": "658:15:1" } ], "canonicalName": "ERC721", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 114, "nodeType": "StructuredDocumentation", "src": "366:246:1", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}." }, "fullyImplemented": true, "id": 935, "linearizedBaseContracts": [ 935, 1224, 1051, 1844, 1856, 1543 ], "name": "ERC721", "nameLocation": "622:6:1", "nodeType": "ContractDefinition", "nodes": [ { "id": 125, "libraryName": { "id": 123, "name": "Address", "nodeType": "IdentifierPath", "referencedDeclaration": 1521, "src": "686:7:1" }, "nodeType": "UsingForDirective", "src": "680:26:1", "typeName": { "id": 124, "name": "address", "nodeType": "ElementaryTypeName", "src": "698:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "id": 128, "libraryName": { "id": 126, "name": "Strings", "nodeType": "IdentifierPath", "referencedDeclaration": 1820, "src": "717:7:1" }, "nodeType": "UsingForDirective", "src": "711:26:1", "typeName": { "id": 127, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "id": 130, "mutability": "mutable", "name": "_name", "nameLocation": "776:5:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "761:20:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 129, "name": "string", "nodeType": "ElementaryTypeName", "src": "761:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "constant": false, "id": 132, "mutability": "mutable", "name": "_symbol", "nameLocation": "823:7:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "808:22:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 131, "name": "string", "nodeType": "ElementaryTypeName", "src": "808:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "constant": false, "id": 136, "mutability": "mutable", "name": "_owners", "nameLocation": "919:7:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "883:43:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 135, "keyType": { "id": 133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "891:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "883:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 134, "name": "address", "nodeType": "ElementaryTypeName", "src": "902:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "visibility": "private" }, { "constant": false, "id": 140, "mutability": "mutable", "name": "_balances", "nameLocation": "1013:9:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "977:45:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 139, "keyType": { "id": 137, "name": "address", "nodeType": "ElementaryTypeName", "src": "985:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "977:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "996:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "visibility": "private" }, { "constant": false, "id": 144, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1114:15:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "1078:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 143, "keyType": { "id": 141, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1086:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "1078:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 142, "name": "address", "nodeType": "ElementaryTypeName", "src": "1097:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "visibility": "private" }, { "constant": false, "id": 150, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1237:18:1", "nodeType": "VariableDeclaration", "scope": 935, "src": "1184:71:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "typeName": { "id": 149, "keyType": { "id": 145, "name": "address", "nodeType": "ElementaryTypeName", "src": "1192:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1184:44:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "valueType": { "id": 148, "keyType": { "id": 146, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1203:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 147, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1222:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } }, "visibility": "private" }, { "body": { "id": 166, "nodeType": "Block", "src": "1431:57:1", "statements": [ { "expression": { "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 158, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "1441:5:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 159, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "1449:5:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1441:13:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 161, "nodeType": "ExpressionStatement", "src": "1441:13:1" }, { "expression": { "id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 162, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 132, "src": "1464:7:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 163, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 155, "src": "1474:7:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1464:17:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 165, "nodeType": "ExpressionStatement", "src": "1464:17:1" } ] }, "documentation": { "id": 151, "nodeType": "StructuredDocumentation", "src": "1262:108:1", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." }, "id": 167, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { "id": 156, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 153, "mutability": "mutable", "name": "name_", "nameLocation": "1401:5:1", "nodeType": "VariableDeclaration", "scope": 167, "src": "1387:19:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 152, "name": "string", "nodeType": "ElementaryTypeName", "src": "1387:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 155, "mutability": "mutable", "name": "symbol_", "nameLocation": "1422:7:1", "nodeType": "VariableDeclaration", "scope": 167, "src": "1408:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 154, "name": "string", "nodeType": "ElementaryTypeName", "src": "1408:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1386:44:1" }, "returnParameters": { "id": 157, "nodeType": "ParameterList", "parameters": [], "src": "1431:0:1" }, "scope": 935, "src": "1375:113:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 1843, 1855 ], "body": { "id": 197, "nodeType": "Block", "src": "1663:192:1", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 178, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 170, "src": "1692:11:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "arguments": [ { "id": 180, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1051, "src": "1712:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$", "typeString": "type(contract IERC721)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_contract$_IERC721_$1051_$", "typeString": "type(contract IERC721)" } ], "id": 179, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967269, "src": "1707:4:1", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1707:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$1051", "typeString": "type(contract IERC721)" } }, "id": 182, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1707:25:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "1692:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 189, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 184, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 170, "src": "1748:11:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "arguments": [ { "id": 186, "name": "IERC721Metadata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1224, "src": "1768:15:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$", "typeString": "type(contract IERC721Metadata)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$1224_$", "typeString": "type(contract IERC721Metadata)" } ], "id": 185, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967269, "src": "1763:4:1", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 187, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1763:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$1224", "typeString": "type(contract IERC721Metadata)" } }, "id": 188, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1763:33:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "1748:48:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1692:104:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 193, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 170, "src": "1836:11:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "expression": { "id": 191, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, "src": "1812:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_super$_ERC721_$935_$", "typeString": "type(contract super ERC721)" } }, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 1843, "src": "1812:23:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)" } }, "id": 194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1812:36:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1692:156:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 177, "id": 196, "nodeType": "Return", "src": "1673:175:1" } ] }, "documentation": { "id": 168, "nodeType": "StructuredDocumentation", "src": "1494:56:1", "text": " @dev See {IERC165-supportsInterface}." }, "functionSelector": "01ffc9a7", "id": 198, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1564:17:1", "nodeType": "FunctionDefinition", "overrides": { "id": 174, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 172, "name": "ERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 1844, "src": "1631:6:1" }, { "id": 173, "name": "IERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 1856, "src": "1639:7:1" } ], "src": "1622:25:1" }, "parameters": { "id": 171, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 170, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1589:11:1", "nodeType": "VariableDeclaration", "scope": 198, "src": "1582:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 169, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1582:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" } ], "src": "1581:20:1" }, "returnParameters": { "id": 177, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 176, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 198, "src": "1657:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 175, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1657:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "1656:6:1" }, "scope": 935, "src": "1555:300:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 976 ], "body": { "id": 221, "nodeType": "Block", "src": "1995:124:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 213, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 208, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "2013:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2030:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 210, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2022:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 209, "name": "address", "nodeType": "ElementaryTypeName", "src": "2022:7:1", "typeDescriptions": {} } }, "id": 212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2022:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2013:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373", "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2034:44:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", "typeString": "literal_string \"ERC721: balance query for the zero address\"" }, "value": "ERC721: balance query for the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", "typeString": "literal_string \"ERC721: balance query for the zero address\"" } ], "id": 207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "2005:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2005:74:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 216, "nodeType": "ExpressionStatement", "src": "2005:74:1" }, { "expression": { "baseExpression": { "id": 217, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "2096:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 219, "indexExpression": { "id": 218, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 201, "src": "2106:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2096:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 206, "id": 220, "nodeType": "Return", "src": "2089:23:1" } ] }, "documentation": { "id": 199, "nodeType": "StructuredDocumentation", "src": "1861:48:1", "text": " @dev See {IERC721-balanceOf}." }, "functionSelector": "70a08231", "id": 222, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "1923:9:1", "nodeType": "FunctionDefinition", "overrides": { "id": 203, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1968:8:1" }, "parameters": { "id": 202, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 201, "mutability": "mutable", "name": "owner", "nameLocation": "1941:5:1", "nodeType": "VariableDeclaration", "scope": 222, "src": "1933:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 200, "name": "address", "nodeType": "ElementaryTypeName", "src": "1933:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1932:15:1" }, "returnParameters": { "id": 206, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 205, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 222, "src": "1986:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 204, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1986:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "1985:9:1" }, "scope": 935, "src": "1914:205:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 984 ], "body": { "id": 249, "nodeType": "Block", "src": "2257:154:1", "statements": [ { "assignments": [ 232 ], "declarations": [ { "constant": false, "id": 232, "mutability": "mutable", "name": "owner", "nameLocation": "2275:5:1", "nodeType": "VariableDeclaration", "scope": 249, "src": "2267:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 231, "name": "address", "nodeType": "ElementaryTypeName", "src": "2267:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 236, "initialValue": { "baseExpression": { "id": 233, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "2283:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 235, "indexExpression": { "id": 234, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 225, "src": "2291:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2283:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2267:32:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 243, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 238, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "2317:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2334:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 240, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2326:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 239, "name": "address", "nodeType": "ElementaryTypeName", "src": "2326:7:1", "typeDescriptions": {} } }, "id": 242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2326:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2317:19:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 244, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2338:43:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" }, "value": "ERC721: owner query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" } ], "id": 237, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "2309:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2309:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 246, "nodeType": "ExpressionStatement", "src": "2309:73:1" }, { "expression": { "id": 247, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 232, "src": "2399:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 230, "id": 248, "nodeType": "Return", "src": "2392:12:1" } ] }, "documentation": { "id": 223, "nodeType": "StructuredDocumentation", "src": "2125:46:1", "text": " @dev See {IERC721-ownerOf}." }, "functionSelector": "6352211e", "id": 250, "implemented": true, "kind": "function", "modifiers": [], "name": "ownerOf", "nameLocation": "2185:7:1", "nodeType": "FunctionDefinition", "overrides": { "id": 227, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2230:8:1" }, "parameters": { "id": 226, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 225, "mutability": "mutable", "name": "tokenId", "nameLocation": "2201:7:1", "nodeType": "VariableDeclaration", "scope": 250, "src": "2193:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 224, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2193:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2192:17:1" }, "returnParameters": { "id": 230, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 229, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 250, "src": "2248:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 228, "name": "address", "nodeType": "ElementaryTypeName", "src": "2248:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "2247:9:1" }, "scope": 935, "src": "2176:235:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1209 ], "body": { "id": 259, "nodeType": "Block", "src": "2542:29:1", "statements": [ { "expression": { "id": 257, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 130, "src": "2559:5:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 256, "id": 258, "nodeType": "Return", "src": "2552:12:1" } ] }, "documentation": { "id": 251, "nodeType": "StructuredDocumentation", "src": "2417:51:1", "text": " @dev See {IERC721Metadata-name}." }, "functionSelector": "06fdde03", "id": 260, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2482:4:1", "nodeType": "FunctionDefinition", "overrides": { "id": 253, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2509:8:1" }, "parameters": { "id": 252, "nodeType": "ParameterList", "parameters": [], "src": "2486:2:1" }, "returnParameters": { "id": 256, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 255, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 260, "src": "2527:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 254, "name": "string", "nodeType": "ElementaryTypeName", "src": "2527:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2526:15:1" }, "scope": 935, "src": "2473:98:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1215 ], "body": { "id": 269, "nodeType": "Block", "src": "2706:31:1", "statements": [ { "expression": { "id": 267, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 132, "src": "2723:7:1", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 266, "id": 268, "nodeType": "Return", "src": "2716:14:1" } ] }, "documentation": { "id": 261, "nodeType": "StructuredDocumentation", "src": "2577:53:1", "text": " @dev See {IERC721Metadata-symbol}." }, "functionSelector": "95d89b41", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2644:6:1", "nodeType": "FunctionDefinition", "overrides": { "id": 263, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2673:8:1" }, "parameters": { "id": 262, "nodeType": "ParameterList", "parameters": [], "src": "2650:2:1" }, "returnParameters": { "id": 266, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 265, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 270, "src": "2691:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 264, "name": "string", "nodeType": "ElementaryTypeName", "src": "2691:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2690:15:1" }, "scope": 935, "src": "2635:102:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1223 ], "body": { "id": 311, "nodeType": "Block", "src": "2891:241:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 281, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 273, "src": "2917:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 280, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "2909:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 282, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2909:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 283, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2927:49:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" }, "value": "ERC721Metadata: URI query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" } ], "id": 279, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "2901:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2901:76:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 285, "nodeType": "ExpressionStatement", "src": "2901:76:1" }, { "assignments": [ 287 ], "declarations": [ { "constant": false, "id": 287, "mutability": "mutable", "name": "baseURI", "nameLocation": "3002:7:1", "nodeType": "VariableDeclaration", "scope": 311, "src": "2988:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 286, "name": "string", "nodeType": "ElementaryTypeName", "src": "2988:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "id": 290, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 288, "name": "_baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 321, "src": "3012:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", "typeString": "function () view returns (string memory)" } }, "id": 289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3012:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2988:34:1" }, { "expression": { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 297, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "arguments": [ { "id": 293, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "3045:7:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 292, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3039:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 291, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3039:5:1", "typeDescriptions": {} } }, "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3039:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "3039:21:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3063:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3039:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "hexValue": "", "id": 308, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3123:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }, "id": 309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "3039:86:1", "trueExpression": { "arguments": [ { "arguments": [ { "id": 302, "name": "baseURI", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 287, "src": "3091:7:1", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 303, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 273, "src": "3100:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 1702, "src": "3100:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", "typeString": "function (uint256) pure returns (string memory)" } }, "id": 305, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3100:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "expression": { "id": 300, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967295, "src": "3074:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 301, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "3074:16:1", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3074:45:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 299, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3067:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 298, "name": "string", "nodeType": "ElementaryTypeName", "src": "3067:6:1", "typeDescriptions": {} } }, "id": 307, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3067:53:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 278, "id": 310, "nodeType": "Return", "src": "3032:93:1" } ] }, "documentation": { "id": 271, "nodeType": "StructuredDocumentation", "src": "2743:55:1", "text": " @dev See {IERC721Metadata-tokenURI}." }, "functionSelector": "c87b56dd", "id": 312, "implemented": true, "kind": "function", "modifiers": [], "name": "tokenURI", "nameLocation": "2812:8:1", "nodeType": "FunctionDefinition", "overrides": { "id": 275, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2858:8:1" }, "parameters": { "id": 274, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 273, "mutability": "mutable", "name": "tokenId", "nameLocation": "2829:7:1", "nodeType": "VariableDeclaration", "scope": 312, "src": "2821:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 272, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2821:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2820:17:1" }, "returnParameters": { "id": 278, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 277, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 312, "src": "2876:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 276, "name": "string", "nodeType": "ElementaryTypeName", "src": "2876:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2875:15:1" }, "scope": 935, "src": "2803:329:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "body": { "id": 320, "nodeType": "Block", "src": "3439:26:1", "statements": [ { "expression": { "hexValue": "", "id": 318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3456:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }, "functionReturnParameters": 317, "id": 319, "nodeType": "Return", "src": "3449:9:1" } ] }, "documentation": { "id": 313, "nodeType": "StructuredDocumentation", "src": "3138:230:1", "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overriden in child contracts." }, "id": 321, "implemented": true, "kind": "function", "modifiers": [], "name": "_baseURI", "nameLocation": "3382:8:1", "nodeType": "FunctionDefinition", "parameters": { "id": 314, "nodeType": "ParameterList", "parameters": [], "src": "3390:2:1" }, "returnParameters": { "id": 317, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 316, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 321, "src": "3424:13:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 315, "name": "string", "nodeType": "ElementaryTypeName", "src": "3424:6:1", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "3423:15:1" }, "scope": 935, "src": "3373:92:1", "stateMutability": "view", "virtual": true, "visibility": "internal" }, { "baseFunctions": [ 1012 ], "body": { "id": 363, "nodeType": "Block", "src": "3592:331:1", "statements": [ { "assignments": [ 331 ], "declarations": [ { "constant": false, "id": 331, "mutability": "mutable", "name": "owner", "nameLocation": "3610:5:1", "nodeType": "VariableDeclaration", "scope": 363, "src": "3602:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 330, "name": "address", "nodeType": "ElementaryTypeName", "src": "3602:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 336, "initialValue": { "arguments": [ { "id": 334, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3633:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 332, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "3618:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "3618:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3618:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "3602:39:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 338, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 324, "src": "3659:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 339, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "3665:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3659:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", "id": 341, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3672:35:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\"" }, "value": "ERC721: approval to current owner" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", "typeString": "literal_string \"ERC721: approval to current owner\"" } ], "id": 337, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "3651:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 342, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3651:57:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 343, "nodeType": "ExpressionStatement", "src": "3651:57:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 345, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "3740:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 346, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3740:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 347, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "3756:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3740:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 350, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "3782:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [], "expression": { "argumentTypes": [], "id": 351, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "3789:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 352, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3789:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 349, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "3765:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 353, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3765:37:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3740:62:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c", "id": 355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3816:58:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" }, "value": "ERC721: approve caller is not owner nor approved for all" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" } ], "id": 344, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "3719:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3719:165:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 357, "nodeType": "ExpressionStatement", "src": "3719:165:1" }, { "expression": { "arguments": [ { "id": 359, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 324, "src": "3904:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 360, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 326, "src": "3908:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 358, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "3895:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3895:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 362, "nodeType": "ExpressionStatement", "src": "3895:21:1" } ] }, "documentation": { "id": 322, "nodeType": "StructuredDocumentation", "src": "3471:46:1", "text": " @dev See {IERC721-approve}." }, "functionSelector": "095ea7b3", "id": 364, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "3531:7:1", "nodeType": "FunctionDefinition", "overrides": { "id": 328, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3583:8:1" }, "parameters": { "id": 327, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 324, "mutability": "mutable", "name": "to", "nameLocation": "3547:2:1", "nodeType": "VariableDeclaration", "scope": 364, "src": "3539:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 323, "name": "address", "nodeType": "ElementaryTypeName", "src": "3539:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 326, "mutability": "mutable", "name": "tokenId", "nameLocation": "3559:7:1", "nodeType": "VariableDeclaration", "scope": 364, "src": "3551:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 325, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3551:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3538:29:1" }, "returnParameters": { "id": 329, "nodeType": "ParameterList", "parameters": [], "src": "3592:0:1" }, "scope": 935, "src": "3522:401:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1020 ], "body": { "id": 384, "nodeType": "Block", "src": "4069:132:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 375, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "4095:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 374, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "4087:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4087:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 377, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4105:46:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" }, "value": "ERC721: approved query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" } ], "id": 373, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "4079:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4079:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 379, "nodeType": "ExpressionStatement", "src": "4079:73:1" }, { "expression": { "baseExpression": { "id": 380, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 144, "src": "4170:15:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 382, "indexExpression": { "id": 381, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "4186:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4170:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 372, "id": 383, "nodeType": "Return", "src": "4163:31:1" } ] }, "documentation": { "id": 365, "nodeType": "StructuredDocumentation", "src": "3929:50:1", "text": " @dev See {IERC721-getApproved}." }, "functionSelector": "081812fc", "id": 385, "implemented": true, "kind": "function", "modifiers": [], "name": "getApproved", "nameLocation": "3993:11:1", "nodeType": "FunctionDefinition", "overrides": { "id": 369, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4042:8:1" }, "parameters": { "id": 368, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 367, "mutability": "mutable", "name": "tokenId", "nameLocation": "4013:7:1", "nodeType": "VariableDeclaration", "scope": 385, "src": "4005:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 366, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4005:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4004:17:1" }, "returnParameters": { "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 371, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 385, "src": "4060:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 370, "name": "address", "nodeType": "ElementaryTypeName", "src": "4060:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "4059:9:1" }, "scope": 935, "src": "3984:217:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1028 ], "body": { "id": 401, "nodeType": "Block", "src": "4352:69:1", "statements": [ { "expression": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 395, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "4381:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4381:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 397, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 388, "src": "4395:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 398, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 390, "src": "4405:8:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 394, "name": "_setApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 861, "src": "4362:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)" } }, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4362:52:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 400, "nodeType": "ExpressionStatement", "src": "4362:52:1" } ] }, "documentation": { "id": 386, "nodeType": "StructuredDocumentation", "src": "4207:56:1", "text": " @dev See {IERC721-setApprovalForAll}." }, "functionSelector": "a22cb465", "id": 402, "implemented": true, "kind": "function", "modifiers": [], "name": "setApprovalForAll", "nameLocation": "4277:17:1", "nodeType": "FunctionDefinition", "overrides": { "id": 392, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4343:8:1" }, "parameters": { "id": 391, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 388, "mutability": "mutable", "name": "operator", "nameLocation": "4303:8:1", "nodeType": "VariableDeclaration", "scope": 402, "src": "4295:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 387, "name": "address", "nodeType": "ElementaryTypeName", "src": "4295:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 390, "mutability": "mutable", "name": "approved", "nameLocation": "4318:8:1", "nodeType": "VariableDeclaration", "scope": 402, "src": "4313:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 389, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4313:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "4294:33:1" }, "returnParameters": { "id": 393, "nodeType": "ParameterList", "parameters": [], "src": "4352:0:1" }, "scope": 935, "src": "4268:153:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1038 ], "body": { "id": 419, "nodeType": "Block", "src": "4590:59:1", "statements": [ { "expression": { "baseExpression": { "baseExpression": { "id": 413, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "4607:18:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 415, "indexExpression": { "id": 414, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "4626:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4607:25:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 417, "indexExpression": { "id": 416, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 407, "src": "4633:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4607:35:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 412, "id": 418, "nodeType": "Return", "src": "4600:42:1" } ] }, "documentation": { "id": 403, "nodeType": "StructuredDocumentation", "src": "4427:55:1", "text": " @dev See {IERC721-isApprovedForAll}." }, "functionSelector": "e985e9c5", "id": 420, "implemented": true, "kind": "function", "modifiers": [], "name": "isApprovedForAll", "nameLocation": "4496:16:1", "nodeType": "FunctionDefinition", "overrides": { "id": 409, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4566:8:1" }, "parameters": { "id": 408, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 405, "mutability": "mutable", "name": "owner", "nameLocation": "4521:5:1", "nodeType": "VariableDeclaration", "scope": 420, "src": "4513:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 404, "name": "address", "nodeType": "ElementaryTypeName", "src": "4513:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 407, "mutability": "mutable", "name": "operator", "nameLocation": "4536:8:1", "nodeType": "VariableDeclaration", "scope": 420, "src": "4528:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 406, "name": "address", "nodeType": "ElementaryTypeName", "src": "4528:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "4512:33:1" }, "returnParameters": { "id": 412, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 411, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 420, "src": "4584:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 410, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4584:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "4583:6:1" }, "scope": 935, "src": "4487:162:1", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1004 ], "body": { "id": 446, "nodeType": "Block", "src": "4830:211:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 433, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "4919:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4919:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 435, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 427, "src": "4933:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 432, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 584, "src": "4900:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" } }, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4900:41:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4943:51:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" }, "value": "ERC721: transfer caller is not owner nor approved" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" } ], "id": 431, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "4892:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4892:103:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 439, "nodeType": "ExpressionStatement", "src": "4892:103:1" }, { "expression": { "arguments": [ { "id": 441, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5016:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 442, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 425, "src": "5022:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 443, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 427, "src": "5026:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 440, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "5006:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 444, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5006:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 445, "nodeType": "ExpressionStatement", "src": "5006:28:1" } ] }, "documentation": { "id": 421, "nodeType": "StructuredDocumentation", "src": "4655:51:1", "text": " @dev See {IERC721-transferFrom}." }, "functionSelector": "23b872dd", "id": 447, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "4720:12:1", "nodeType": "FunctionDefinition", "overrides": { "id": 429, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4821:8:1" }, "parameters": { "id": 428, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 423, "mutability": "mutable", "name": "from", "nameLocation": "4750:4:1", "nodeType": "VariableDeclaration", "scope": 447, "src": "4742:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 422, "name": "address", "nodeType": "ElementaryTypeName", "src": "4742:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 425, "mutability": "mutable", "name": "to", "nameLocation": "4772:2:1", "nodeType": "VariableDeclaration", "scope": 447, "src": "4764:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 424, "name": "address", "nodeType": "ElementaryTypeName", "src": "4764:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 427, "mutability": "mutable", "name": "tokenId", "nameLocation": "4792:7:1", "nodeType": "VariableDeclaration", "scope": 447, "src": "4784:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 426, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4784:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4732:73:1" }, "returnParameters": { "id": 430, "nodeType": "ParameterList", "parameters": [], "src": "4830:0:1" }, "scope": 935, "src": "4711:330:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 994 ], "body": { "id": 465, "nodeType": "Block", "src": "5230:56:1", "statements": [ { "expression": { "arguments": [ { "id": 459, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 450, "src": "5257:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 460, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 452, "src": "5263:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 461, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "5267:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "", "id": 462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5276:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "id": 458, "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [ 466, 496 ], "referencedDeclaration": 496, "src": "5240:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5240:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 464, "nodeType": "ExpressionStatement", "src": "5240:39:1" } ] }, "documentation": { "id": 448, "nodeType": "StructuredDocumentation", "src": "5047:55:1", "text": " @dev See {IERC721-safeTransferFrom}." }, "functionSelector": "42842e0e", "id": 466, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5116:16:1", "nodeType": "FunctionDefinition", "overrides": { "id": 456, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5221:8:1" }, "parameters": { "id": 455, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 450, "mutability": "mutable", "name": "from", "nameLocation": "5150:4:1", "nodeType": "VariableDeclaration", "scope": 466, "src": "5142:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 449, "name": "address", "nodeType": "ElementaryTypeName", "src": "5142:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 452, "mutability": "mutable", "name": "to", "nameLocation": "5172:2:1", "nodeType": "VariableDeclaration", "scope": 466, "src": "5164:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 451, "name": "address", "nodeType": "ElementaryTypeName", "src": "5164:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 454, "mutability": "mutable", "name": "tokenId", "nameLocation": "5192:7:1", "nodeType": "VariableDeclaration", "scope": 466, "src": "5184:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 453, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5184:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5132:73:1" }, "returnParameters": { "id": 457, "nodeType": "ParameterList", "parameters": [], "src": "5230:0:1" }, "scope": 935, "src": "5107:179:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 1050 ], "body": { "id": 495, "nodeType": "Block", "src": "5503:169:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 481, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "5540:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5540:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 483, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "5554:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 480, "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 584, "src": "5521:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" } }, "id": 484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5521:41:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", "id": 485, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5564:51:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" }, "value": "ERC721: transfer caller is not owner nor approved" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" } ], "id": 479, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "5513:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5513:103:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 487, "nodeType": "ExpressionStatement", "src": "5513:103:1" }, { "expression": { "arguments": [ { "id": 489, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 469, "src": "5640:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 490, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "5646:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 491, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 473, "src": "5650:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 492, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 475, "src": "5659:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 488, "name": "_safeTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 525, "src": "5626:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5626:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 494, "nodeType": "ExpressionStatement", "src": "5626:39:1" } ] }, "documentation": { "id": 467, "nodeType": "StructuredDocumentation", "src": "5292:55:1", "text": " @dev See {IERC721-safeTransferFrom}." }, "functionSelector": "b88d4fde", "id": 496, "implemented": true, "kind": "function", "modifiers": [], "name": "safeTransferFrom", "nameLocation": "5361:16:1", "nodeType": "FunctionDefinition", "overrides": { "id": 477, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5494:8:1" }, "parameters": { "id": 476, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 469, "mutability": "mutable", "name": "from", "nameLocation": "5395:4:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5387:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 468, "name": "address", "nodeType": "ElementaryTypeName", "src": "5387:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 471, "mutability": "mutable", "name": "to", "nameLocation": "5417:2:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5409:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 470, "name": "address", "nodeType": "ElementaryTypeName", "src": "5409:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 473, "mutability": "mutable", "name": "tokenId", "nameLocation": "5437:7:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5429:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 472, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5429:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 475, "mutability": "mutable", "name": "_data", "nameLocation": "5467:5:1", "nodeType": "VariableDeclaration", "scope": 496, "src": "5454:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 474, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5454:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "5377:101:1" }, "returnParameters": { "id": 478, "nodeType": "ParameterList", "parameters": [], "src": "5503:0:1" }, "scope": 935, "src": "5352:320:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "body": { "id": 524, "nodeType": "Block", "src": "6675:166:1", "statements": [ { "expression": { "arguments": [ { "id": 509, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "6695:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 510, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 501, "src": "6701:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 511, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 503, "src": "6705:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 508, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "6685:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 512, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6685:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 513, "nodeType": "ExpressionStatement", "src": "6685:28:1" }, { "expression": { "arguments": [ { "arguments": [ { "id": 516, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "6754:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 517, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 501, "src": "6760:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 518, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 503, "src": "6764:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 519, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 505, "src": "6773:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 515, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "6731:22:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)" } }, "id": 520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6731:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 521, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6781:52:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" }, "value": "ERC721: transfer to non ERC721Receiver implementer" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" } ], "id": 514, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "6723:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 522, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6723:111:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 523, "nodeType": "ExpressionStatement", "src": "6723:111:1" } ] }, "documentation": { "id": 497, "nodeType": "StructuredDocumentation", "src": "5678:851:1", "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." }, "id": 525, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeTransfer", "nameLocation": "6543:13:1", "nodeType": "FunctionDefinition", "parameters": { "id": 506, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 499, "mutability": "mutable", "name": "from", "nameLocation": "6574:4:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6566:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 498, "name": "address", "nodeType": "ElementaryTypeName", "src": "6566:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 501, "mutability": "mutable", "name": "to", "nameLocation": "6596:2:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6588:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 500, "name": "address", "nodeType": "ElementaryTypeName", "src": "6588:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 503, "mutability": "mutable", "name": "tokenId", "nameLocation": "6616:7:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6608:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 502, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6608:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 505, "mutability": "mutable", "name": "_data", "nameLocation": "6646:5:1", "nodeType": "VariableDeclaration", "scope": 525, "src": "6633:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 504, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6633:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "6556:101:1" }, "returnParameters": { "id": 507, "nodeType": "ParameterList", "parameters": [], "src": "6675:0:1" }, "scope": 935, "src": "6534:307:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 542, "nodeType": "Block", "src": "7215:54:1", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { "id": 533, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "7232:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 535, "indexExpression": { "id": 534, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 528, "src": "7240:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7232:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7260:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 537, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7252:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 536, "name": "address", "nodeType": "ElementaryTypeName", "src": "7252:7:1", "typeDescriptions": {} } }, "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7252:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7232:30:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 532, "id": 541, "nodeType": "Return", "src": "7225:37:1" } ] }, "documentation": { "id": 526, "nodeType": "StructuredDocumentation", "src": "6847:292:1", "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)." }, "id": 543, "implemented": true, "kind": "function", "modifiers": [], "name": "_exists", "nameLocation": "7153:7:1", "nodeType": "FunctionDefinition", "parameters": { "id": 529, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 528, "mutability": "mutable", "name": "tokenId", "nameLocation": "7169:7:1", "nodeType": "VariableDeclaration", "scope": 543, "src": "7161:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7161:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "7160:17:1" }, "returnParameters": { "id": 532, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 531, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 543, "src": "7209:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 530, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7209:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "7208:6:1" }, "scope": 935, "src": "7144:125:1", "stateMutability": "view", "virtual": true, "visibility": "internal" }, { "body": { "id": 583, "nodeType": "Block", "src": "7526:245:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 555, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "7552:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 554, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "7544:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 556, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7544:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e", "id": 557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7562:46:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" }, "value": "ERC721: operator query for nonexistent token" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" } ], "id": 553, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "7536:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7536:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 559, "nodeType": "ExpressionStatement", "src": "7536:73:1" }, { "assignments": [ 561 ], "declarations": [ { "constant": false, "id": 561, "mutability": "mutable", "name": "owner", "nameLocation": "7627:5:1", "nodeType": "VariableDeclaration", "scope": 583, "src": "7619:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 560, "name": "address", "nodeType": "ElementaryTypeName", "src": "7619:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 566, "initialValue": { "arguments": [ { "id": 564, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "7650:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 562, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "7635:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "7635:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7635:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7619:39:1" }, { "expression": { "components": [ { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 567, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 546, "src": "7676:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 568, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 561, "src": "7687:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7676:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 571, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "7708:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 570, "name": "getApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 385, "src": "7696:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7696:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 573, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 546, "src": "7720:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7696:31:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7676:51:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 577, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 561, "src": "7748:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 578, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 546, "src": "7755:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 576, "name": "isApprovedForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 420, "src": "7731:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", "typeString": "function (address,address) view returns (bool)" } }, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7731:32:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "7676:87:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 581, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "7675:89:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 552, "id": 582, "nodeType": "Return", "src": "7668:96:1" } ] }, "documentation": { "id": 544, "nodeType": "StructuredDocumentation", "src": "7275:147:1", "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist." }, "id": 584, "implemented": true, "kind": "function", "modifiers": [], "name": "_isApprovedOrOwner", "nameLocation": "7436:18:1", "nodeType": "FunctionDefinition", "parameters": { "id": 549, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 546, "mutability": "mutable", "name": "spender", "nameLocation": "7463:7:1", "nodeType": "VariableDeclaration", "scope": 584, "src": "7455:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 545, "name": "address", "nodeType": "ElementaryTypeName", "src": "7455:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 548, "mutability": "mutable", "name": "tokenId", "nameLocation": "7480:7:1", "nodeType": "VariableDeclaration", "scope": 584, "src": "7472:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 547, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7472:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "7454:34:1" }, "returnParameters": { "id": 552, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 551, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 584, "src": "7520:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 550, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7520:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "7519:6:1" }, "scope": 935, "src": "7427:344:1", "stateMutability": "view", "virtual": true, "visibility": "internal" }, { "body": { "id": 598, "nodeType": "Block", "src": "8166:43:1", "statements": [ { "expression": { "arguments": [ { "id": 593, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "8186:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 594, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 589, "src": "8190:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "", "id": 595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8199:2:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "id": 592, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [ 599, 628 ], "referencedDeclaration": 628, "src": "8176:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,bytes memory)" } }, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8176:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 597, "nodeType": "ExpressionStatement", "src": "8176:26:1" } ] }, "documentation": { "id": 585, "nodeType": "StructuredDocumentation", "src": "7777:319:1", "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." }, "id": 599, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8110:9:1", "nodeType": "FunctionDefinition", "parameters": { "id": 590, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 587, "mutability": "mutable", "name": "to", "nameLocation": "8128:2:1", "nodeType": "VariableDeclaration", "scope": 599, "src": "8120:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 586, "name": "address", "nodeType": "ElementaryTypeName", "src": "8120:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 589, "mutability": "mutable", "name": "tokenId", "nameLocation": "8140:7:1", "nodeType": "VariableDeclaration", "scope": 599, "src": "8132:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 588, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8132:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "8119:29:1" }, "returnParameters": { "id": 591, "nodeType": "ParameterList", "parameters": [], "src": "8166:0:1" }, "scope": 935, "src": "8101:108:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 627, "nodeType": "Block", "src": "8545:196:1", "statements": [ { "expression": { "arguments": [ { "id": 610, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "8561:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 611, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "8565:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 609, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 685, "src": "8555:5:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8555:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 613, "nodeType": "ExpressionStatement", "src": "8555:18:1" }, { "expression": { "arguments": [ { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8635:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 617, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8627:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 616, "name": "address", "nodeType": "ElementaryTypeName", "src": "8627:7:1", "typeDescriptions": {} } }, "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8627:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 620, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 602, "src": "8639:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 621, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 604, "src": "8643:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 622, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 606, "src": "8652:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 615, "name": "_checkOnERC721Received", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 923, "src": "8604:22:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,address,uint256,bytes memory) returns (bool)" } }, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8604:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 624, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8672:52:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" }, "value": "ERC721: transfer to non ERC721Receiver implementer" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" } ], "id": 614, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "8583:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8583:151:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 626, "nodeType": "ExpressionStatement", "src": "8583:151:1" } ] }, "documentation": { "id": 600, "nodeType": "StructuredDocumentation", "src": "8215:210:1", "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." }, "id": 628, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeMint", "nameLocation": "8439:9:1", "nodeType": "FunctionDefinition", "parameters": { "id": 607, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 602, "mutability": "mutable", "name": "to", "nameLocation": "8466:2:1", "nodeType": "VariableDeclaration", "scope": 628, "src": "8458:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 601, "name": "address", "nodeType": "ElementaryTypeName", "src": "8458:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 604, "mutability": "mutable", "name": "tokenId", "nameLocation": "8486:7:1", "nodeType": "VariableDeclaration", "scope": 628, "src": "8478:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8478:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 606, "mutability": "mutable", "name": "_data", "nameLocation": "8516:5:1", "nodeType": "VariableDeclaration", "scope": 628, "src": "8503:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 605, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8503:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "8448:79:1" }, "returnParameters": { "id": 608, "nodeType": "ParameterList", "parameters": [], "src": "8545:0:1" }, "scope": 935, "src": "8430:311:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 684, "nodeType": "Block", "src": "9124:311:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 637, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9142:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 640, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9156:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 639, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9148:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 638, "name": "address", "nodeType": "ElementaryTypeName", "src": "9148:7:1", "typeDescriptions": {} } }, "id": 641, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9148:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9142:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", "id": 643, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9160:34:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\"" }, "value": "ERC721: mint to the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", "typeString": "literal_string \"ERC721: mint to the zero address\"" } ], "id": 636, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "9134:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 644, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9134:61:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 645, "nodeType": "ExpressionStatement", "src": "9134:61:1" }, { "expression": { "arguments": [ { "id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "9213:17:1", "subExpression": { "arguments": [ { "id": 648, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9222:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 647, "name": "_exists", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "9214:7:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9214:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", "id": 651, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9232:30:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\"" }, "value": "ERC721: token already minted" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", "typeString": "literal_string \"ERC721: token already minted\"" } ], "id": 646, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "9205:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9205:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 653, "nodeType": "ExpressionStatement", "src": "9205:58:1" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9303:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9295:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 655, "name": "address", "nodeType": "ElementaryTypeName", "src": "9295:7:1", "typeDescriptions": {} } }, "id": 658, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9295:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 659, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9307:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 660, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9311:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 654, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "9274:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9274:45:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 662, "nodeType": "ExpressionStatement", "src": "9274:45:1" }, { "expression": { "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 663, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "9330:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 665, "indexExpression": { "id": 664, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9340:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9330:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "hexValue": "31", "id": 666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9347:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "9330:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 668, "nodeType": "ExpressionStatement", "src": "9330:18:1" }, { "expression": { "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 669, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "9358:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 671, "indexExpression": { "id": 670, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9366:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9358:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 672, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9377:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9358:21:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 674, "nodeType": "ExpressionStatement", "src": "9358:21:1" }, { "eventCall": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 678, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9412:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 677, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9404:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 676, "name": "address", "nodeType": "ElementaryTypeName", "src": "9404:7:1", "typeDescriptions": {} } }, "id": 679, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9404:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 680, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "9416:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 681, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 633, "src": "9420:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 675, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 950, "src": "9395:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9395:33:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 683, "nodeType": "EmitStatement", "src": "9390:38:1" } ] }, "documentation": { "id": 629, "nodeType": "StructuredDocumentation", "src": "8747:311:1", "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event." }, "id": 685, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "9072:5:1", "nodeType": "FunctionDefinition", "parameters": { "id": 634, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 631, "mutability": "mutable", "name": "to", "nameLocation": "9086:2:1", "nodeType": "VariableDeclaration", "scope": 685, "src": "9078:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 630, "name": "address", "nodeType": "ElementaryTypeName", "src": "9078:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 633, "mutability": "mutable", "name": "tokenId", "nameLocation": "9098:7:1", "nodeType": "VariableDeclaration", "scope": 685, "src": "9090:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9090:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "9077:29:1" }, "returnParameters": { "id": 635, "nodeType": "ParameterList", "parameters": [], "src": "9124:0:1" }, "scope": 935, "src": "9063:372:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 735, "nodeType": "Block", "src": "9701:299:1", "statements": [ { "assignments": [ 692 ], "declarations": [ { "constant": false, "id": 692, "mutability": "mutable", "name": "owner", "nameLocation": "9719:5:1", "nodeType": "VariableDeclaration", "scope": 735, "src": "9711:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 691, "name": "address", "nodeType": "ElementaryTypeName", "src": "9711:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 697, "initialValue": { "arguments": [ { "id": 695, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9742:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 693, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9727:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "9727:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 696, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9727:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "9711:39:1" }, { "expression": { "arguments": [ { "id": 699, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 692, "src": "9782:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "hexValue": "30", "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9797:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 701, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9789:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 700, "name": "address", "nodeType": "ElementaryTypeName", "src": "9789:7:1", "typeDescriptions": {} } }, "id": 703, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9789:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 704, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9801:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 698, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "9761:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 705, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9761:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 706, "nodeType": "ExpressionStatement", "src": "9761:48:1" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 710, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9864:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9856:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 708, "name": "address", "nodeType": "ElementaryTypeName", "src": "9856:7:1", "typeDescriptions": {} } }, "id": 711, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9856:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 712, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9868:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 707, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "9847:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9847:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 714, "nodeType": "ExpressionStatement", "src": "9847:29:1" }, { "expression": { "id": 719, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 715, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "9887:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 717, "indexExpression": { "id": 716, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 692, "src": "9897:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9887:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "hexValue": "31", "id": 718, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9907:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "9887:21:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 720, "nodeType": "ExpressionStatement", "src": "9887:21:1" }, { "expression": { "id": 724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "9918:23:1", "subExpression": { "baseExpression": { "id": 721, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "9925:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 723, "indexExpression": { "id": 722, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9933:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9925:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 725, "nodeType": "ExpressionStatement", "src": "9918:23:1" }, { "eventCall": { "arguments": [ { "id": 727, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 692, "src": "9966:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "hexValue": "30", "id": 730, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9981:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 729, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9973:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 728, "name": "address", "nodeType": "ElementaryTypeName", "src": "9973:7:1", "typeDescriptions": {} } }, "id": 731, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9973:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 732, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "9985:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 726, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 950, "src": "9957:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 733, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9957:36:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 734, "nodeType": "EmitStatement", "src": "9952:41:1" } ] }, "documentation": { "id": 686, "nodeType": "StructuredDocumentation", "src": "9441:206:1", "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event." }, "id": 736, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "9661:5:1", "nodeType": "FunctionDefinition", "parameters": { "id": 689, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 688, "mutability": "mutable", "name": "tokenId", "nameLocation": "9675:7:1", "nodeType": "VariableDeclaration", "scope": 736, "src": "9667:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 687, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9667:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "9666:17:1" }, "returnParameters": { "id": 690, "nodeType": "ParameterList", "parameters": [], "src": "9701:0:1" }, "scope": 935, "src": "9652:348:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 804, "nodeType": "Block", "src": "10433:451:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 752, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 749, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10466:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 747, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "10451:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 748, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "10451:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10451:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 751, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10478:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10451:31:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e", "id": 753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10484:43:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", "typeString": "literal_string \"ERC721: transfer of token that is not own\"" }, "value": "ERC721: transfer of token that is not own" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", "typeString": "literal_string \"ERC721: transfer of token that is not own\"" } ], "id": 746, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "10443:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 754, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10443:85:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 755, "nodeType": "ExpressionStatement", "src": "10443:85:1" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 762, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 757, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10546:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10560:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 759, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10552:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 758, "name": "address", "nodeType": "ElementaryTypeName", "src": "10552:7:1", "typeDescriptions": {} } }, "id": 761, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10552:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10546:16:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10564:38:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\"" }, "value": "ERC721: transfer to the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", "typeString": "literal_string \"ERC721: transfer to the zero address\"" } ], "id": 756, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "10538:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10538:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 765, "nodeType": "ExpressionStatement", "src": "10538:65:1" }, { "expression": { "arguments": [ { "id": 767, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10635:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 768, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10641:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 769, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10645:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 766, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "10614:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 770, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10614:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 771, "nodeType": "ExpressionStatement", "src": "10614:39:1" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10732:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 774, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10724:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 773, "name": "address", "nodeType": "ElementaryTypeName", "src": "10724:7:1", "typeDescriptions": {} } }, "id": 776, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10724:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 777, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10736:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 772, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "10715:8:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 778, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10715:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 779, "nodeType": "ExpressionStatement", "src": "10715:29:1" }, { "expression": { "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 780, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "10755:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 782, "indexExpression": { "id": 781, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10765:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10755:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "hexValue": "31", "id": 783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10774:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "10755:20:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 785, "nodeType": "ExpressionStatement", "src": "10755:20:1" }, { "expression": { "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 786, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 140, "src": "10785:9:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 788, "indexExpression": { "id": 787, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10795:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10785:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "hexValue": "31", "id": 789, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10802:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "10785:18:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 791, "nodeType": "ExpressionStatement", "src": "10785:18:1" }, { "expression": { "id": 796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 792, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 136, "src": "10813:7:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 794, "indexExpression": { "id": 793, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10821:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10813:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 795, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10832:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10813:21:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 797, "nodeType": "ExpressionStatement", "src": "10813:21:1" }, { "eventCall": { "arguments": [ { "id": 799, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 739, "src": "10859:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 800, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 741, "src": "10865:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 801, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "10869:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 798, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 950, "src": "10850:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10850:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 803, "nodeType": "EmitStatement", "src": "10845:32:1" } ] }, "documentation": { "id": 737, "nodeType": "StructuredDocumentation", "src": "10006:313:1", "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event." }, "id": 805, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "10333:9:1", "nodeType": "FunctionDefinition", "parameters": { "id": 744, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 739, "mutability": "mutable", "name": "from", "nameLocation": "10360:4:1", "nodeType": "VariableDeclaration", "scope": 805, "src": "10352:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 738, "name": "address", "nodeType": "ElementaryTypeName", "src": "10352:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 741, "mutability": "mutable", "name": "to", "nameLocation": "10382:2:1", "nodeType": "VariableDeclaration", "scope": 805, "src": "10374:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 740, "name": "address", "nodeType": "ElementaryTypeName", "src": "10374:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 743, "mutability": "mutable", "name": "tokenId", "nameLocation": "10402:7:1", "nodeType": "VariableDeclaration", "scope": 805, "src": "10394:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 742, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10394:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "10342:73:1" }, "returnParameters": { "id": 745, "nodeType": "ParameterList", "parameters": [], "src": "10433:0:1" }, "scope": 935, "src": "10324:560:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 828, "nodeType": "Block", "src": "11059:107:1", "statements": [ { "expression": { "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 813, "name": "_tokenApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 144, "src": "11069:15:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" } }, "id": 815, "indexExpression": { "id": 814, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 810, "src": "11085:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11069:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 816, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 808, "src": "11096:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "11069:29:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 818, "nodeType": "ExpressionStatement", "src": "11069:29:1" }, { "eventCall": { "arguments": [ { "arguments": [ { "id": 822, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 810, "src": "11137:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 820, "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "11122:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC721_$935_$", "typeString": "type(contract ERC721)" } }, "id": 821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ownerOf", "nodeType": "MemberAccess", "referencedDeclaration": 250, "src": "11122:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", "typeString": "function (uint256) view returns (address)" } }, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11122:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 824, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 808, "src": "11147:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 825, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 810, "src": "11151:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 819, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 959, "src": "11113:8:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 826, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11113:46:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 827, "nodeType": "EmitStatement", "src": "11108:51:1" } ] }, "documentation": { "id": 806, "nodeType": "StructuredDocumentation", "src": "10890:100:1", "text": " @dev Approve `to` to operate on `tokenId`\n Emits a {Approval} event." }, "id": 829, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "11004:8:1", "nodeType": "FunctionDefinition", "parameters": { "id": 811, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 808, "mutability": "mutable", "name": "to", "nameLocation": "11021:2:1", "nodeType": "VariableDeclaration", "scope": 829, "src": "11013:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 807, "name": "address", "nodeType": "ElementaryTypeName", "src": "11013:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 810, "mutability": "mutable", "name": "tokenId", "nameLocation": "11033:7:1", "nodeType": "VariableDeclaration", "scope": 829, "src": "11025:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 809, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11025:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "11012:29:1" }, "returnParameters": { "id": 812, "nodeType": "ParameterList", "parameters": [], "src": "11059:0:1" }, "scope": 935, "src": "10995:171:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 860, "nodeType": "Block", "src": "11424:184:1", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 842, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 840, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 832, "src": "11442:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "id": 841, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 834, "src": "11451:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "11442:17:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", "id": 843, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11461:27:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\"" }, "value": "ERC721: approve to caller" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", "typeString": "literal_string \"ERC721: approve to caller\"" } ], "id": 839, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967278, 4294967278 ], "referencedDeclaration": 4294967278, "src": "11434:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11434:55:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 845, "nodeType": "ExpressionStatement", "src": "11434:55:1" }, { "expression": { "id": 852, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "baseExpression": { "id": 846, "name": "_operatorApprovals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 150, "src": "11499:18:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" } }, "id": 849, "indexExpression": { "id": 847, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 832, "src": "11518:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "11499:25:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 850, "indexExpression": { "id": 848, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 834, "src": "11525:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11499:35:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 851, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 836, "src": "11537:8:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "11499:46:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 853, "nodeType": "ExpressionStatement", "src": "11499:46:1" }, { "eventCall": { "arguments": [ { "id": 855, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 832, "src": "11575:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 856, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 834, "src": "11582:8:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 857, "name": "approved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 836, "src": "11592:8:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 854, "name": "ApprovalForAll", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 968, "src": "11560:14:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", "typeString": "function (address,address,bool)" } }, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11560:41:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 859, "nodeType": "EmitStatement", "src": "11555:46:1" } ] }, "documentation": { "id": 830, "nodeType": "StructuredDocumentation", "src": "11172:124:1", "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits a {ApprovalForAll} event." }, "id": 861, "implemented": true, "kind": "function", "modifiers": [], "name": "_setApprovalForAll", "nameLocation": "11310:18:1", "nodeType": "FunctionDefinition", "parameters": { "id": 837, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 832, "mutability": "mutable", "name": "owner", "nameLocation": "11346:5:1", "nodeType": "VariableDeclaration", "scope": 861, "src": "11338:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 831, "name": "address", "nodeType": "ElementaryTypeName", "src": "11338:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 834, "mutability": "mutable", "name": "operator", "nameLocation": "11369:8:1", "nodeType": "VariableDeclaration", "scope": 861, "src": "11361:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 833, "name": "address", "nodeType": "ElementaryTypeName", "src": "11361:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 836, "mutability": "mutable", "name": "approved", "nameLocation": "11392:8:1", "nodeType": "VariableDeclaration", "scope": 861, "src": "11387:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 835, "name": "bool", "nodeType": "ElementaryTypeName", "src": "11387:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "11328:78:1" }, "returnParameters": { "id": 838, "nodeType": "ParameterList", "parameters": [], "src": "11424:0:1" }, "scope": 935, "src": "11301:307:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { "id": 922, "nodeType": "Block", "src": "12317:622:1", "statements": [ { "condition": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 875, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "12331:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isContract", "nodeType": "MemberAccess", "referencedDeclaration": 1244, "src": "12331:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", "typeString": "function (address) view returns (bool)" } }, "id": 877, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12331:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 920, "nodeType": "Block", "src": "12897:36:1", "statements": [ { "expression": { "hexValue": "74727565", "id": 918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "12918:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 874, "id": 919, "nodeType": "Return", "src": "12911:11:1" } ] }, "id": 921, "nodeType": "IfStatement", "src": "12327:606:1", "trueBody": { "id": 917, "nodeType": "Block", "src": "12348:543:1", "statements": [ { "clauses": [ { "block": { "id": 897, "nodeType": "Block", "src": "12463:91:1", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 891, "name": "retval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 889, "src": "12488:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "expression": { "id": 892, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "12498:15:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$", "typeString": "type(contract IERC721Receiver)" } }, "id": 893, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1068, "src": "12498:32:1", "typeDescriptions": { "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" } }, "id": 894, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "selector", "nodeType": "MemberAccess", "src": "12498:41:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "12488:51:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 874, "id": 896, "nodeType": "Return", "src": "12481:58:1" } ] }, "errorName": "", "id": 898, "nodeType": "TryCatchClause", "parameters": { "id": 890, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 889, "mutability": "mutable", "name": "retval", "nameLocation": "12455:6:1", "nodeType": "VariableDeclaration", "scope": 898, "src": "12448:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 888, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "12448:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" } ], "src": "12447:15:1" }, "src": "12439:115:1" }, { "block": { "id": 914, "nodeType": "Block", "src": "12583:298:1", "statements": [ { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 902, "name": "reason", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 900, "src": "12605:6:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 903, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "12605:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 904, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "12622:1:1", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "12605:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 912, "nodeType": "Block", "src": "12732:135:1", "statements": [ { "AST": { "nodeType": "YulBlock", "src": "12763:86:1", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "12800:2:1", "type": "", "value": "32" }, { "name": "reason", "nodeType": "YulIdentifier", "src": "12804:6:1" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "12796:3:1" }, "nodeType": "YulFunctionCall", "src": "12796:15:1" }, { "arguments": [ { "name": "reason", "nodeType": "YulIdentifier", "src": "12819:6:1" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "12813:5:1" }, "nodeType": "YulFunctionCall", "src": "12813:13:1" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "12789:6:1" }, "nodeType": "YulFunctionCall", "src": "12789:38:1" }, "nodeType": "YulExpressionStatement", "src": "12789:38:1" } ] }, "evmVersion": "london", "externalReferences": [ { "declaration": 900, "isOffset": false, "isSlot": false, "src": "12804:6:1", "valueSize": 1 }, { "declaration": 900, "isOffset": false, "isSlot": false, "src": "12819:6:1", "valueSize": 1 } ], "id": 911, "nodeType": "InlineAssembly", "src": "12754:95:1" } ] }, "id": 913, "nodeType": "IfStatement", "src": "12601:266:1", "trueBody": { "id": 910, "nodeType": "Block", "src": "12625:101:1", "statements": [ { "expression": { "arguments": [ { "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", "id": 907, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12654:52:1", "typeDescriptions": { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" }, "value": "ERC721: transfer to non ERC721Receiver implementer" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" } ], "id": 906, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ 4294967277, 4294967277 ], "referencedDeclaration": 4294967277, "src": "12647:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 908, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12647:60:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 909, "nodeType": "ExpressionStatement", "src": "12647:60:1" } ] } } ] }, "errorName": "", "id": 915, "nodeType": "TryCatchClause", "parameters": { "id": 901, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 900, "mutability": "mutable", "name": "reason", "nameLocation": "12575:6:1", "nodeType": "VariableDeclaration", "scope": 915, "src": "12562:19:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 899, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12562:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "12561:21:1" }, "src": "12555:326:1" } ], "externalCall": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 882, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1533, "src": "12403:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12403:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 884, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "12417:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 885, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "12423:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 886, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 870, "src": "12432:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "arguments": [ { "id": 879, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 866, "src": "12382:2:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 878, "name": "IERC721Receiver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1069, "src": "12366:15:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$1069_$", "typeString": "type(contract IERC721Receiver)" } }, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12366:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC721Receiver_$1069", "typeString": "contract IERC721Receiver" } }, "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "onERC721Received", "nodeType": "MemberAccess", "referencedDeclaration": 1068, "src": "12366:36:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" } }, "id": 887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12366:72:1", "tryCall": true, "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "id": 916, "nodeType": "TryStatement", "src": "12362:519:1" } ] } } ] }, "documentation": { "id": 862, "nodeType": "StructuredDocumentation", "src": "11614:542:1", "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value" }, "id": 923, "implemented": true, "kind": "function", "modifiers": [], "name": "_checkOnERC721Received", "nameLocation": "12170:22:1", "nodeType": "FunctionDefinition", "parameters": { "id": 871, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 864, "mutability": "mutable", "name": "from", "nameLocation": "12210:4:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12202:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 863, "name": "address", "nodeType": "ElementaryTypeName", "src": "12202:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 866, "mutability": "mutable", "name": "to", "nameLocation": "12232:2:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12224:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 865, "name": "address", "nodeType": "ElementaryTypeName", "src": "12224:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 868, "mutability": "mutable", "name": "tokenId", "nameLocation": "12252:7:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12244:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 867, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12244:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 870, "mutability": "mutable", "name": "_data", "nameLocation": "12282:5:1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12269:18:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 869, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "12269:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "12192:101:1" }, "returnParameters": { "id": 874, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 873, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 923, "src": "12311:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 872, "name": "bool", "nodeType": "ElementaryTypeName", "src": "12311:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "12310:6:1" }, "scope": 935, "src": "12161:778:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 933, "nodeType": "Block", "src": "13615:2:1", "statements": [] }, "documentation": { "id": 924, "nodeType": "StructuredDocumentation", "src": "12945:545:1", "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." }, "id": 934, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "13504:20:1", "nodeType": "FunctionDefinition", "parameters": { "id": 931, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 926, "mutability": "mutable", "name": "from", "nameLocation": "13542:4:1", "nodeType": "VariableDeclaration", "scope": 934, "src": "13534:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 925, "name": "address", "nodeType": "ElementaryTypeName", "src": "13534:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 928, "mutability": "mutable", "name": "to", "nameLocation": "13564:2:1", "nodeType": "VariableDeclaration", "scope": 934, "src": "13556:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 927, "name": "address", "nodeType": "ElementaryTypeName", "src": "13556:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 930, "mutability": "mutable", "name": "tokenId", "nameLocation": "13584:7:1", "nodeType": "VariableDeclaration", "scope": 934, "src": "13576:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13576:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "13524:73:1" }, "returnParameters": { "id": 932, "nodeType": "ParameterList", "parameters": [], "src": "13615:0:1" }, "scope": 935, "src": "13495:122:1", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" } ], "scope": 936, "src": "613:13006:1", "usedErrors": [] } ], "src": "92:13528:1" }, "compiler": { "name": "solc", "version": "0.8.11+commit.d7f03943.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.4.4", "updatedAt": "2021-12-29T22:14:28.587Z", "devdoc": { "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.", "kind": "dev", "methods": { "approve(address,uint256)": { "details": "See {IERC721-approve}." }, "balanceOf(address)": { "details": "See {IERC721-balanceOf}." }, "constructor": { "details": "Initializes the contract by setting a `name` and a `symbol` to the token collection." }, "getApproved(uint256)": { "details": "See {IERC721-getApproved}." }, "isApprovedForAll(address,address)": { "details": "See {IERC721-isApprovedForAll}." }, "name()": { "details": "See {IERC721Metadata-name}." }, "ownerOf(uint256)": { "details": "See {IERC721-ownerOf}." }, "safeTransferFrom(address,address,uint256)": { "details": "See {IERC721-safeTransferFrom}." }, "safeTransferFrom(address,address,uint256,bytes)": { "details": "See {IERC721-safeTransferFrom}." }, "setApprovalForAll(address,bool)": { "details": "See {IERC721-setApprovalForAll}." }, "supportsInterface(bytes4)": { "details": "See {IERC165-supportsInterface}." }, "symbol()": { "details": "See {IERC721Metadata-symbol}." }, "tokenURI(uint256)": { "details": "See {IERC721Metadata-tokenURI}." }, "transferFrom(address,address,uint256)": { "details": "See {IERC721-transferFrom}." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }