{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162001a6738038062001a67833981016040819052620000349162000127565b600062000042838262000220565b50600162000051828262000220565b505050620002ec565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b838211156200011d5760008385830101525b9695505050505050565b600080604083850312156200013b57600080fd5b82516001600160401b03808211156200015357600080fd5b620001618683870162000070565b935060208501519150808211156200017857600080fd5b50620001878582860162000070565b9150509250929050565b600181811c90821680620001a657607f821691505b602082108103620001c757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021b57600081815260208120601f850160051c81016020861015620001f65750805b601f850160051c820191505b81811015620002175782815560010162000202565b5050505b505050565b81516001600160401b038111156200023c576200023c6200005a565b62000254816200024d845462000191565b84620001cd565b602080601f8311600181146200028c5760008415620002735750858301515b600019600386901b1c1916600185901b17855562000217565b600085815260208120601f198616915b82811015620002bd578886015182559484019460019091019084016200029c565b5085821015620002dc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61176b80620002fc6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004611259565b610252565b60405190151581526020015b60405180910390f35b610114610337565b60405161010391906112ec565b61013461012f3660046112ff565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c610167366004611341565b6103fd565b005b61016c61017c36600461136b565b61058e565b61016c61018f36600461136b565b61062f565b6101346101a23660046112ff565b61064a565b6101ba6101b53660046113a7565b6106d6565b604051908152602001610103565b6101146107a4565b61016c6101de3660046113c2565b6107b3565b61016c6101f136600461142d565b6107c2565b6101146102043660046112ff565b61086a565b6100f7610217366004611527565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103469061155a565b80601f01602080910402602001604051908101604052809291908181526020018280546103729061155a565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60006103d4826108de565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104088261064a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806104f357506104f38133610217565b61057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104c1565b610589838361096c565b505050565b6105983382610a0c565b610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c1565b610589838383610acc565b610589838383604051806020016040528060008152506107c2565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c1565b600073ffffffffffffffffffffffffffffffffffffffff821661077b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104c1565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103469061155a565b6107be338383610d33565b5050565b6107cc3383610a0c565b610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c1565b61086484848484610e60565b50505050565b6060610875826108de565b600061088c60408051602081019091526000815290565b905060008151116108ac57604051806020016040528060008152506108d7565b806108b684610f03565b6040516020016108c79291906115ad565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c1565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906109c68261064a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610a188361064a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610a86575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610ac457508373ffffffffffffffffffffffffffffffffffffffff16610aac846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610aec8261064a565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104c1565b73ffffffffffffffffffffffffffffffffffffffff8216610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c1565b610c3c60008261096c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610c7290849061160b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610cad908490611622565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104c1565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610e6b848484610acc565b610e7784848484611038565b610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c1565b606081600003610f4657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f705780610f5a8161163a565b9150610f699050600a836116a1565b9150610f4a565b60008167ffffffffffffffff811115610f8b57610f8b6113fe565b6040519080825280601f01601f191660200182016040528015610fb5576020820181803683370190505b5090505b8415610ac457610fca60018361160b565b9150610fd7600a866116b5565b610fe2906030611622565b60f81b818381518110610ff757610ff76116c9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611031600a866116a1565b9450610fb9565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611220576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906110af9033908990889088906004016116f8565b6020604051808303816000875af1925050508015611108575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261110591810190611741565b60015b6111d5573d808015611136576040519150601f19603f3d011682016040523d82523d6000602084013e61113b565b606091505b5080516000036111cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c1565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610ac4565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461096957600080fd5b60006020828403121561126b57600080fd5b81356108d78161122b565b60005b83811015611291578181015183820152602001611279565b838111156108645750506000910152565b600081518084526112ba816020860160208601611276565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108d760208301846112a2565b60006020828403121561131157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461133c57600080fd5b919050565b6000806040838503121561135457600080fd5b61135d83611318565b946020939093013593505050565b60008060006060848603121561138057600080fd5b61138984611318565b925061139760208501611318565b9150604084013590509250925092565b6000602082840312156113b957600080fd5b6108d782611318565b600080604083850312156113d557600080fd5b6113de83611318565b9150602083013580151581146113f357600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561144357600080fd5b61144c85611318565b935061145a60208601611318565b925060408501359150606085013567ffffffffffffffff8082111561147e57600080fd5b818701915087601f83011261149257600080fd5b8135818111156114a4576114a46113fe565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156114ea576114ea6113fe565b816040528281528a602084870101111561150357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561153a57600080fd5b61154383611318565b915061155160208401611318565b90509250929050565b600181811c9082168061156e57607f821691505b6020821081036115a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600083516115bf818460208801611276565b8351908301906115d3818360208801611276565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561161d5761161d6115dc565b500390565b60008219821115611635576116356115dc565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361166b5761166b6115dc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826116b0576116b0611672565b500490565b6000826116c4576116c4611672565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261173760808301846112a2565b9695505050505050565b60006020828403121561175357600080fd5b81516108d78161122b56fea164736f6c634300080f000a","sourceMap":"628:13718:58:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:58;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:13718;;14:127:416;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:416;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:416;;;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:416: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:416;;;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;2114:545::-;2216:2;2211:3;2208:11;2205:448;;;2252:1;2277:5;2273:2;2266:17;2322:4;2318:2;2308:19;2392:2;2380:10;2376:19;2373:1;2369:27;2363:4;2359:38;2428:4;2416:10;2413:20;2410:47;;;-1:-1:-1;2451:4:416;2410:47;2506:2;2501:3;2497:12;2494:1;2490:20;2484:4;2480:31;2470:41;;2561:82;2579:2;2572:5;2569:13;2561:82;;;2624:17;;;2605:1;2594:13;2561:82;;;2565:3;;;2205:448;2114:545;;;:::o;2835:1352::-;2955:10;;-1:-1:-1;;;;;2977:30:416;;2974:56;;;3010:18;;:::i;:::-;3039:97;3129:6;3089:38;3121:4;3115:11;3089:38;:::i;:::-;3083:4;3039:97;:::i;:::-;3191:4;;3255:2;3244:14;;3272:1;3267:663;;;;3974:1;3991:6;3988:89;;;-1:-1:-1;4043:19:416;;;4037:26;3988:89;-1:-1:-1;;2792:1:416;2788:11;;;2784:24;2780:29;2770:40;2816:1;2812:11;;;2767:57;4090:81;;3237:944;;3267:663;2061:1;2054:14;;;2098:4;2085:18;;-1:-1:-1;;3303:20:416;;;3421:236;3435:7;3432:1;3429:14;3421:236;;;3524:19;;;3518:26;3503:42;;3616:27;;;;3584:1;3572:14;;;;3451:19;;3421:236;;;3425:3;3685:6;3676:7;3673:19;3670:201;;;3746:19;;;3740:26;-1:-1:-1;;3829:1:416;3825:14;;;3841:3;3821:24;3817:37;3813:42;3798:58;3783:74;;3670:201;-1:-1:-1;;;;;3917:1:416;3901:14;;;3897:22;3884:36;;-1:-1:-1;2835:1352:416:o;:::-;628:13718:58;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004611259565b610252565b60405190151581526020015b60405180910390f35b610114610337565b60405161010391906112ec565b61013461012f3660046112ff565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c610167366004611341565b6103fd565b005b61016c61017c36600461136b565b61058e565b61016c61018f36600461136b565b61062f565b6101346101a23660046112ff565b61064a565b6101ba6101b53660046113a7565b6106d6565b604051908152602001610103565b6101146107a4565b61016c6101de3660046113c2565b6107b3565b61016c6101f136600461142d565b6107c2565b6101146102043660046112ff565b61086a565b6100f7610217366004611527565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103469061155a565b80601f01602080910402602001604051908101604052809291908181526020018280546103729061155a565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60006103d4826108de565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104088261064a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806104f357506104f38133610217565b61057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104c1565b610589838361096c565b505050565b6105983382610a0c565b610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c1565b610589838383610acc565b610589838383604051806020016040528060008152506107c2565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c1565b600073ffffffffffffffffffffffffffffffffffffffff821661077b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104c1565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103469061155a565b6107be338383610d33565b5050565b6107cc3383610a0c565b610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c1565b61086484848484610e60565b50505050565b6060610875826108de565b600061088c60408051602081019091526000815290565b905060008151116108ac57604051806020016040528060008152506108d7565b806108b684610f03565b6040516020016108c79291906115ad565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c1565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906109c68261064a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610a188361064a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610a86575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610ac457508373ffffffffffffffffffffffffffffffffffffffff16610aac846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610aec8261064a565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104c1565b73ffffffffffffffffffffffffffffffffffffffff8216610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c1565b610c3c60008261096c565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610c7290849061160b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610cad908490611622565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104c1565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610e6b848484610acc565b610e7784848484611038565b610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c1565b606081600003610f4657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f705780610f5a8161163a565b9150610f699050600a836116a1565b9150610f4a565b60008167ffffffffffffffff811115610f8b57610f8b6113fe565b6040519080825280601f01601f191660200182016040528015610fb5576020820181803683370190505b5090505b8415610ac457610fca60018361160b565b9150610fd7600a866116b5565b610fe2906030611622565b60f81b818381518110610ff757610ff76116c9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611031600a866116a1565b9450610fb9565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611220576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906110af9033908990889088906004016116f8565b6020604051808303816000875af1925050508015611108575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261110591810190611741565b60015b6111d5573d808015611136576040519150601f19603f3d011682016040523d82523d6000602084013e61113b565b606091505b5080516000036111cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c1565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610ac4565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461096957600080fd5b60006020828403121561126b57600080fd5b81356108d78161122b565b60005b83811015611291578181015183820152602001611279565b838111156108645750506000910152565b600081518084526112ba816020860160208601611276565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108d760208301846112a2565b60006020828403121561131157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461133c57600080fd5b919050565b6000806040838503121561135457600080fd5b61135d83611318565b946020939093013593505050565b60008060006060848603121561138057600080fd5b61138984611318565b925061139760208501611318565b9150604084013590509250925092565b6000602082840312156113b957600080fd5b6108d782611318565b600080604083850312156113d557600080fd5b6113de83611318565b9150602083013580151581146113f357600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561144357600080fd5b61144c85611318565b935061145a60208601611318565b925060408501359150606085013567ffffffffffffffff8082111561147e57600080fd5b818701915087601f83011261149257600080fd5b8135818111156114a4576114a46113fe565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156114ea576114ea6113fe565b816040528281528a602084870101111561150357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561153a57600080fd5b61154383611318565b915061155160208401611318565b90509250929050565b600181811c9082168061156e57607f821691505b6020821081036115a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600083516115bf818460208801611276565b8351908301906115d3818360208801611276565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561161d5761161d6115dc565b500390565b60008219821115611635576116356115dc565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361166b5761166b6115dc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826116b0576116b0611672565b500490565b6000826116c4576116c4611672565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261173760808301846112a2565b9695505050505050565b60006020828403121561175357600080fd5b81516108d78161122b56fea164736f6c634300080f000a","sourceMap":"628:13718:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;611:14:416;;604:22;586:41;;574:2;559:18;1570:300:58;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;1809:42:416;1797:55;;;1779:74;;1767:2;1752:18;3935:167:58;1633:226:416;3467:407:58;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;5005:179::-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2994:25:416;;;2982:2;2967:18;1929:204:58;2848:177:416;2632:102:58;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;2800:276::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;4508:25;;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;1707:40;;;1722:25;1707:40;;:104;;-1:-1:-1;1763:48:58;;;1778:33;1763:48;1707:104;:156;;;-1:-1:-1;952:25:71;937:40;;;;1827:36:58;1688:175;1570:300;-1:-1:-1;;1570:300:58:o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:58;;;;:15;:24;;;;;;;;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;3604:11;;:2;:11;;;3596:57;;;;;;;5682:2:416;3596:57:58;;;5664:21:416;5721:2;5701:18;;;5694:30;5760:34;5740:18;;;5733:62;5831:3;5811:18;;;5804:31;5852:19;;3596:57:58;;;;;;;;;719:10:65;3685:21:58;;;;;:62;;-1:-1:-1;3710:37:58;3727:5;719:10:65;4388:162:58;:::i;3710:37::-;3664:171;;;;;;;6084:2:416;3664:171:58;;;6066:21:416;6123:2;6103:18;;;6096:30;6162:34;6142:18;;;6135:62;6233:32;6213:18;;;6206:60;6283:19;;3664:171:58;5882:426:416;3664:171:58;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3537:337;3467:407;;:::o;4612:327::-;4801:41;719:10:65;4834:7:58;4801:18;:41::i;:::-;4793:100;;;;;;;6515:2:416;4793:100:58;;;6497:21:416;6554:2;6534:18;;;6527:30;6593:34;6573:18;;;6566:62;6664:16;6644:18;;;6637:44;6698:19;;4793:100:58;6313:410:416;4793:100:58;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;5005:179::-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;;;;2323:56;;;;;;;6930:2:416;2323:56:58;;;6912:21:416;6969:2;6949:18;;;6942:30;7008:26;6988:18;;;6981:54;7052:18;;2323:56:58;6728:348:416;1929:204:58;2001:7;2028:19;;;2020:73;;;;;;;7283:2:416;2020:73:58;;;7265:21:416;7322:2;7302:18;;;7295:30;7361:34;7341:18;;;7334:62;7432:11;7412:18;;;7405:39;7461:19;;2020:73:58;7081:405:416;2020:73:58;-1:-1:-1;2110:16:58;;;;;;:9;:16;;;;;;;1929:204::o;2632:102::-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:65;4296:8:58;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:65;5451:7:58;5418:18;:41::i;:::-;5410:100;;;;;;;6515:2:416;5410:100:58;;;6497:21:416;6554:2;6534:18;;;6527:30;6593:34;6573:18;;;6566:62;6664:16;6644:18;;;6637:44;6698:19;;5410:100:58;6313:410:416;5410:100:58;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;2800:276::-;2873:13;2898:23;2913:7;2898:14;:23::i;:::-;2932:21;2956:10;3394:9;;;;;;;;;-1:-1:-1;3394:9:58;;;3318:92;2956:10;2932:34;;3007:1;2989:7;2983:21;:25;:86;;;;;;;;;;;;;;;;;3035:7;3044:18;:7;:16;:18::i;:::-;3018:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2983:86;2976:93;2800:276;-1:-1:-1;;;2800:276:58:o;11657:133::-;7099:4;7122:16;;;:7;:16;;;;;;:30;:16;11730:53;;;;;;;6930:2:416;11730:53:58;;;6912:21:416;6969:2;6949:18;;;6942:30;7008:26;6988:18;;;6981:54;7052:18;;11730:53:58;6728:348:416;11730:53:58;11657:133;:::o;10959:171::-;11033:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;11077:46;;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;7483:16;;:7;:16;;;:52;;;-1:-1:-1;4508:25:58;;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7503:32;7483:87;;;;7563:7;7539:31;;:20;7551:7;7539:11;:20::i;:::-;:31;;;7483:87;7475:96;7317:261;-1:-1:-1;;;;7317:261:58:o;10242:605::-;10396:4;10369:31;;:23;10384:7;10369:14;:23::i;:::-;:31;;;10361:81;;;;;;;8168:2:416;10361:81:58;;;8150:21:416;8207:2;8187:18;;;8180:30;8246:34;8226:18;;;8219:62;8317:7;8297:18;;;8290:35;8342:19;;10361:81:58;7966:401:416;10361:81:58;10460:16;;;10452:65;;;;;;;8574:2:416;10452:65:58;;;8556:21:416;8613:2;8593:18;;;8586:30;8652:34;8632:18;;;8625:62;8723:6;8703:18;;;8696:34;8747:19;;10452:65:58;8372:400:416;10452:65:58;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;10669:15;;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;10699:13:58;;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:58;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;3537:337;3467:407;;:::o;11266:307::-;11416:8;11407:17;;:5;:17;;;11399:55;;;;;;;9431:2:416;11399:55:58;;;9413:21:416;9470:2;9450:18;;;9443:30;9509:27;9489:18;;;9482:55;9554:18;;11399:55:58;9229:349:416;11399:55:58;11464:25;;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;11525:41;;586::416;;;11525::58;;559:18:416;11525:41:58;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;;;;9785:2:416;6614:110:58;;;9767:21:416;9824:2;9804:18;;;9797:30;9863:34;9843:18;;;9836:62;9934:20;9914:18;;;9907:48;9972:19;;6614:110:58;9583:414:416;392:703:67;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:67;;;;;;;;;;;;;;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:67;;-1:-1:-1;837:2:67;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:67;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:67;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;1036:11:67;1045:2;1036:11;;:::i;:::-;;;908:150;;12342:831:58;12491:4;12511:13;;;1465:19:64;:23;12507:660:58;;12546:71;;;;;:36;;;;;;:71;;719:10:65;;12597:4:58;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:58;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12784:6;:13;12801:1;12784:18;12780:321;;12826:60;;;;;9785:2:416;12826:60:58;;;9767:21:416;9824:2;9804:18;;;9797:30;9863:34;9843:18;;;9836:62;9934:20;9914:18;;;9907:48;9972:19;;12826:60:58;9583:414:416;12780:321:58;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;12667:51;;12677:41;12667:51;;-1:-1:-1;12660:58:58;;12507:660;-1:-1:-1;13152:4:58;12342:831;;;;;;:::o;14:177:416:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:416;868:16;;861:27;638:258::o;901:317::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1132:2;1120:15;1137:66;1116:88;1107:98;;;;1207:4;1103:109;;901:317;-1:-1:-1;;901:317:416:o;1223:220::-;1372:2;1361:9;1354:21;1335:4;1392:45;1433:2;1422:9;1418:18;1410:6;1392:45;:::i;1448:180::-;1507:6;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;-1:-1:-1;1599:23:416;;1448:180;-1:-1:-1;1448:180:416:o;1864:196::-;1932:20;;1992:42;1981:54;;1971:65;;1961:93;;2050:1;2047;2040:12;1961:93;1864:196;;;:::o;2065:254::-;2133:6;2141;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2233:29;2252:9;2233:29;:::i;:::-;2223:39;2309:2;2294:18;;;;2281:32;;-1:-1:-1;;;2065:254:416:o;2324:328::-;2401:6;2409;2417;2470:2;2458:9;2449:7;2445:23;2441:32;2438:52;;;2486:1;2483;2476:12;2438:52;2509:29;2528:9;2509:29;:::i;:::-;2499:39;;2557:38;2591:2;2580:9;2576:18;2557:38;:::i;:::-;2547:48;;2642:2;2631:9;2627:18;2614:32;2604:42;;2324:328;;;;;:::o;2657:186::-;2716:6;2769:2;2757:9;2748:7;2744:23;2740:32;2737:52;;;2785:1;2782;2775:12;2737:52;2808:29;2827:9;2808:29;:::i;3030:347::-;3095:6;3103;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3195:29;3214:9;3195:29;:::i;:::-;3185:39;;3274:2;3263:9;3259:18;3246:32;3321:5;3314:13;3307:21;3300:5;3297:32;3287:60;;3343:1;3340;3333:12;3287:60;3366:5;3356:15;;;3030:347;;;;;:::o;3382:184::-;3434:77;3431:1;3424:88;3531:4;3528:1;3521:15;3555:4;3552:1;3545:15;3571:1197;3666:6;3674;3682;3690;3743:3;3731:9;3722:7;3718:23;3714:33;3711:53;;;3760:1;3757;3750:12;3711:53;3783:29;3802:9;3783:29;:::i;:::-;3773:39;;3831:38;3865:2;3854:9;3850:18;3831:38;:::i;:::-;3821:48;;3916:2;3905:9;3901:18;3888:32;3878:42;;3971:2;3960:9;3956:18;3943:32;3994:18;4035:2;4027:6;4024:14;4021:34;;;4051:1;4048;4041:12;4021:34;4089:6;4078:9;4074:22;4064:32;;4134:7;4127:4;4123:2;4119:13;4115:27;4105:55;;4156:1;4153;4146:12;4105:55;4192:2;4179:16;4214:2;4210;4207:10;4204:36;;;4220:18;;:::i;:::-;4354:2;4348:9;4416:4;4408:13;;4259:66;4404:22;;;4428:2;4400:31;4396:40;4384:53;;;4452:18;;;4472:22;;;4449:46;4446:72;;;4498:18;;:::i;:::-;4538:10;4534:2;4527:22;4573:2;4565:6;4558:18;4613:7;4608:2;4603;4599;4595:11;4591:20;4588:33;4585:53;;;4634:1;4631;4624:12;4585:53;4690:2;4685;4681;4677:11;4672:2;4664:6;4660:15;4647:46;4735:1;4730:2;4725;4717:6;4713:15;4709:24;4702:35;4756:6;4746:16;;;;;;;3571:1197;;;;;;;:::o;4773:260::-;4841:6;4849;4902:2;4890:9;4881:7;4877:23;4873:32;4870:52;;;4918:1;4915;4908:12;4870:52;4941:29;4960:9;4941:29;:::i;:::-;4931:39;;4989:38;5023:2;5012:9;5008:18;4989:38;:::i;:::-;4979:48;;4773:260;;;;;:::o;5038:437::-;5117:1;5113:12;;;;5160;;;5181:61;;5235:4;5227:6;5223:17;5213:27;;5181:61;5288:2;5280:6;5277:14;5257:18;5254:38;5251:218;;5325:77;5322:1;5315:88;5426:4;5423:1;5416:15;5454:4;5451:1;5444:15;5251:218;;5038:437;;;:::o;7491:470::-;7670:3;7708:6;7702:13;7724:53;7770:6;7765:3;7758:4;7750:6;7746:17;7724:53;:::i;:::-;7840:13;;7799:16;;;;7862:57;7840:13;7799:16;7896:4;7884:17;;7862:57;:::i;:::-;7935:20;;7491:470;-1:-1:-1;;;;7491:470:416:o;8777:184::-;8829:77;8826:1;8819:88;8926:4;8923:1;8916:15;8950:4;8947:1;8940:15;8966:125;9006:4;9034:1;9031;9028:8;9025:34;;;9039:18;;:::i;:::-;-1:-1:-1;9076:9:416;;8966:125::o;9096:128::-;9136:3;9167:1;9163:6;9160:1;9157:13;9154:39;;;9173:18;;:::i;:::-;-1:-1:-1;9209:9:416;;9096:128::o;10002:195::-;10041:3;10072:66;10065:5;10062:77;10059:103;;10142:18;;:::i;:::-;-1:-1:-1;10189:1:416;10178:13;;10002:195::o;10202:184::-;10254:77;10251:1;10244:88;10351:4;10348:1;10341:15;10375:4;10372:1;10365:15;10391:120;10431:1;10457;10447:35;;10462:18;;:::i;:::-;-1:-1:-1;10496:9:416;;10391:120::o;10516:112::-;10548:1;10574;10564:35;;10579:18;;:::i;:::-;-1:-1:-1;10613:9:416;;10516:112::o;10633:184::-;10685:77;10682:1;10675:88;10782:4;10779:1;10772:15;10806:4;10803:1;10796:15;10822:512;11016:4;11045:42;11126:2;11118:6;11114:15;11103:9;11096:34;11178:2;11170:6;11166:15;11161:2;11150:9;11146:18;11139:43;;11218:6;11213:2;11202:9;11198:18;11191:34;11261:3;11256:2;11245:9;11241:18;11234:31;11282:46;11323:3;11312:9;11308:19;11300:6;11282:46;:::i;:::-;11274:54;10822:512;-1:-1:-1;;;;;;10822:512:416:o;11339:249::-;11408:6;11461:2;11449:9;11440:7;11436:23;11432:32;11429:52;;;11477:1;11474;11467:12;11429:52;11509:9;11503:16;11528:30;11552:5;11528:30;:::i","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"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\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea\",\"dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f\",\"dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"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"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"}],"devdoc":{"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":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":"ERC721"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol":{"keccak256":"0x0b606994df12f0ce35f6d2f6dcdde7e55e6899cdef7e00f180980caa81e3844e","urls":["bzz-raw://4c827c981a552d1c76c96060e92f56b52bc20c6f9b4dbf911fe99ddbfb41f2ea","dweb:/ipfs/QmW8xvJdzHrr8Ry34C7viBsgG2b8T1mL4BQWJ5CdfD9JLB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0xed6a749c5373af398105ce6ee3ac4763aa450ea7285d268c85d9eeca809cdb1f","urls":["bzz-raw://20a97f891d06f0fe91560ea1a142aaa26fdd22bed1b51606b7d48f670deeb50f","dweb:/ipfs/QmTbCtZKChpaX5H2iRiTDMcSz29GSLCpTCDgJpcMR4wg8x"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da","urls":["bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708","dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9","urls":["bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146","dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":52214,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":52216,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":52220,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":52224,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":52228,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":52234,"contract":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","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}.","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}."}}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol","id":53056,"exportedSymbols":{"Address":[53880],"Context":[53902],"ERC165":[54851],"ERC721":[53055],"IERC165":[55057],"IERC721":[53171],"IERC721Metadata":[53585],"IERC721Receiver":[53189],"Strings":[54202]},"nodeType":"SourceUnit","src":"107:14240:58","nodes":[{"id":52190,"nodeType":"PragmaDirective","src":"107:23:58","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":52191,"nodeType":"ImportDirective","src":"132:23:58","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","nameLocation":"-1:-1:-1","scope":53056,"sourceUnit":53172,"symbolAliases":[],"unitAlias":""},{"id":52192,"nodeType":"ImportDirective","src":"156:31:58","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":53056,"sourceUnit":53190,"symbolAliases":[],"unitAlias":""},{"id":52193,"nodeType":"ImportDirective","src":"188:42:58","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","nameLocation":"-1:-1:-1","scope":53056,"sourceUnit":53586,"symbolAliases":[],"unitAlias":""},{"id":52194,"nodeType":"ImportDirective","src":"231:33:58","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Address.sol","file":"../../utils/Address.sol","nameLocation":"-1:-1:-1","scope":53056,"sourceUnit":53881,"symbolAliases":[],"unitAlias":""},{"id":52195,"nodeType":"ImportDirective","src":"265:33:58","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","file":"../../utils/Context.sol","nameLocation":"-1:-1:-1","scope":53056,"sourceUnit":53903,"symbolAliases":[],"unitAlias":""},{"id":52196,"nodeType":"ImportDirective","src":"299:33:58","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","nameLocation":"-1:-1:-1","scope":53056,"sourceUnit":54203,"symbolAliases":[],"unitAlias":""},{"id":52197,"nodeType":"ImportDirective","src":"333:46:58","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","nameLocation":"-1:-1:-1","scope":53056,"sourceUnit":54852,"symbolAliases":[],"unitAlias":""},{"id":53055,"nodeType":"ContractDefinition","src":"628:13718:58","nodes":[{"id":52209,"nodeType":"UsingForDirective","src":"695:26:58","nodes":[],"global":false,"libraryName":{"id":52207,"name":"Address","nodeType":"IdentifierPath","referencedDeclaration":53880,"src":"701:7:58"},"typeName":{"id":52208,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":52212,"nodeType":"UsingForDirective","src":"726:26:58","nodes":[],"global":false,"libraryName":{"id":52210,"name":"Strings","nodeType":"IdentifierPath","referencedDeclaration":54202,"src":"732:7:58"},"typeName":{"id":52211,"name":"uint256","nodeType":"ElementaryTypeName","src":"744:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":52214,"nodeType":"VariableDeclaration","src":"776:20:58","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"791:5:58","scope":53055,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":52213,"name":"string","nodeType":"ElementaryTypeName","src":"776:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":52216,"nodeType":"VariableDeclaration","src":"823:22:58","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"838:7:58","scope":53055,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":52215,"name":"string","nodeType":"ElementaryTypeName","src":"823:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":52220,"nodeType":"VariableDeclaration","src":"898:43:58","nodes":[],"constant":false,"mutability":"mutable","name":"_owners","nameLocation":"934:7:58","scope":53055,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":52219,"keyType":{"id":52217,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"898:27:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":52218,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":52224,"nodeType":"VariableDeclaration","src":"992:45:58","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"1028:9:58","scope":53055,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":52223,"keyType":{"id":52221,"name":"address","nodeType":"ElementaryTypeName","src":"1000:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"992:27:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":52222,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":52228,"nodeType":"VariableDeclaration","src":"1093:51:58","nodes":[],"constant":false,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1129:15:58","scope":53055,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":52227,"keyType":{"id":52225,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1093:27:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":52226,"name":"address","nodeType":"ElementaryTypeName","src":"1112:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":52234,"nodeType":"VariableDeclaration","src":"1199:71:58","nodes":[],"constant":false,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1252:18:58","scope":53055,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":52233,"keyType":{"id":52229,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:44:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":52232,"keyType":{"id":52230,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1218:24:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":52231,"name":"bool","nodeType":"ElementaryTypeName","src":"1237:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"id":52251,"nodeType":"FunctionDefinition","src":"1390:113:58","nodes":[],"body":{"id":52250,"nodeType":"Block","src":"1446:57:58","nodes":[],"statements":[{"expression":{"id":52244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52242,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52214,"src":"1456:5:58","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52243,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52237,"src":"1464:5:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1456:13:58","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":52245,"nodeType":"ExpressionStatement","src":"1456:13:58"},{"expression":{"id":52248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52246,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52216,"src":"1479:7:58","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52247,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52239,"src":"1489:7:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1479:17:58","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":52249,"nodeType":"ExpressionStatement","src":"1479:17:58"}]},"documentation":{"id":52235,"nodeType":"StructuredDocumentation","src":"1277:108:58","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":52240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52237,"mutability":"mutable","name":"name_","nameLocation":"1416:5:58","nodeType":"VariableDeclaration","scope":52251,"src":"1402:19:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":52236,"name":"string","nodeType":"ElementaryTypeName","src":"1402:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":52239,"mutability":"mutable","name":"symbol_","nameLocation":"1437:7:58","nodeType":"VariableDeclaration","scope":52251,"src":"1423:21:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":52238,"name":"string","nodeType":"ElementaryTypeName","src":"1423:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1401:44:58"},"returnParameters":{"id":52241,"nodeType":"ParameterList","parameters":[],"src":"1446:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52282,"nodeType":"FunctionDefinition","src":"1570:300:58","nodes":[],"body":{"id":52281,"nodeType":"Block","src":"1678:192:58","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":52279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":52274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":52267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52262,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52254,"src":"1707:11:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":52264,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53171,"src":"1727:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$53171_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$53171_$","typeString":"type(contract IERC721)"}],"id":52263,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1722:4:58","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":52265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1722:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$53171","typeString":"type(contract IERC721)"}},"id":52266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"1722:25:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1707:40:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":52273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52268,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52254,"src":"1763:11:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":52270,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53585,"src":"1783:15:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$53585_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$53585_$","typeString":"type(contract IERC721Metadata)"}],"id":52269,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1778:4:58","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":52271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1778:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$53585","typeString":"type(contract IERC721Metadata)"}},"id":52272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"1778:33:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1763:48:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:104:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":52277,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52254,"src":"1851:11:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":52275,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1827:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$53055_$","typeString":"type(contract super ERC721)"}},"id":52276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":54850,"src":"1827:23:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":52278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1827:36:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:156:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":52261,"id":52280,"nodeType":"Return","src":"1688:175:58"}]},"baseFunctions":[54850,55056],"documentation":{"id":52252,"nodeType":"StructuredDocumentation","src":"1509:56:58","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1579:17:58","overrides":{"id":52258,"nodeType":"OverrideSpecifier","overrides":[{"id":52256,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":54851,"src":"1646:6:58"},{"id":52257,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":55057,"src":"1654:7:58"}],"src":"1637:25:58"},"parameters":{"id":52255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52254,"mutability":"mutable","name":"interfaceId","nameLocation":"1604:11:58","nodeType":"VariableDeclaration","scope":52282,"src":"1597:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":52253,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1597:6:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1596:20:58"},"returnParameters":{"id":52261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52282,"src":"1672:4:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52259,"name":"bool","nodeType":"ElementaryTypeName","src":"1672:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1671:6:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52306,"nodeType":"FunctionDefinition","src":"1929:204:58","nodes":[],"body":{"id":52305,"nodeType":"Block","src":"2010:123:58","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52292,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52285,"src":"2028:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":52295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:58","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":52294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2037:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52293,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:58","typeDescriptions":{}}},"id":52296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2037:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2028:19:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":52298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2049:43:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":52291,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2020:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2020:73:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52300,"nodeType":"ExpressionStatement","src":"2020:73:58"},{"expression":{"baseExpression":{"id":52301,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52224,"src":"2110:9:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":52303,"indexExpression":{"id":52302,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52285,"src":"2120:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2110:16:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":52290,"id":52304,"nodeType":"Return","src":"2103:23:58"}]},"baseFunctions":[53096],"documentation":{"id":52283,"nodeType":"StructuredDocumentation","src":"1876:48:58","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1938:9:58","overrides":{"id":52287,"nodeType":"OverrideSpecifier","overrides":[],"src":"1983:8:58"},"parameters":{"id":52286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52285,"mutability":"mutable","name":"owner","nameLocation":"1956:5:58","nodeType":"VariableDeclaration","scope":52306,"src":"1948:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52284,"name":"address","nodeType":"ElementaryTypeName","src":"1948:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1947:15:58"},"returnParameters":{"id":52290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52306,"src":"2001:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52288,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2000:9:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52334,"nodeType":"FunctionDefinition","src":"2190:218:58","nodes":[],"body":{"id":52333,"nodeType":"Block","src":"2271:137:58","nodes":[],"statements":[{"assignments":[52316],"declarations":[{"constant":false,"id":52316,"mutability":"mutable","name":"owner","nameLocation":"2289:5:58","nodeType":"VariableDeclaration","scope":52333,"src":"2281:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52315,"name":"address","nodeType":"ElementaryTypeName","src":"2281:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":52320,"initialValue":{"baseExpression":{"id":52317,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52220,"src":"2297:7:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":52319,"indexExpression":{"id":52318,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52309,"src":"2305:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2297:16:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2281:32:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52322,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52316,"src":"2331:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":52325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2348:1:58","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":52324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2340:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52323,"name":"address","nodeType":"ElementaryTypeName","src":"2340:7:58","typeDescriptions":{}}},"id":52326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2331:19:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":52328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2352:26:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":52321,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2323:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2323:56:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52330,"nodeType":"ExpressionStatement","src":"2323:56:58"},{"expression":{"id":52331,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52316,"src":"2396:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":52314,"id":52332,"nodeType":"Return","src":"2389:12:58"}]},"baseFunctions":[53104],"documentation":{"id":52307,"nodeType":"StructuredDocumentation","src":"2139:46:58","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2199:7:58","overrides":{"id":52311,"nodeType":"OverrideSpecifier","overrides":[],"src":"2244:8:58"},"parameters":{"id":52310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52309,"mutability":"mutable","name":"tokenId","nameLocation":"2215:7:58","nodeType":"VariableDeclaration","scope":52334,"src":"2207:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52308,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2206:17:58"},"returnParameters":{"id":52314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52334,"src":"2262:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52312,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2261:9:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52344,"nodeType":"FunctionDefinition","src":"2470:98:58","nodes":[],"body":{"id":52343,"nodeType":"Block","src":"2539:29:58","nodes":[],"statements":[{"expression":{"id":52341,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52214,"src":"2556:5:58","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":52340,"id":52342,"nodeType":"Return","src":"2549:12:58"}]},"baseFunctions":[53570],"documentation":{"id":52335,"nodeType":"StructuredDocumentation","src":"2414:51:58","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2479:4:58","overrides":{"id":52337,"nodeType":"OverrideSpecifier","overrides":[],"src":"2506:8:58"},"parameters":{"id":52336,"nodeType":"ParameterList","parameters":[],"src":"2483:2:58"},"returnParameters":{"id":52340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52344,"src":"2524:13:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":52338,"name":"string","nodeType":"ElementaryTypeName","src":"2524:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2523:15:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52354,"nodeType":"FunctionDefinition","src":"2632:102:58","nodes":[],"body":{"id":52353,"nodeType":"Block","src":"2703:31:58","nodes":[],"statements":[{"expression":{"id":52351,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52216,"src":"2720:7:58","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":52350,"id":52352,"nodeType":"Return","src":"2713:14:58"}]},"baseFunctions":[53576],"documentation":{"id":52345,"nodeType":"StructuredDocumentation","src":"2574:53:58","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2641:6:58","overrides":{"id":52347,"nodeType":"OverrideSpecifier","overrides":[],"src":"2670:8:58"},"parameters":{"id":52346,"nodeType":"ParameterList","parameters":[],"src":"2647:2:58"},"returnParameters":{"id":52350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52354,"src":"2688:13:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":52348,"name":"string","nodeType":"ElementaryTypeName","src":"2688:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2687:15:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52393,"nodeType":"FunctionDefinition","src":"2800:276:58","nodes":[],"body":{"id":52392,"nodeType":"Block","src":"2888:188:58","nodes":[],"statements":[{"expression":{"arguments":[{"id":52364,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52357,"src":"2913:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52363,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52970,"src":"2898:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":52365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2898:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52366,"nodeType":"ExpressionStatement","src":"2898:23:58"},{"assignments":[52368],"declarations":[{"constant":false,"id":52368,"mutability":"mutable","name":"baseURI","nameLocation":"2946:7:58","nodeType":"VariableDeclaration","scope":52392,"src":"2932:21:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":52367,"name":"string","nodeType":"ElementaryTypeName","src":"2932:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":52371,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":52369,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52402,"src":"2956:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":52370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2956:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2932:34:58"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":52374,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52368,"src":"2989:7:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":52373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2983:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":52372,"name":"bytes","nodeType":"ElementaryTypeName","src":"2983:5:58","typeDescriptions":{}}},"id":52375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2983:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":52376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2983:21:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":52377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3007:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2983:25:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":52389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3067:2:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":52390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2983:86:58","trueExpression":{"arguments":[{"arguments":[{"id":52383,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52368,"src":"3035:7:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":52384,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52357,"src":"3044:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":54064,"src":"3044:16:58","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":52386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3044:18:58","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":52381,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3018:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":52382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3018:16:58","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":52387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3018:45:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":52380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3011:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":52379,"name":"string","nodeType":"ElementaryTypeName","src":"3011:6:58","typeDescriptions":{}}},"id":52388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3011:53:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":52362,"id":52391,"nodeType":"Return","src":"2976:93:58"}]},"baseFunctions":[53584],"documentation":{"id":52355,"nodeType":"StructuredDocumentation","src":"2740:55:58","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2809:8:58","overrides":{"id":52359,"nodeType":"OverrideSpecifier","overrides":[],"src":"2855:8:58"},"parameters":{"id":52358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52357,"mutability":"mutable","name":"tokenId","nameLocation":"2826:7:58","nodeType":"VariableDeclaration","scope":52393,"src":"2818:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52356,"name":"uint256","nodeType":"ElementaryTypeName","src":"2818:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2817:17:58"},"returnParameters":{"id":52362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52393,"src":"2873:13:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":52360,"name":"string","nodeType":"ElementaryTypeName","src":"2873:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2872:15:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52402,"nodeType":"FunctionDefinition","src":"3318:92:58","nodes":[],"body":{"id":52401,"nodeType":"Block","src":"3384:26:58","nodes":[],"statements":[{"expression":{"hexValue":"","id":52399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3401:2:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":52398,"id":52400,"nodeType":"Return","src":"3394:9:58"}]},"documentation":{"id":52394,"nodeType":"StructuredDocumentation","src":"3082:231:58","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 overridden in child contracts."},"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3327:8:58","parameters":{"id":52395,"nodeType":"ParameterList","parameters":[],"src":"3335:2:58"},"returnParameters":{"id":52398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52402,"src":"3369:13:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":52396,"name":"string","nodeType":"ElementaryTypeName","src":"3369:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3368:15:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":52445,"nodeType":"FunctionDefinition","src":"3467:407:58","nodes":[],"body":{"id":52444,"nodeType":"Block","src":"3537:337:58","nodes":[],"statements":[{"assignments":[52412],"declarations":[{"constant":false,"id":52412,"mutability":"mutable","name":"owner","nameLocation":"3555:5:58","nodeType":"VariableDeclaration","scope":52444,"src":"3547:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52411,"name":"address","nodeType":"ElementaryTypeName","src":"3547:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":52417,"initialValue":{"arguments":[{"id":52415,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52407,"src":"3578:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52413,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"3563:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":52414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":52334,"src":"3563:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":52416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3563:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3547:39:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52419,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52405,"src":"3604:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":52420,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52412,"src":"3610:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3604:11:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":52422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3617:35:58","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":52418,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3596:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3596:57:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52424,"nodeType":"ExpressionStatement","src":"3596:57:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":52435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":52426,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53892,"src":"3685:10:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":52427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3685:12:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":52428,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52412,"src":"3701:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3685:21:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":52431,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52412,"src":"3727:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":52432,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53892,"src":"3734:10:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":52433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3734:12:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":52430,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52498,"src":"3710:16:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":52434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3710:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3685:62:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":52436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3761:64:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""},"value":"ERC721: approve caller is not token owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""}],"id":52425,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3664:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:171:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52438,"nodeType":"ExpressionStatement","src":"3664:171:58"},{"expression":{"arguments":[{"id":52440,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52405,"src":"3855:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52441,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52407,"src":"3859:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52439,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52924,"src":"3846:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":52442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3846:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52443,"nodeType":"ExpressionStatement","src":"3846:21:58"}]},"baseFunctions":[53144],"documentation":{"id":52403,"nodeType":"StructuredDocumentation","src":"3416:46:58","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3476:7:58","overrides":{"id":52409,"nodeType":"OverrideSpecifier","overrides":[],"src":"3528:8:58"},"parameters":{"id":52408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52405,"mutability":"mutable","name":"to","nameLocation":"3492:2:58","nodeType":"VariableDeclaration","scope":52445,"src":"3484:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52404,"name":"address","nodeType":"ElementaryTypeName","src":"3484:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52407,"mutability":"mutable","name":"tokenId","nameLocation":"3504:7:58","nodeType":"VariableDeclaration","scope":52445,"src":"3496:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52406,"name":"uint256","nodeType":"ElementaryTypeName","src":"3496:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3483:29:58"},"returnParameters":{"id":52410,"nodeType":"ParameterList","parameters":[],"src":"3537:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":52463,"nodeType":"FunctionDefinition","src":"3935:167:58","nodes":[],"body":{"id":52462,"nodeType":"Block","src":"4020:82:58","nodes":[],"statements":[{"expression":{"arguments":[{"id":52455,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52448,"src":"4045:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52454,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52970,"src":"4030:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":52456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4030:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52457,"nodeType":"ExpressionStatement","src":"4030:23:58"},{"expression":{"baseExpression":{"id":52458,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52228,"src":"4071:15:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":52460,"indexExpression":{"id":52459,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52448,"src":"4087:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:24:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":52453,"id":52461,"nodeType":"Return","src":"4064:31:58"}]},"baseFunctions":[53160],"documentation":{"id":52446,"nodeType":"StructuredDocumentation","src":"3880:50:58","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3944:11:58","overrides":{"id":52450,"nodeType":"OverrideSpecifier","overrides":[],"src":"3993:8:58"},"parameters":{"id":52449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52448,"mutability":"mutable","name":"tokenId","nameLocation":"3964:7:58","nodeType":"VariableDeclaration","scope":52463,"src":"3956:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52447,"name":"uint256","nodeType":"ElementaryTypeName","src":"3956:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3955:17:58"},"returnParameters":{"id":52453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52463,"src":"4011:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52451,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:9:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52480,"nodeType":"FunctionDefinition","src":"4169:153:58","nodes":[],"body":{"id":52479,"nodeType":"Block","src":"4253:69:58","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":52473,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53892,"src":"4282:10:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":52474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4282:12:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52475,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52466,"src":"4296:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52476,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52468,"src":"4306:8:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":52472,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52956,"src":"4263:18:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":52477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4263:52:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52478,"nodeType":"ExpressionStatement","src":"4263:52:58"}]},"baseFunctions":[53152],"documentation":{"id":52464,"nodeType":"StructuredDocumentation","src":"4108:56:58","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4178:17:58","overrides":{"id":52470,"nodeType":"OverrideSpecifier","overrides":[],"src":"4244:8:58"},"parameters":{"id":52469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52466,"mutability":"mutable","name":"operator","nameLocation":"4204:8:58","nodeType":"VariableDeclaration","scope":52480,"src":"4196:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52465,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52468,"mutability":"mutable","name":"approved","nameLocation":"4219:8:58","nodeType":"VariableDeclaration","scope":52480,"src":"4214:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52467,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:33:58"},"returnParameters":{"id":52471,"nodeType":"ParameterList","parameters":[],"src":"4253:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":52498,"nodeType":"FunctionDefinition","src":"4388:162:58","nodes":[],"body":{"id":52497,"nodeType":"Block","src":"4491:59:58","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":52491,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52234,"src":"4508:18:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":52493,"indexExpression":{"id":52492,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52483,"src":"4527:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:25:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52495,"indexExpression":{"id":52494,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52485,"src":"4534:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:35:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":52490,"id":52496,"nodeType":"Return","src":"4501:42:58"}]},"baseFunctions":[53170],"documentation":{"id":52481,"nodeType":"StructuredDocumentation","src":"4328:55:58","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4397:16:58","overrides":{"id":52487,"nodeType":"OverrideSpecifier","overrides":[],"src":"4467:8:58"},"parameters":{"id":52486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52483,"mutability":"mutable","name":"owner","nameLocation":"4422:5:58","nodeType":"VariableDeclaration","scope":52498,"src":"4414:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52482,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52485,"mutability":"mutable","name":"operator","nameLocation":"4437:8:58","nodeType":"VariableDeclaration","scope":52498,"src":"4429:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52484,"name":"address","nodeType":"ElementaryTypeName","src":"4429:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4413:33:58"},"returnParameters":{"id":52490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52489,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52498,"src":"4485:4:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52488,"name":"bool","nodeType":"ElementaryTypeName","src":"4485:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4484:6:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":52525,"nodeType":"FunctionDefinition","src":"4612:327:58","nodes":[],"body":{"id":52524,"nodeType":"Block","src":"4731:208:58","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":52511,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53892,"src":"4820:10:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":52512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4820:12:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52513,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52505,"src":"4834:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52510,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52655,"src":"4801:18:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":52514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4801:41:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":52515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4844:48:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":52509,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4793:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4793:100:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52517,"nodeType":"ExpressionStatement","src":"4793:100:58"},{"expression":{"arguments":[{"id":52519,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52501,"src":"4914:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52520,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52503,"src":"4920:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52521,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52505,"src":"4924:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52518,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52900,"src":"4904:9:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4904:28:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52523,"nodeType":"ExpressionStatement","src":"4904:28:58"}]},"baseFunctions":[53136],"documentation":{"id":52499,"nodeType":"StructuredDocumentation","src":"4556:51:58","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4621:12:58","overrides":{"id":52507,"nodeType":"OverrideSpecifier","overrides":[],"src":"4722:8:58"},"parameters":{"id":52506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52501,"mutability":"mutable","name":"from","nameLocation":"4651:4:58","nodeType":"VariableDeclaration","scope":52525,"src":"4643:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52500,"name":"address","nodeType":"ElementaryTypeName","src":"4643:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52503,"mutability":"mutable","name":"to","nameLocation":"4673:2:58","nodeType":"VariableDeclaration","scope":52525,"src":"4665:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52502,"name":"address","nodeType":"ElementaryTypeName","src":"4665:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52505,"mutability":"mutable","name":"tokenId","nameLocation":"4693:7:58","nodeType":"VariableDeclaration","scope":52525,"src":"4685:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52504,"name":"uint256","nodeType":"ElementaryTypeName","src":"4685:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4633:73:58"},"returnParameters":{"id":52508,"nodeType":"ParameterList","parameters":[],"src":"4731:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":52544,"nodeType":"FunctionDefinition","src":"5005:179:58","nodes":[],"body":{"id":52543,"nodeType":"Block","src":"5128:56:58","nodes":[],"statements":[{"expression":{"arguments":[{"id":52537,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52528,"src":"5155:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52538,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52530,"src":"5161:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52539,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52532,"src":"5165:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":52540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5174:2:58","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":52536,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[52544,52574],"referencedDeclaration":52574,"src":"5138:16:58","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":52541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5138:39:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52542,"nodeType":"ExpressionStatement","src":"5138:39:58"}]},"baseFunctions":[53126],"documentation":{"id":52526,"nodeType":"StructuredDocumentation","src":"4945:55:58","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5014:16:58","overrides":{"id":52534,"nodeType":"OverrideSpecifier","overrides":[],"src":"5119:8:58"},"parameters":{"id":52533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52528,"mutability":"mutable","name":"from","nameLocation":"5048:4:58","nodeType":"VariableDeclaration","scope":52544,"src":"5040:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52527,"name":"address","nodeType":"ElementaryTypeName","src":"5040:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52530,"mutability":"mutable","name":"to","nameLocation":"5070:2:58","nodeType":"VariableDeclaration","scope":52544,"src":"5062:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52529,"name":"address","nodeType":"ElementaryTypeName","src":"5062:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52532,"mutability":"mutable","name":"tokenId","nameLocation":"5090:7:58","nodeType":"VariableDeclaration","scope":52544,"src":"5082:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52531,"name":"uint256","nodeType":"ElementaryTypeName","src":"5082:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5030:73:58"},"returnParameters":{"id":52535,"nodeType":"ParameterList","parameters":[],"src":"5128:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":52574,"nodeType":"FunctionDefinition","src":"5250:315:58","nodes":[],"body":{"id":52573,"nodeType":"Block","src":"5400:165:58","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":52559,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53892,"src":"5437:10:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":52560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5437:12:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52561,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52551,"src":"5451:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52558,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52655,"src":"5418:18:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":52562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5418:41:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":52563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5461:48:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":52557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5410:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5410:100:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52565,"nodeType":"ExpressionStatement","src":"5410:100:58"},{"expression":{"arguments":[{"id":52567,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52547,"src":"5534:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52568,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52549,"src":"5540:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52569,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52551,"src":"5544:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":52570,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52553,"src":"5553:4:58","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":52566,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52603,"src":"5520:13:58","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":52571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5520:38:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52572,"nodeType":"ExpressionStatement","src":"5520:38:58"}]},"baseFunctions":[53116],"documentation":{"id":52545,"nodeType":"StructuredDocumentation","src":"5190:55:58","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5259:16:58","overrides":{"id":52555,"nodeType":"OverrideSpecifier","overrides":[],"src":"5391:8:58"},"parameters":{"id":52554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52547,"mutability":"mutable","name":"from","nameLocation":"5293:4:58","nodeType":"VariableDeclaration","scope":52574,"src":"5285:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52546,"name":"address","nodeType":"ElementaryTypeName","src":"5285:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52549,"mutability":"mutable","name":"to","nameLocation":"5315:2:58","nodeType":"VariableDeclaration","scope":52574,"src":"5307:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52548,"name":"address","nodeType":"ElementaryTypeName","src":"5307:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52551,"mutability":"mutable","name":"tokenId","nameLocation":"5335:7:58","nodeType":"VariableDeclaration","scope":52574,"src":"5327:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52550,"name":"uint256","nodeType":"ElementaryTypeName","src":"5327:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52553,"mutability":"mutable","name":"data","nameLocation":"5365:4:58","nodeType":"VariableDeclaration","scope":52574,"src":"5352:17:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":52552,"name":"bytes","nodeType":"ElementaryTypeName","src":"5352:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5275:100:58"},"returnParameters":{"id":52556,"nodeType":"ParameterList","parameters":[],"src":"5400:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":52603,"nodeType":"FunctionDefinition","src":"6426:305:58","nodes":[],"body":{"id":52602,"nodeType":"Block","src":"6566:165:58","nodes":[],"statements":[{"expression":{"arguments":[{"id":52587,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52577,"src":"6586:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52588,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52579,"src":"6592:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52589,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52581,"src":"6596:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52586,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52900,"src":"6576:9:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6576:28:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52591,"nodeType":"ExpressionStatement","src":"6576:28:58"},{"expression":{"arguments":[{"arguments":[{"id":52594,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52577,"src":"6645:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52595,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52579,"src":"6651:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52596,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52581,"src":"6655:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":52597,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52583,"src":"6664:4:58","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":52593,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53032,"src":"6622:22:58","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":52598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6622:47:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":52599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6671:52:58","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":52592,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6614:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6614:110:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52601,"nodeType":"ExpressionStatement","src":"6614:110:58"}]},"documentation":{"id":52575,"nodeType":"StructuredDocumentation","src":"5571:850:58","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."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"6435:13:58","parameters":{"id":52584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52577,"mutability":"mutable","name":"from","nameLocation":"6466:4:58","nodeType":"VariableDeclaration","scope":52603,"src":"6458:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52576,"name":"address","nodeType":"ElementaryTypeName","src":"6458:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52579,"mutability":"mutable","name":"to","nameLocation":"6488:2:58","nodeType":"VariableDeclaration","scope":52603,"src":"6480:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52578,"name":"address","nodeType":"ElementaryTypeName","src":"6480:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52581,"mutability":"mutable","name":"tokenId","nameLocation":"6508:7:58","nodeType":"VariableDeclaration","scope":52603,"src":"6500:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52580,"name":"uint256","nodeType":"ElementaryTypeName","src":"6500:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52583,"mutability":"mutable","name":"data","nameLocation":"6538:4:58","nodeType":"VariableDeclaration","scope":52603,"src":"6525:17:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":52582,"name":"bytes","nodeType":"ElementaryTypeName","src":"6525:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6448:100:58"},"returnParameters":{"id":52585,"nodeType":"ParameterList","parameters":[],"src":"6566:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52621,"nodeType":"FunctionDefinition","src":"7034:125:58","nodes":[],"body":{"id":52620,"nodeType":"Block","src":"7105:54:58","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":52611,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52220,"src":"7122:7:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":52613,"indexExpression":{"id":52612,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52606,"src":"7130:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7122:16:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":52616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7150:1:58","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":52615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7142:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52614,"name":"address","nodeType":"ElementaryTypeName","src":"7142:7:58","typeDescriptions":{}}},"id":52617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7142:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7122:30:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":52610,"id":52619,"nodeType":"Return","src":"7115:37:58"}]},"documentation":{"id":52604,"nodeType":"StructuredDocumentation","src":"6737:292:58","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`)."},"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7043:7:58","parameters":{"id":52607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52606,"mutability":"mutable","name":"tokenId","nameLocation":"7059:7:58","nodeType":"VariableDeclaration","scope":52621,"src":"7051:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52605,"name":"uint256","nodeType":"ElementaryTypeName","src":"7051:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7050:17:58"},"returnParameters":{"id":52610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52621,"src":"7099:4:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52608,"name":"bool","nodeType":"ElementaryTypeName","src":"7099:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7098:6:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":52655,"nodeType":"FunctionDefinition","src":"7317:261:58","nodes":[],"body":{"id":52654,"nodeType":"Block","src":"7416:162:58","nodes":[],"statements":[{"assignments":[52632],"declarations":[{"constant":false,"id":52632,"mutability":"mutable","name":"owner","nameLocation":"7434:5:58","nodeType":"VariableDeclaration","scope":52654,"src":"7426:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52631,"name":"address","nodeType":"ElementaryTypeName","src":"7426:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":52637,"initialValue":{"arguments":[{"id":52635,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52626,"src":"7457:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52633,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"7442:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":52634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":52334,"src":"7442:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":52636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7442:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7426:39:58"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":52651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":52645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52638,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52624,"src":"7483:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":52639,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52632,"src":"7494:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7483:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":52642,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52632,"src":"7520:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52643,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52624,"src":"7527:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":52641,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52498,"src":"7503:16:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":52644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7503:32:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7483:52:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":52647,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52626,"src":"7551:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52646,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52463,"src":"7539:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":52648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7539:20:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":52649,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52624,"src":"7563:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7539:31:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7483:87:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":52652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7482:89:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":52630,"id":52653,"nodeType":"Return","src":"7475:96:58"}]},"documentation":{"id":52622,"nodeType":"StructuredDocumentation","src":"7165:147:58","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"7326:18:58","parameters":{"id":52627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52624,"mutability":"mutable","name":"spender","nameLocation":"7353:7:58","nodeType":"VariableDeclaration","scope":52655,"src":"7345:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52623,"name":"address","nodeType":"ElementaryTypeName","src":"7345:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52626,"mutability":"mutable","name":"tokenId","nameLocation":"7370:7:58","nodeType":"VariableDeclaration","scope":52655,"src":"7362:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52625,"name":"uint256","nodeType":"ElementaryTypeName","src":"7362:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7344:34:58"},"returnParameters":{"id":52630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52655,"src":"7410:4:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52628,"name":"bool","nodeType":"ElementaryTypeName","src":"7410:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7409:6:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":52670,"nodeType":"FunctionDefinition","src":"7908:108:58","nodes":[],"body":{"id":52669,"nodeType":"Block","src":"7973:43:58","nodes":[],"statements":[{"expression":{"arguments":[{"id":52664,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52658,"src":"7993:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52665,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52660,"src":"7997:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":52666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8006:2:58","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":52663,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[52670,52699],"referencedDeclaration":52699,"src":"7983:9:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":52667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7983:26:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52668,"nodeType":"ExpressionStatement","src":"7983:26:58"}]},"documentation":{"id":52656,"nodeType":"StructuredDocumentation","src":"7584:319:58","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."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"7917:9:58","parameters":{"id":52661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52658,"mutability":"mutable","name":"to","nameLocation":"7935:2:58","nodeType":"VariableDeclaration","scope":52670,"src":"7927:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52657,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52660,"mutability":"mutable","name":"tokenId","nameLocation":"7947:7:58","nodeType":"VariableDeclaration","scope":52670,"src":"7939:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52659,"name":"uint256","nodeType":"ElementaryTypeName","src":"7939:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7926:29:58"},"returnParameters":{"id":52662,"nodeType":"ParameterList","parameters":[],"src":"7973:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52699,"nodeType":"FunctionDefinition","src":"8237:309:58","nodes":[],"body":{"id":52698,"nodeType":"Block","src":"8351:195:58","nodes":[],"statements":[{"expression":{"arguments":[{"id":52681,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52673,"src":"8367:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52682,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52675,"src":"8371:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52680,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52765,"src":"8361:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":52683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8361:18:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52684,"nodeType":"ExpressionStatement","src":"8361:18:58"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":52689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8441:1:58","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":52688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8433:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52687,"name":"address","nodeType":"ElementaryTypeName","src":"8433:7:58","typeDescriptions":{}}},"id":52690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8433:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52691,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52673,"src":"8445:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52692,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52675,"src":"8449:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":52693,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52677,"src":"8458:4:58","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":52686,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53032,"src":"8410:22:58","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":52694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8410:53:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":52695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8477:52:58","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":52685,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8389:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8389:150:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52697,"nodeType":"ExpressionStatement","src":"8389:150:58"}]},"documentation":{"id":52671,"nodeType":"StructuredDocumentation","src":"8022:210:58","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."},"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8246:9:58","parameters":{"id":52678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52673,"mutability":"mutable","name":"to","nameLocation":"8273:2:58","nodeType":"VariableDeclaration","scope":52699,"src":"8265:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52672,"name":"address","nodeType":"ElementaryTypeName","src":"8265:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52675,"mutability":"mutable","name":"tokenId","nameLocation":"8293:7:58","nodeType":"VariableDeclaration","scope":52699,"src":"8285:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52674,"name":"uint256","nodeType":"ElementaryTypeName","src":"8285:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52677,"mutability":"mutable","name":"data","nameLocation":"8323:4:58","nodeType":"VariableDeclaration","scope":52699,"src":"8310:17:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":52676,"name":"bytes","nodeType":"ElementaryTypeName","src":"8310:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8255:78:58"},"returnParameters":{"id":52679,"nodeType":"ParameterList","parameters":[],"src":"8351:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52765,"nodeType":"FunctionDefinition","src":"8868:427:58","nodes":[],"body":{"id":52764,"nodeType":"Block","src":"8929:366:58","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52708,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52702,"src":"8947:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":52711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8961:1:58","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":52710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8953:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52709,"name":"address","nodeType":"ElementaryTypeName","src":"8953:7:58","typeDescriptions":{}}},"id":52712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8953:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8947:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":52714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8965:34:58","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":52707,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8939:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8939:61:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52716,"nodeType":"ExpressionStatement","src":"8939:61:58"},{"expression":{"arguments":[{"id":52721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9018:17:58","subExpression":{"arguments":[{"id":52719,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52704,"src":"9027:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52718,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52621,"src":"9019:7:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":52720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9019:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":52722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9037:30:58","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":52717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9010:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9010:58:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52724,"nodeType":"ExpressionStatement","src":"9010:58:58"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":52728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9108:1:58","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":52727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9100:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52726,"name":"address","nodeType":"ElementaryTypeName","src":"9100:7:58","typeDescriptions":{}}},"id":52729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9100:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52730,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52702,"src":"9112:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52731,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52704,"src":"9116:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52725,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53043,"src":"9079:20:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9079:45:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52733,"nodeType":"ExpressionStatement","src":"9079:45:58"},{"expression":{"id":52738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52734,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52224,"src":"9135:9:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":52736,"indexExpression":{"id":52735,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52702,"src":"9145:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9135:13:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":52737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9152:1:58","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9135:18:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52739,"nodeType":"ExpressionStatement","src":"9135:18:58"},{"expression":{"id":52744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52740,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52220,"src":"9163:7:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":52742,"indexExpression":{"id":52741,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52704,"src":"9171:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9163:16:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52743,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52702,"src":"9182:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9163:21:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":52745,"nodeType":"ExpressionStatement","src":"9163:21:58"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":52749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9217:1:58","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":52748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9209:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52747,"name":"address","nodeType":"ElementaryTypeName","src":"9209:7:58","typeDescriptions":{}}},"id":52750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9209:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52751,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52702,"src":"9221:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52752,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52704,"src":"9225:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52746,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53070,"src":"9200:8:58","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9200:33:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52754,"nodeType":"EmitStatement","src":"9195:38:58"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":52758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:58","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":52757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9264:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52756,"name":"address","nodeType":"ElementaryTypeName","src":"9264:7:58","typeDescriptions":{}}},"id":52759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9264:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52760,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52702,"src":"9276:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52761,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52704,"src":"9280:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52755,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53054,"src":"9244:19:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9244:44:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52763,"nodeType":"ExpressionStatement","src":"9244:44:58"}]},"documentation":{"id":52700,"nodeType":"StructuredDocumentation","src":"8552:311:58","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."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8877:5:58","parameters":{"id":52705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52702,"mutability":"mutable","name":"to","nameLocation":"8891:2:58","nodeType":"VariableDeclaration","scope":52765,"src":"8883:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52701,"name":"address","nodeType":"ElementaryTypeName","src":"8883:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52704,"mutability":"mutable","name":"tokenId","nameLocation":"8903:7:58","nodeType":"VariableDeclaration","scope":52765,"src":"8895:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52703,"name":"uint256","nodeType":"ElementaryTypeName","src":"8895:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8882:29:58"},"returnParameters":{"id":52706,"nodeType":"ParameterList","parameters":[],"src":"8929:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52825,"nodeType":"FunctionDefinition","src":"9512:406:58","nodes":[],"body":{"id":52824,"nodeType":"Block","src":"9561:357:58","nodes":[],"statements":[{"assignments":[52772],"declarations":[{"constant":false,"id":52772,"mutability":"mutable","name":"owner","nameLocation":"9579:5:58","nodeType":"VariableDeclaration","scope":52824,"src":"9571:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52771,"name":"address","nodeType":"ElementaryTypeName","src":"9571:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":52777,"initialValue":{"arguments":[{"id":52775,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52768,"src":"9602:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52773,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"9587:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":52774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":52334,"src":"9587:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":52776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9587:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9571:39:58"},{"expression":{"arguments":[{"id":52779,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52772,"src":"9642:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":52782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9657:1:58","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":52781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9649:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52780,"name":"address","nodeType":"ElementaryTypeName","src":"9649:7:58","typeDescriptions":{}}},"id":52783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9649:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52784,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52768,"src":"9661:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52778,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53043,"src":"9621:20:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9621:48:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52786,"nodeType":"ExpressionStatement","src":"9621:48:58"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":52790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9724:1:58","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":52789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9716:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52788,"name":"address","nodeType":"ElementaryTypeName","src":"9716:7:58","typeDescriptions":{}}},"id":52791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9716:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52792,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52768,"src":"9728:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52787,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52924,"src":"9707:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":52793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9707:29:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52794,"nodeType":"ExpressionStatement","src":"9707:29:58"},{"expression":{"id":52799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52795,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52224,"src":"9747:9:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":52797,"indexExpression":{"id":52796,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52772,"src":"9757:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9747:16:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":52798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9767:1:58","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9747:21:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52800,"nodeType":"ExpressionStatement","src":"9747:21:58"},{"expression":{"id":52804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9778:23:58","subExpression":{"baseExpression":{"id":52801,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52220,"src":"9785:7:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":52803,"indexExpression":{"id":52802,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52768,"src":"9793:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9785:16:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52805,"nodeType":"ExpressionStatement","src":"9778:23:58"},{"eventCall":{"arguments":[{"id":52807,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52772,"src":"9826:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":52810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9841:1:58","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":52809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9833:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52808,"name":"address","nodeType":"ElementaryTypeName","src":"9833:7:58","typeDescriptions":{}}},"id":52811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9833:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52812,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52768,"src":"9845:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52806,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53070,"src":"9817:8:58","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9817:36:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52814,"nodeType":"EmitStatement","src":"9812:41:58"},{"expression":{"arguments":[{"id":52816,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52772,"src":"9884:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":52819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9899:1:58","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":52818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9891:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52817,"name":"address","nodeType":"ElementaryTypeName","src":"9891:7:58","typeDescriptions":{}}},"id":52820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9891:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52821,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52768,"src":"9903:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52815,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53054,"src":"9864:19:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9864:47:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52823,"nodeType":"ExpressionStatement","src":"9864:47:58"}]},"documentation":{"id":52766,"nodeType":"StructuredDocumentation","src":"9301:206:58","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."},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9521:5:58","parameters":{"id":52769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52768,"mutability":"mutable","name":"tokenId","nameLocation":"9535:7:58","nodeType":"VariableDeclaration","scope":52825,"src":"9527:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52767,"name":"uint256","nodeType":"ElementaryTypeName","src":"9527:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9526:17:58"},"returnParameters":{"id":52770,"nodeType":"ParameterList","parameters":[],"src":"9561:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52900,"nodeType":"FunctionDefinition","src":"10242:605:58","nodes":[],"body":{"id":52899,"nodeType":"Block","src":"10351:496:58","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":52838,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52832,"src":"10384:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52836,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"10369:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":52837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":52334,"src":"10369:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":52839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10369:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":52840,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52828,"src":"10396:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10369:31:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":52842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10402:39:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":52835,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10361:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10361:81:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52844,"nodeType":"ExpressionStatement","src":"10361:81:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52846,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52830,"src":"10460:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":52849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10474:1:58","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":52848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10466:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52847,"name":"address","nodeType":"ElementaryTypeName","src":"10466:7:58","typeDescriptions":{}}},"id":52850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10466:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10460:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":52852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10478:38:58","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":52845,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10452:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10452:65:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52854,"nodeType":"ExpressionStatement","src":"10452:65:58"},{"expression":{"arguments":[{"id":52856,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52828,"src":"10549:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52857,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52830,"src":"10555:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52858,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52832,"src":"10559:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52855,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53043,"src":"10528:20:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10528:39:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52860,"nodeType":"ExpressionStatement","src":"10528:39:58"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":52864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10646:1:58","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":52863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10638:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52862,"name":"address","nodeType":"ElementaryTypeName","src":"10638:7:58","typeDescriptions":{}}},"id":52865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10638:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52866,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52832,"src":"10650:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52861,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52924,"src":"10629:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":52867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10629:29:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52868,"nodeType":"ExpressionStatement","src":"10629:29:58"},{"expression":{"id":52873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52869,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52224,"src":"10669:9:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":52871,"indexExpression":{"id":52870,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52828,"src":"10679:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10669:15:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":52872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10688:1:58","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10669:20:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52874,"nodeType":"ExpressionStatement","src":"10669:20:58"},{"expression":{"id":52879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52875,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52224,"src":"10699:9:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":52877,"indexExpression":{"id":52876,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52830,"src":"10709:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10699:13:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":52878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10716:1:58","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10699:18:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52880,"nodeType":"ExpressionStatement","src":"10699:18:58"},{"expression":{"id":52885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52881,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52220,"src":"10727:7:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":52883,"indexExpression":{"id":52882,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52832,"src":"10735:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10727:16:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52884,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52830,"src":"10746:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10727:21:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":52886,"nodeType":"ExpressionStatement","src":"10727:21:58"},{"eventCall":{"arguments":[{"id":52888,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52828,"src":"10773:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52889,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52830,"src":"10779:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52890,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52832,"src":"10783:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52887,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53070,"src":"10764:8:58","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10764:27:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52892,"nodeType":"EmitStatement","src":"10759:32:58"},{"expression":{"arguments":[{"id":52894,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52828,"src":"10822:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52895,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52830,"src":"10828:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52896,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52832,"src":"10832:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52893,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53054,"src":"10802:19:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10802:38:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52898,"nodeType":"ExpressionStatement","src":"10802:38:58"}]},"documentation":{"id":52826,"nodeType":"StructuredDocumentation","src":"9924:313:58","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."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"10251:9:58","parameters":{"id":52833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52828,"mutability":"mutable","name":"from","nameLocation":"10278:4:58","nodeType":"VariableDeclaration","scope":52900,"src":"10270:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52827,"name":"address","nodeType":"ElementaryTypeName","src":"10270:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52830,"mutability":"mutable","name":"to","nameLocation":"10300:2:58","nodeType":"VariableDeclaration","scope":52900,"src":"10292:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52829,"name":"address","nodeType":"ElementaryTypeName","src":"10292:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52832,"mutability":"mutable","name":"tokenId","nameLocation":"10320:7:58","nodeType":"VariableDeclaration","scope":52900,"src":"10312:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52831,"name":"uint256","nodeType":"ElementaryTypeName","src":"10312:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10260:73:58"},"returnParameters":{"id":52834,"nodeType":"ParameterList","parameters":[],"src":"10351:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52924,"nodeType":"FunctionDefinition","src":"10959:171:58","nodes":[],"body":{"id":52923,"nodeType":"Block","src":"11023:107:58","nodes":[],"statements":[{"expression":{"id":52912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52908,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52228,"src":"11033:15:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":52910,"indexExpression":{"id":52909,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"11049:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11033:24:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52911,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52903,"src":"11060:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11033:29:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":52913,"nodeType":"ExpressionStatement","src":"11033:29:58"},{"eventCall":{"arguments":[{"arguments":[{"id":52917,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"11101:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52915,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53055,"src":"11086:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$53055_$","typeString":"type(contract ERC721)"}},"id":52916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":52334,"src":"11086:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":52918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11086:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52919,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52903,"src":"11111:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52920,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"11115:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52914,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53079,"src":"11077:8:58","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":52921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11077:46:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52922,"nodeType":"EmitStatement","src":"11072:51:58"}]},"documentation":{"id":52901,"nodeType":"StructuredDocumentation","src":"10853:101:58","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10968:8:58","parameters":{"id":52906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52903,"mutability":"mutable","name":"to","nameLocation":"10985:2:58","nodeType":"VariableDeclaration","scope":52924,"src":"10977:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52902,"name":"address","nodeType":"ElementaryTypeName","src":"10977:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52905,"mutability":"mutable","name":"tokenId","nameLocation":"10997:7:58","nodeType":"VariableDeclaration","scope":52924,"src":"10989:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52904,"name":"uint256","nodeType":"ElementaryTypeName","src":"10989:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10976:29:58"},"returnParameters":{"id":52907,"nodeType":"ParameterList","parameters":[],"src":"11023:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52956,"nodeType":"FunctionDefinition","src":"11266:307:58","nodes":[],"body":{"id":52955,"nodeType":"Block","src":"11389:184:58","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52935,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52927,"src":"11407:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":52936,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52929,"src":"11416:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11407:17:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":52938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11426:27:58","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":52934,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11399:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11399:55:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52940,"nodeType":"ExpressionStatement","src":"11399:55:58"},{"expression":{"id":52947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":52941,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52234,"src":"11464:18:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":52944,"indexExpression":{"id":52942,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52927,"src":"11483:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11464:25:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52945,"indexExpression":{"id":52943,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52929,"src":"11490:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11464:35:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52946,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52931,"src":"11502:8:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11464:46:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52948,"nodeType":"ExpressionStatement","src":"11464:46:58"},{"eventCall":{"arguments":[{"id":52950,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52927,"src":"11540:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52951,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52929,"src":"11547:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52952,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52931,"src":"11557:8:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":52949,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53088,"src":"11525:14:58","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":52953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11525:41:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52954,"nodeType":"EmitStatement","src":"11520:46:58"}]},"documentation":{"id":52925,"nodeType":"StructuredDocumentation","src":"11136:125:58","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"11275:18:58","parameters":{"id":52932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52927,"mutability":"mutable","name":"owner","nameLocation":"11311:5:58","nodeType":"VariableDeclaration","scope":52956,"src":"11303:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52926,"name":"address","nodeType":"ElementaryTypeName","src":"11303:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52929,"mutability":"mutable","name":"operator","nameLocation":"11334:8:58","nodeType":"VariableDeclaration","scope":52956,"src":"11326:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52928,"name":"address","nodeType":"ElementaryTypeName","src":"11326:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52931,"mutability":"mutable","name":"approved","nameLocation":"11357:8:58","nodeType":"VariableDeclaration","scope":52956,"src":"11352:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52930,"name":"bool","nodeType":"ElementaryTypeName","src":"11352:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11293:78:58"},"returnParameters":{"id":52933,"nodeType":"ParameterList","parameters":[],"src":"11389:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":52970,"nodeType":"FunctionDefinition","src":"11657:133:58","nodes":[],"body":{"id":52969,"nodeType":"Block","src":"11720:70:58","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":52964,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52959,"src":"11746:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52963,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52621,"src":"11738:7:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":52965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11738:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":52966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11756:26:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":52962,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11730:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":52967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11730:53:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52968,"nodeType":"ExpressionStatement","src":"11730:53:58"}]},"documentation":{"id":52957,"nodeType":"StructuredDocumentation","src":"11579:73:58","text":" @dev Reverts if the `tokenId` has not been minted yet."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"11666:14:58","parameters":{"id":52960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52959,"mutability":"mutable","name":"tokenId","nameLocation":"11689:7:58","nodeType":"VariableDeclaration","scope":52970,"src":"11681:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52958,"name":"uint256","nodeType":"ElementaryTypeName","src":"11681:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11680:17:58"},"returnParameters":{"id":52961,"nodeType":"ParameterList","parameters":[],"src":"11720:0:58"},"scope":53055,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":53032,"nodeType":"FunctionDefinition","src":"12342:831:58","nodes":[],"body":{"id":53031,"nodeType":"Block","src":"12497:676:58","nodes":[],"statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":52984,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52975,"src":"12511:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":52985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":53603,"src":"12511:13:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":52986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12511:15:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":53029,"nodeType":"Block","src":"13131:36:58","statements":[{"expression":{"hexValue":"74727565","id":53027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13152:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":52983,"id":53028,"nodeType":"Return","src":"13145:11:58"}]},"id":53030,"nodeType":"IfStatement","src":"12507:660:58","trueBody":{"id":53026,"nodeType":"Block","src":"12528:597:58","statements":[{"clauses":[{"block":{"id":53006,"nodeType":"Block","src":"12642:91:58","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":53004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53000,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52998,"src":"12667:6:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":53001,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53189,"src":"12677:15:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$53189_$","typeString":"type(contract IERC721Receiver)"}},"id":53002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":53188,"src":"12677:32:58","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":53003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"12677:41:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"12667:51:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":52983,"id":53005,"nodeType":"Return","src":"12660:58:58"}]},"errorName":"","id":53007,"nodeType":"TryCatchClause","parameters":{"id":52999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52998,"mutability":"mutable","name":"retval","nameLocation":"12634:6:58","nodeType":"VariableDeclaration","scope":53007,"src":"12627:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":52997,"name":"bytes4","nodeType":"ElementaryTypeName","src":"12627:6:58","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"12626:15:58"},"src":"12618:115:58"},{"block":{"id":53023,"nodeType":"Block","src":"12762:353:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":53014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":53011,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53009,"src":"12784:6:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":53012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12784:13:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":53013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12801:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12784:18:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":53021,"nodeType":"Block","src":"12911:190:58","statements":[{"AST":{"nodeType":"YulBlock","src":"12997:86:58","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13034:2:58","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"13038:6:58"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13030:3:58"},"nodeType":"YulFunctionCall","src":"13030:15:58"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"13053:6:58"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13047:5:58"},"nodeType":"YulFunctionCall","src":"13047:13:58"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13023:6:58"},"nodeType":"YulFunctionCall","src":"13023:38:58"},"nodeType":"YulExpressionStatement","src":"13023:38:58"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":53009,"isOffset":false,"isSlot":false,"src":"13038:6:58","valueSize":1},{"declaration":53009,"isOffset":false,"isSlot":false,"src":"13053:6:58","valueSize":1}],"id":53020,"nodeType":"InlineAssembly","src":"12988:95:58"}]},"id":53022,"nodeType":"IfStatement","src":"12780:321:58","trueBody":{"id":53019,"nodeType":"Block","src":"12804:101:58","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":53016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12833:52:58","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":53015,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"12826:6:58","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":53017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12826:60:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53018,"nodeType":"ExpressionStatement","src":"12826:60:58"}]}}]},"errorName":"","id":53024,"nodeType":"TryCatchClause","parameters":{"id":53010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53009,"mutability":"mutable","name":"reason","nameLocation":"12754:6:58","nodeType":"VariableDeclaration","scope":53024,"src":"12741:19:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":53008,"name":"bytes","nodeType":"ElementaryTypeName","src":"12741:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12740:21:58"},"src":"12734:381:58"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":52991,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53892,"src":"12583:10:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":52992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12583:12:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52993,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52973,"src":"12597:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52994,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52977,"src":"12603:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":52995,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52979,"src":"12612:4:58","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":52988,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52975,"src":"12562:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52987,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53189,"src":"12546:15:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$53189_$","typeString":"type(contract IERC721Receiver)"}},"id":52989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12546:19:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$53189","typeString":"contract IERC721Receiver"}},"id":52990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":53188,"src":"12546:36:58","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":52996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12546:71:58","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":53025,"nodeType":"TryStatement","src":"12542:573:58"}]}}]},"documentation":{"id":52971,"nodeType":"StructuredDocumentation","src":"11796:541:58","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"},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"12351:22:58","parameters":{"id":52980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52973,"mutability":"mutable","name":"from","nameLocation":"12391:4:58","nodeType":"VariableDeclaration","scope":53032,"src":"12383:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52972,"name":"address","nodeType":"ElementaryTypeName","src":"12383:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52975,"mutability":"mutable","name":"to","nameLocation":"12413:2:58","nodeType":"VariableDeclaration","scope":53032,"src":"12405:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52974,"name":"address","nodeType":"ElementaryTypeName","src":"12405:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52977,"mutability":"mutable","name":"tokenId","nameLocation":"12433:7:58","nodeType":"VariableDeclaration","scope":53032,"src":"12425:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52976,"name":"uint256","nodeType":"ElementaryTypeName","src":"12425:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52979,"mutability":"mutable","name":"data","nameLocation":"12463:4:58","nodeType":"VariableDeclaration","scope":53032,"src":"12450:17:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":52978,"name":"bytes","nodeType":"ElementaryTypeName","src":"12450:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12373:100:58"},"returnParameters":{"id":52983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53032,"src":"12491:4:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52981,"name":"bool","nodeType":"ElementaryTypeName","src":"12491:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12490:6:58"},"scope":53055,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":53043,"nodeType":"FunctionDefinition","src":"13729:122:58","nodes":[],"body":{"id":53042,"nodeType":"Block","src":"13849:2:58","nodes":[],"statements":[]},"documentation":{"id":53033,"nodeType":"StructuredDocumentation","src":"13179:545:58","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]."},"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"13738:20:58","parameters":{"id":53040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53035,"mutability":"mutable","name":"from","nameLocation":"13776:4:58","nodeType":"VariableDeclaration","scope":53043,"src":"13768:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53034,"name":"address","nodeType":"ElementaryTypeName","src":"13768:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53037,"mutability":"mutable","name":"to","nameLocation":"13798:2:58","nodeType":"VariableDeclaration","scope":53043,"src":"13790:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53036,"name":"address","nodeType":"ElementaryTypeName","src":"13790:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53039,"mutability":"mutable","name":"tokenId","nameLocation":"13818:7:58","nodeType":"VariableDeclaration","scope":53043,"src":"13810:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53038,"name":"uint256","nodeType":"ElementaryTypeName","src":"13810:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13758:73:58"},"returnParameters":{"id":53041,"nodeType":"ParameterList","parameters":[],"src":"13849:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":53054,"nodeType":"FunctionDefinition","src":"14223:121:58","nodes":[],"body":{"id":53053,"nodeType":"Block","src":"14342:2:58","nodes":[],"statements":[]},"documentation":{"id":53044,"nodeType":"StructuredDocumentation","src":"13857:361:58","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\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]."},"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"14232:19:58","parameters":{"id":53051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53046,"mutability":"mutable","name":"from","nameLocation":"14269:4:58","nodeType":"VariableDeclaration","scope":53054,"src":"14261:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53045,"name":"address","nodeType":"ElementaryTypeName","src":"14261:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53048,"mutability":"mutable","name":"to","nameLocation":"14291:2:58","nodeType":"VariableDeclaration","scope":53054,"src":"14283:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53047,"name":"address","nodeType":"ElementaryTypeName","src":"14283:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53050,"mutability":"mutable","name":"tokenId","nameLocation":"14311:7:58","nodeType":"VariableDeclaration","scope":53054,"src":"14303:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53049,"name":"uint256","nodeType":"ElementaryTypeName","src":"14303:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14251:73:58"},"returnParameters":{"id":53052,"nodeType":"ParameterList","parameters":[],"src":"14342:0:58"},"scope":53055,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":52199,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":53902,"src":"647:7:58"},"id":52200,"nodeType":"InheritanceSpecifier","src":"647:7:58"},{"baseName":{"id":52201,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":54851,"src":"656:6:58"},"id":52202,"nodeType":"InheritanceSpecifier","src":"656:6:58"},{"baseName":{"id":52203,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":53171,"src":"664:7:58"},"id":52204,"nodeType":"InheritanceSpecifier","src":"664:7:58"},{"baseName":{"id":52205,"name":"IERC721Metadata","nodeType":"IdentifierPath","referencedDeclaration":53585,"src":"673:15:58"},"id":52206,"nodeType":"InheritanceSpecifier","src":"673:15:58"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":52198,"nodeType":"StructuredDocumentation","src":"381:246:58","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,"linearizedBaseContracts":[53055,53585,53171,54851,55057,53902],"name":"ERC721","nameLocation":"637:6:58","scope":53056,"usedErrors":[]}],"license":"MIT"},"id":58}