[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct MeowMeme.Batch[]", "name": "batches", "type": "tuple[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516126526100f95f395f818161102701528181611050015261126c01526126525ff3fe608060405260043610610183575f3560e01c8063715018a6116100d1578063a9059cbb1161007c578063d505accf11610057578063d505accf14610460578063dd62ed3e1461047f578063f2fde38b146104ef575f80fd5b8063a9059cbb146103da578063ad3cb1cc146103f9578063b81d5e3f14610441575f80fd5b806384b0196e116100ac57806384b0196e1461034c5780638da5cb5b1461037357806395d89b41146103c6575f80fd5b8063715018a6146103055780637ecebe00146103195780638129fc1c14610338575f80fd5b80633644e515116101315780634f1ef2861161010c5780634f1ef286146102bf57806352d1902d146102d257806370a08231146102e6575f80fd5b80633644e5151461027657806340c10f191461028a5780634f02c420146102ab575f80fd5b806323b872dd1161016157806323b872dd1461021d578063313ce5671461023c57806332cb6b0c14610257575f80fd5b806306fdde0314610187578063095ea7b3146101b157806318160ddd146101e0575b5f80fd5b348015610192575f80fd5b5061019b61050e565b6040516101a89190612024565b60405180910390f35b3480156101bc575f80fd5b506101d06101cb36600461205e565b6105c6565b60405190151581526020016101a8565b3480156101eb575f80fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b6040519081526020016101a8565b348015610228575f80fd5b506101d0610237366004612086565b6105df565b348015610247575f80fd5b50604051601281526020016101a8565b348015610262575f80fd5b5061020f6b204fce5e3e2502611000000081565b348015610281575f80fd5b5061020f610604565b348015610295575f80fd5b506102a96102a436600461205e565b610612565b005b3480156102b6575f80fd5b5061020f5f5481565b6102a96102cd3660046120ec565b610733565b3480156102dd575f80fd5b5061020f610752565b3480156102f1575f80fd5b5061020f6103003660046121c6565b610780565b348015610310575f80fd5b506102a96107d0565b348015610324575f80fd5b5061020f6103333660046121c6565b6107e3565b348015610343575f80fd5b506102a96107ed565b348015610357575f80fd5b50610360610a24565b6040516101a897969594939291906121df565b34801561037e575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a8565b3480156103d1575f80fd5b5061019b610b1e565b3480156103e5575f80fd5b506101d06103f436600461205e565b610b6f565b348015610404575f80fd5b5061019b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044c575f80fd5b506102a961045b36600461229f565b610b7c565b34801561046b575f80fd5b506102a961047a36600461230e565b610bdf565b34801561048a575f80fd5b5061020f61049936600461237b565b73ffffffffffffffffffffffffffffffffffffffff9182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b3480156104fa575f80fd5b506102a96105093660046121c6565b610da7565b60605f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace005b9050806003018054610544906123ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610570906123ac565b80156105bb5780601f10610592576101008083540402835291602001916105bb565b820191905f5260205f20905b81548152906001019060200180831161059e57829003601f168201915b505050505091505090565b5f336105d3818585610e0a565b60019150505b92915050565b5f336105ec858285610e17565b6105f7858585610f03565b60019150505b9392505050565b5f61060d610fac565b905090565b73e127486f97217e0bbfe6c679dd2908fefe5f8ce83314610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74204175746865640000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6b204fce5e3e25026110000000815f546106ae91906123fd565b1115610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f457863656564204d617820537570706c79000000000000000000000000000000604482015260640161068b565b6107208282610fb5565b805f5461072d91906123fd565b5f555050565b61073b61100f565b61074482611113565b61074e828261111b565b5050565b5f61075b611254565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b5f807f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace005b73ffffffffffffffffffffffffffffffffffffffff9093165f9081526020939093525050604090205490565b6107d86112c3565b6107e15f611351565b565b5f6105d9826113e6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156108375750825b90505f8267ffffffffffffffff1660011480156108535750303b155b905081158015610861575080155b15610898576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156108f95784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61096d6040518060400160405280600881526020017f4d656f774d656d650000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d454f570000000000000000000000000000000000000000000000000000000081525061140e565b61097633611420565b6109b46040518060400160405280600881526020017f4d656f774d656d65000000000000000000000000000000000000000000000000815250611431565b6109bc611478565b8315610a1d5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f60608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008054909150158015610a6257506001810154155b610ac8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161068b565b610ad0611480565b610ad86114d1565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610544906123ac565b5f336105d3818585610f03565b5f5b81811015610bda57610bd2838383818110610b9b57610b9b612435565b610bb192602060409092020190810191506121c6565b848484818110610bc357610bc3612435565b90506040020160200135610612565b600101610b7e565b505050565b83421115610c1c576040517f627913020000000000000000000000000000000000000000000000000000000081526004810185905260240161068b565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c938c73ffffffffffffffffffffffffffffffffffffffff165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610cfa826114fa565b90505f610d0982878787611541565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d90576040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528b16602482015260440161068b565b610d9b8a8a8a610e0a565b50505050505050505050565b610daf6112c3565b73ffffffffffffffffffffffffffffffffffffffff8116610dfe576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f600482015260240161068b565b610e0781611351565b50565b610bda838383600161156d565b73ffffffffffffffffffffffffffffffffffffffff8381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610efd5781811015610eef576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018290526044810183905260640161068b565b610efd84848484035f61156d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f52576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161068b565b73ffffffffffffffffffffffffffffffffffffffff8216610fa1576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161068b565b610bda8383836116d6565b5f61060d6118a3565b73ffffffffffffffffffffffffffffffffffffffff8216611004576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161068b565b61074e5f83836116d6565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806110dc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110c37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b156107e1576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e076112c3565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156111a0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261119d91810190612462565b60015b6111ee576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260240161068b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461124a576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161068b565b610bda8383611916565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107e1576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336113027f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146107e1576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161068b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006107a4565b611416611978565b61074e82826119df565b611428611978565b610e0781611a42565b611439611978565b610e07816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250611a4a565b6107e1611978565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610544906123ac565b60605f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100610533565b5f6105d9611506610fac565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f805f8061155188888888611abc565b9250925092506115618282611baf565b50909695505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff85166115dd576040517fe602df050000000000000000000000000000000000000000000000000000000081525f600482015260240161068b565b73ffffffffffffffffffffffffffffffffffffffff841661162c576040517f94280d620000000000000000000000000000000000000000000000000000000081525f600482015260240161068b565b73ffffffffffffffffffffffffffffffffffffffff8086165f90815260018301602090815260408083209388168352929052208390558115610a1d578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516116c791815260200190565b60405180910390a35050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff84166117305781816002015f82825461172591906123fd565b909155506117e09050565b73ffffffffffffffffffffffffffffffffffffffff84165f90815260208290526040902054828110156117b5576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481018290526044810184905260640161068b565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526020839052604090209083900390555b73ffffffffffffffffffffffffffffffffffffffff831661180b576002810180548390039055611836565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020829052604090208054830190555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161189591815260200190565b60405180910390a350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6118cd611cb2565b6118d5611d2d565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b61191f82611d82565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561197057610bda8282611e50565b61074e611ecf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166107e1576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119e7611978565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611a3384826124bd565b5060048101610efd83826124bd565b610daf611978565b611a52611978565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611a9e84826124bd565b5060038101611aad83826124bd565b505f8082556001909101555050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611af557505f91506003905082611ba5565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b46573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b9c57505f925060019150829050611ba5565b92505f91508190505b9450945094915050565b5f826003811115611bc257611bc26125d9565b03611bcb575050565b6001826003811115611bdf57611bdf6125d9565b03611c16576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611c2a57611c2a6125d9565b03611c64576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161068b565b6003826003811115611c7857611c786125d9565b0361074e576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161068b565b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081611cdd611480565b805190915015611cf557805160209091012092915050565b81548015611d04579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081611d586114d1565b805190915015611d7057805160209091012092915050565b60018201548015611d04579392505050565b8073ffffffffffffffffffffffffffffffffffffffff163b5f03611dea576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161068b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff1684604051611e799190612606565b5f60405180830381855af49150503d805f8114611eb1576040519150601f19603f3d011682016040523d82523d5f602084013e611eb6565b606091505b5091509150611ec6858383611f07565b95945050505050565b34156107e1576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611f1c57611f1782611f96565b6105fd565b8151158015611f40575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611f8f576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161068b565b50806105fd565b805115611fa65780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105fd6020830184611fd8565b803573ffffffffffffffffffffffffffffffffffffffff81168114612059575f80fd5b919050565b5f806040838503121561206f575f80fd5b61207883612036565b946020939093013593505050565b5f805f60608486031215612098575f80fd5b6120a184612036565b92506120af60208501612036565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156120fd575f80fd5b61210683612036565b9150602083013567ffffffffffffffff80821115612122575f80fd5b818501915085601f830112612135575f80fd5b813581811115612147576121476120bf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561218d5761218d6120bf565b816040528281528860208487010111156121a5575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b5f602082840312156121d6575f80fd5b6105fd82612036565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261221b60e084018a611fd8565b838103604085015261222d818a611fd8565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b8181101561228d57835183529284019291840191600101612271565b50909c9b505050505050505050505050565b5f80602083850312156122b0575f80fd5b823567ffffffffffffffff808211156122c7575f80fd5b818501915085601f8301126122da575f80fd5b8135818111156122e8575f80fd5b8660208260061b85010111156122fc575f80fd5b60209290920196919550909350505050565b5f805f805f805f60e0888a031215612324575f80fd5b61232d88612036565b965061233b60208901612036565b95506040880135945060608801359350608088013560ff8116811461235e575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561238c575f80fd5b61239583612036565b91506123a360208401612036565b90509250929050565b600181811c908216806123c057607f821691505b6020821081036123f7577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b808201808211156105d9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612472575f80fd5b5051919050565b601f821115610bda57805f5260205f20601f840160051c8101602085101561249e5750805b601f840160051c820191505b81811015610a1d575f81556001016124aa565b815167ffffffffffffffff8111156124d7576124d76120bf565b6124eb816124e584546123ac565b84612479565b602080601f83116001811461253d575f84156125075750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556125d1565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156125895788860151825594840194600190910190840161256a565b50858210156125c557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f82518060208501845e5f92019182525091905056fea26469706673582212205b7f3f407b470d62fc3ba381d191dd054b2b7dc1756ecfe16390ac351dbd505864736f6c63430008190033