[ { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "base", "type": "address" }, { "internalType": "uint256", "name": "deadlineIn", "type": "uint256" }, { "internalType": "address", "name": "moe", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "EXA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GIGA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "KILO", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MEGA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PETA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TERA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "YOTTA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ZETTA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "level", "type": "uint256" } ], "name": "denominationOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "anno", "type": "uint256" }, { "internalType": "uint256", "name": "level", "type": "uint256" } ], "name": "idBy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "anno", "type": "uint256" }, { "internalType": "uint256[]", "name": "levels", "type": "uint256[]" } ], "name": "idsBy", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "levelOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "migrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "migrateBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "level", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "levels", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "seal", "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": "string", "name": "newuri", "type": "string" } ], "name": "setURI", "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": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "year", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "yearOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" } ]
60806040526007805460ff191660011790553480156200001e57600080fd5b5060405162002f4238038062002f42833981016040819052620000419162000201565b838383838383838181846200005681620000bd565b506200006233620000d6565b6200006e81426200030e565b60065550600580546001600160a01b0319166001600160a01b0392831617905560078054610100600160a81b031916610100969092169590950217909355506200037298505050505050505050565b8051620000d290600290602084019062000128565b5050565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001369062000335565b90600052602060002090601f0160209004810192826200015a5760008555620001a5565b82601f106200017557805160ff1916838001178555620001a5565b82800160010185558215620001a5579182015b82811115620001a557825182559160200191906001019062000188565b50620001b3929150620001b7565b5090565b5b80821115620001b35760008155600101620001b8565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620001fc57600080fd5b919050565b600080600080608085870312156200021857600080fd5b84516001600160401b03808211156200023057600080fd5b818701915087601f8301126200024557600080fd5b8151818111156200025a576200025a620001ce565b604051601f8201601f19908116603f01168101908382118183101715620002855762000285620001ce565b81604052828152602093508a84848701011115620002a257600080fd5b600091505b82821015620002c65784820184015181830185015290830190620002a7565b82821115620002d85760008484830101525b9750620002ea915050878201620001e4565b94505050604085015191506200030360608601620001e4565b905092959194509250565b600082198211156200033057634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200034a57607f821691505b602082108114156200036c57634e487b7160e01b600052602260045260246000fd5b50919050565b612bc080620003826000396000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c80636d5e303211610125578063cb431e76116100ad578063e985e9c51161007c578063e985e9c514610457578063f242432a14610493578063f2fde38b146104a6578063f3269716146104b9578063f5298aca146104c157600080fd5b8063cb431e761461042c578063d5e5e06214610434578063d81d0a151461043c578063df435be81461044f57600080fd5b80639d8e2177116100f45780639d8e2177146103d6578063a22cb465146103de578063bd85b039146103f1578063c446d55014610411578063c7b8b19d1461041957600080fd5b80636d5e303214610398578063715018a6146103ab57806389c3cbae146103b35780638da5cb5b146103bb57600080fd5b80633e54bacb116101a857806355095bd21161017757806355095bd21461034f5780635925e211146103625780636252e4e71461036a5780636b20c4541461037d5780636c749c261461039057600080fd5b80633e54bacb146102f25780633fb27b85146103055780634e1273f41461030d5780634f558e791461032d57600080fd5b8063156e29f6116101ef578063156e29f61461029e57806329cd827d146102b15780632eb2c2d6146102c45780632ffa2d76146102d7578063361ce97e146102ea57600080fd5b8062fdd58e1461022057806301ffc9a71461024657806302fe5305146102695780630e89341c1461027e575b600080fd5b61023361022e366004611e37565b6104d4565b6040519081526020015b60405180910390f35b610259610254366004611e77565b61056e565b604051901515815260200161023d565b61027c610277366004611f33565b6105be565b005b61029161028c366004611f83565b6105f4565b60405161023d9190611fe9565b61027c6102ac366004611ffc565b610688565b6102336102bf366004611f83565b61075c565b61027c6102d23660046120e3565b6107b1565b61027c6102e536600461218c565b610848565b610233600381565b61027c6103003660046121ef565b6109b1565b61027c610ae2565b61032061031b366004612211565b610b18565b60405161023d91906122ff565b61025961033b366004611f83565b600090815260036020526040902054151590565b61023361035d366004611f83565b610c41565b610233601581565b6102336103783660046121ef565b610c72565b61027c61038b366004612312565b610cfa565b610233601281565b6102336103a6366004611f83565b610d3d565b61027c610d95565b610233600c81565b6004546040516001600160a01b03909116815260200161023d565b610233600081565b61027c6103ec366004612385565b610dcb565b6102336103ff366004611f83565b60009081526003602052604090205490565b610233600981565b6103206104273660046123c1565b610dda565b610233600681565b610233601881565b61027c61044a366004612312565b610e81565b610233600f81565b6102596104653660046123fd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61027c6104a1366004612430565b610fb0565b61027c6104b4366004612494565b610ff5565b61023361108d565b61027c6104cf366004611ffc565b6110de565b60006001600160a01b0383166105455760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061059f57506001600160e01b031982166303a24d0760e21b145b8061056857506301ffc9a760e01b6001600160e01b0319831614610568565b6004546001600160a01b031633146105e85760405162461bcd60e51b815260040161053c906124af565b6105f181611121565b50565b606060028054610603906124e4565b80601f016020809104026020016040519081016040528092919081815260200182805461062f906124e4565b801561067c5780601f106106515761010080835404028352916020019161067c565b820191906000526020600020905b81548152906001019060200180831161065f57829003601f168201915b50505050509050919050565b60006106938361075c565b61069d9083612535565b9050600081116106bf5760405162461bcd60e51b815260040161053c90612554565b60075460405163079cc67960e41b81526001600160a01b03868116600483015260248201849052610100909204909116906379cc679090604401600060405180830381600087803b15801561071357600080fd5b505af1158015610727573d6000803e3d6000fd5b505050506107568461074061073a61108d565b86610c72565b8460405180602001604052806000815250611134565b50505050565b6000610769600383612597565b156107865760405162461bcd60e51b815260040161053c906125ab565b606482106107a65760405162461bcd60e51b815260040161053c906125d6565b61056882600a6126e1565b6001600160a01b0385163314806107cd57506107cd8533610465565b6108345760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161053c565b610841858585858561120a565b5050505050565b60075460ff1661088d5760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b604482015260640161053c565b60065442908111156108d35760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b604482015260640161053c565b600554604051631ac8311560e21b81526001600160a01b0390911690636b20c45490610907903390879087906004016126ed565b600060405180830381600087803b15801561092157600080fd5b505af1158015610935573d6000803e3d6000fd5b5050505060005b82518110156109905760008382815181106109595761095961272d565b60200260200101511161097e5760405162461bcd60e51b815260040161053c90612554565b8061098881612743565b91505061093c565b506109ac338484604051806020016040528060008152506113b4565b505050565b60075460ff166109f65760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b604482015260640161053c565b6006544290811115610a3c5760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b604482015260640161053c565b600554604051637a94c56560e11b815233600482015260248101859052604481018490526001600160a01b039091169063f5298aca90606401600060405180830381600087803b158015610a8f57600080fd5b505af1158015610aa3573d6000803e3d6000fd5b5050505060008211610ac75760405162461bcd60e51b815260040161053c90612554565b6109ac33848460405180602001604052806000815250611134565b6004546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161053c906124af565b6007805460ff19169055565b60608151835114610b7d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161053c565b600083516001600160401b03811115610b9857610b98611e94565b604051908082528060200260200182016040528015610bc1578160200160208202803683370190505b50905060005b8451811015610c3957610c0c858281518110610be557610be561272d565b6020026020010151858381518110610bff57610bff61272d565b60200260200101516104d4565b828281518110610c1e57610c1e61272d565b6020908102919091010152610c3281612743565b9050610bc7565b509392505050565b600080610c4f60648461275e565b90506107b281116105685760405162461bcd60e51b815260040161053c90612772565b6000610c7f600383612597565b15610c9c5760405162461bcd60e51b815260040161053c906125ab565b60648210610cbc5760405162461bcd60e51b815260040161053c906125d6565b6107b28311610cdd5760405162461bcd60e51b815260040161053c90612772565b81610ce9846064612535565b610cf39190612798565b9392505050565b6001600160a01b038316331480610d165750610d168333610465565b610d325760405162461bcd60e51b815260040161053c906127b0565b6109ac83838361150e565b600080610d4b606484612597565b9050610d58600382612597565b15610d755760405162461bcd60e51b815260040161053c906125ab565b606481106105685760405162461bcd60e51b815260040161053c906125d6565b6004546001600160a01b03163314610dbf5760405162461bcd60e51b815260040161053c906124af565b610dc9600061169c565b565b610dd63383836116ee565b5050565b6060600082516001600160401b03811115610df757610df7611e94565b604051908082528060200260200182016040528015610e20578160200160208202803683370190505b50905060005b8351811015610c3957610e5285858381518110610e4557610e4561272d565b6020026020010151610c72565b828281518110610e6457610e6461272d565b602090810291909101015280610e7981612743565b915050610e26565b6000805b8351811015610f18576000610eb2858381518110610ea557610ea561272d565b602002602001015161075c565b848381518110610ec457610ec461272d565b6020026020010151610ed69190612535565b905060008111610ef85760405162461bcd60e51b815260040161053c90612554565b610f028184612798565b9250508080610f1090612743565b915050610e85565b5060075460405163079cc67960e41b81526001600160a01b03868116600483015260248201849052610100909204909116906379cc679090604401600060405180830381600087803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b5050505061075684610f9a610f9461108d565b86610dda565b84604051806020016040528060008152506113b4565b6001600160a01b038516331480610fcc5750610fcc8533610465565b610fe85760405162461bcd60e51b815260040161053c906127b0565b61084185858585856117cf565b6004546001600160a01b0316331461101f5760405162461bcd60e51b815260040161053c906124af565b6001600160a01b0381166110845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161053c565b6105f18161169c565b60008063bc1913806110a0426064612535565b6110aa919061275e565b6110b6906107b2612798565b90506107b281116110d95760405162461bcd60e51b815260040161053c90612772565b919050565b6001600160a01b0383163314806110fa57506110fa8333610465565b6111165760405162461bcd60e51b815260040161053c906127b0565b6109ac8383836118ec565b8051610dd6906002906020840190611d87565b6001600160a01b03841661115a5760405162461bcd60e51b815260040161053c906127f9565b3361117a8160008761116b886119ed565b611174886119ed565b87611a38565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906111aa908490612798565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461084181600087878787611a46565b815183511461122b5760405162461bcd60e51b815260040161053c9061283a565b6001600160a01b0384166112515760405162461bcd60e51b815260040161053c90612882565b33611260818787878787611a38565b60005b84518110156113465760008582815181106112805761128061272d565b60200260200101519050600085838151811061129e5761129e61272d565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156112ee5760405162461bcd60e51b815260040161053c906128c7565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061132b908490612798565b925050819055505050508061133f90612743565b9050611263565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611396929190612911565b60405180910390a46113ac818787878787611bb1565b505050505050565b6001600160a01b0384166113da5760405162461bcd60e51b815260040161053c906127f9565b81518351146113fb5760405162461bcd60e51b815260040161053c9061283a565b3361140b81600087878787611a38565b60005b84518110156114a6578381815181106114295761142961272d565b60200260200101516000808784815181106114465761144661272d565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b03168152602001908152602001600020600082825461148e9190612798565b9091555081905061149e81612743565b91505061140e565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516114f7929190612911565b60405180910390a461084181600087878787611bb1565b6001600160a01b0383166115345760405162461bcd60e51b815260040161053c9061293f565b80518251146115555760405162461bcd60e51b815260040161053c9061283a565b600033905061157881856000868660405180602001604052806000815250611a38565b60005b835181101561163d5760008482815181106115985761159861272d565b6020026020010151905060008483815181106115b6576115b661272d565b602090810291909101810151600084815280835260408082206001600160a01b038c1683529093529190912054909150818110156116065760405162461bcd60e51b815260040161053c90612982565b6000928352602083815260408085206001600160a01b038b168652909152909220910390558061163581612743565b91505061157b565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161168e929190612911565b60405180910390a450505050565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156117625760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161053c565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166117f55760405162461bcd60e51b815260040161053c90612882565b3361180581878761116b886119ed565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156118465760405162461bcd60e51b815260040161053c906128c7565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290611883908490612798565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46118e3828888888888611a46565b50505050505050565b6001600160a01b0383166119125760405162461bcd60e51b815260040161053c9061293f565b3361194181856000611923876119ed565b61192c876119ed565b60405180602001604052806000815250611a38565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156119825760405162461bcd60e51b815260040161053c90612982565b6000848152602081815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a2757611a2761272d565b602090810291909101015292915050565b6113ac868686868686611c7b565b6001600160a01b0384163b156113ac5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a8a90899089908890889088906004016129c6565b602060405180830381600087803b158015611aa457600080fd5b505af1925050508015611ad4575060408051601f3d908101601f19168201909252611ad191810190612a0b565b60015b611b8157611ae0612a28565b806308c379a01415611b1a5750611af5612a44565b80611b005750611b1c565b8060405162461bcd60e51b815260040161053c9190611fe9565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161053c565b6001600160e01b0319811663f23a6e6160e01b146118e35760405162461bcd60e51b815260040161053c90612acd565b6001600160a01b0384163b156113ac5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611bf59089908990889088908890600401612b15565b602060405180830381600087803b158015611c0f57600080fd5b505af1925050508015611c3f575060408051601f3d908101601f19168201909252611c3c91810190612a0b565b60015b611c4b57611ae0612a28565b6001600160e01b0319811663bc197c8160e01b146118e35760405162461bcd60e51b815260040161053c90612acd565b6001600160a01b038516611d025760005b8351811015611d0057828181518110611ca757611ca761272d565b602002602001015160036000868481518110611cc557611cc561272d565b602002602001015181526020019081526020016000206000828254611cea9190612798565b90915550611cf9905081612743565b9050611c8c565b505b6001600160a01b0384166113ac5760005b83518110156118e357828181518110611d2e57611d2e61272d565b602002602001015160036000868481518110611d4c57611d4c61272d565b602002602001015181526020019081526020016000206000828254611d719190612b73565b90915550611d80905081612743565b9050611d13565b828054611d93906124e4565b90600052602060002090601f016020900481019282611db55760008555611dfb565b82601f10611dce57805160ff1916838001178555611dfb565b82800160010185558215611dfb579182015b82811115611dfb578251825591602001919060010190611de0565b50611e07929150611e0b565b5090565b5b80821115611e075760008155600101611e0c565b80356001600160a01b03811681146110d957600080fd5b60008060408385031215611e4a57600080fd5b611e5383611e20565b946020939093013593505050565b6001600160e01b0319811681146105f157600080fd5b600060208284031215611e8957600080fd5b8135610cf381611e61565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611ecf57611ecf611e94565b6040525050565b60006001600160401b03831115611eef57611eef611e94565b604051611f06601f8501601f191660200182611eaa565b809150838152848484011115611f1b57600080fd5b83836020830137600060208583010152509392505050565b600060208284031215611f4557600080fd5b81356001600160401b03811115611f5b57600080fd5b8201601f81018413611f6c57600080fd5b611f7b84823560208401611ed6565b949350505050565b600060208284031215611f9557600080fd5b5035919050565b6000815180845260005b81811015611fc257602081850181015186830182015201611fa6565b81811115611fd4576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610cf36020830184611f9c565b60008060006060848603121561201157600080fd5b61201a84611e20565b95602085013595506040909401359392505050565b60006001600160401b0382111561204857612048611e94565b5060051b60200190565b600082601f83011261206357600080fd5b813560206120708261202f565b60405161207d8282611eaa565b83815260059390931b850182019282810191508684111561209d57600080fd5b8286015b848110156120b857803583529183019183016120a1565b509695505050505050565b600082601f8301126120d457600080fd5b610cf383833560208501611ed6565b600080600080600060a086880312156120fb57600080fd5b61210486611e20565b945061211260208701611e20565b935060408601356001600160401b038082111561212e57600080fd5b61213a89838a01612052565b9450606088013591508082111561215057600080fd5b61215c89838a01612052565b9350608088013591508082111561217257600080fd5b5061217f888289016120c3565b9150509295509295909350565b6000806040838503121561219f57600080fd5b82356001600160401b03808211156121b657600080fd5b6121c286838701612052565b935060208501359150808211156121d857600080fd5b506121e585828601612052565b9150509250929050565b6000806040838503121561220257600080fd5b50508035926020909101359150565b6000806040838503121561222457600080fd5b82356001600160401b038082111561223b57600080fd5b818501915085601f83011261224f57600080fd5b8135602061225c8261202f565b6040516122698282611eaa565b83815260059390931b850182019282810191508984111561228957600080fd5b948201945b838610156122ae5761229f86611e20565b8252948201949082019061228e565b965050860135925050808211156121d857600080fd5b600081518084526020808501945080840160005b838110156122f4578151875295820195908201906001016122d8565b509495945050505050565b602081526000610cf360208301846122c4565b60008060006060848603121561232757600080fd5b61233084611e20565b925060208401356001600160401b038082111561234c57600080fd5b61235887838801612052565b9350604086013591508082111561236e57600080fd5b5061237b86828701612052565b9150509250925092565b6000806040838503121561239857600080fd5b6123a183611e20565b9150602083013580151581146123b657600080fd5b809150509250929050565b600080604083850312156123d457600080fd5b8235915060208301356001600160401b038111156123f157600080fd5b6121e585828601612052565b6000806040838503121561241057600080fd5b61241983611e20565b915061242760208401611e20565b90509250929050565b600080600080600060a0868803121561244857600080fd5b61245186611e20565b945061245f60208701611e20565b9350604086013592506060860135915060808601356001600160401b0381111561248857600080fd5b61217f888289016120c3565b6000602082840312156124a657600080fd5b610cf382611e20565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806124f857607f821691505b6020821081141561251957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561254f5761254f61251f565b500290565b6020808252601390820152721b9bdb8b5c1bdcda5d1a5d9948185b5bdd5b9d606a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826125a6576125a6612581565b500690565b6020808252601190820152701b9bdb8b5d195c9b985c9e481b195d995b607a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a59081b195d995b609a1b604082015260600190565b600181815b8085111561263857816000190482111561261e5761261e61251f565b8085161561262b57918102915b93841c9390800290612602565b509250929050565b60008261264f57506001610568565b8161265c57506000610568565b8160018114612672576002811461267c57612698565b6001915050610568565b60ff84111561268d5761268d61251f565b50506001821b610568565b5060208310610133831016604e8410600b84101617156126bb575081810a610568565b6126c583836125fd565b80600019048211156126d9576126d961251f565b029392505050565b6000610cf38383612640565b6001600160a01b0384168152606060208201819052600090612711908301856122c4565b828103604084015261272381856122c4565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156127575761275761251f565b5060010190565b60008261276d5761276d612581565b500490565b6020808252600c908201526b34b73b30b634b2103cb2b0b960a11b604082015260600190565b600082198211156127ab576127ab61251f565b500190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60408152600061292460408301856122c4565b828103602084015261293681856122c4565b95945050505050565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612a0090830184611f9c565b979650505050505050565b600060208284031215612a1d57600080fd5b8151610cf381611e61565b600060033d1115612a415760046000803e5060005160e01c5b90565b600060443d1015612a525790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715612a8157505050505090565b8285019150815181811115612a995750505050505090565b843d8701016020828501011115612ab35750505050505090565b612ac260208286010187611eaa565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090612b41908301866122c4565b8281036060840152612b5381866122c4565b90508281036080840152612b678185611f9c565b98975050505050505050565b600082821015612b8557612b8561251f565b50039056fea2646970667358221220b3a5baaa8a01cc919221c3167d46acad4b60f12faeacd0d52498e6cc082168a064736f6c634300080900330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000a4b204720b49c2f60e837435ed6eca97c6bd65520000000000000000000000000000000000000000000000000000000007861f80000000000000000000000000a18cd7e596aaa98a697d0511ed87dd19ac981afb000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f7777772e78706f7765726d696e652e636f6d2f6e6674732f6f64696e2f7b69647d2e6a736f6e000000000000000000000000000000000000