[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": [], "name": "FoodNotFound", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidFoodConfiguration", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": [ { "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" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "splatterRate", "type": "uint256" }, { "internalType": "uint256", "name": "falloutRate", "type": "uint256" } ], "name": "addFood", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "splatterRate", "type": "uint256" }, { "internalType": "uint256", "name": "falloutRate", "type": "uint256" } ], "name": "editFood", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "foodId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "fling", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "foods", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "splatterRate", "type": "uint256" }, { "internalType": "uint256", "name": "falloutRate", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllFoods", "outputs": [ { "components": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "splatterRate", "type": "uint256" }, { "internalType": "uint256", "name": "falloutRate", "type": "uint256" } ], "internalType": "struct FoodFight.Food[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSplatterZoneWallets", "outputs": [ { "components": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct FoodFight.SplatterZoneData[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "splatterZoneSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "splatterZoneTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "splatterZoneWallets", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "walletToSplats", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "walletToSplatterReceivedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60806040526014600955610e10600a55601261001c90600a610392565b61002d906603287092778e386103a7565b600b5534801561003b575f5ffd5b503360405180604001604052806009815260200168119bdbd9119a59da1d60ba1b815250604051806040016040528060048152602001631193d3d160e21b815250816003908161008b9190610456565b5060046100988282610456565b5050506001600160a01b0381166100c957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100d2816100ea565b506100e533600b5461013b60201b60201c565b610523565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166101645760405163ec442f0560e01b81525f60048201526024016100c0565b61016f5f8383610173565b5050565b6001600160a01b03831661019d578060025f8282546101929190610510565b9091555061020d9050565b6001600160a01b0383165f90815260208190526040902054818110156101ef5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661022957600280548290039055610247565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161028c91815260200190565b60405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102e8578085048111156102cc576102cc610299565b60018416156102da57908102905b60019390931c9280026102b1565b935093915050565b5f826102fe5750600161038c565b8161030a57505f61038c565b8160018114610320576002811461032a57610346565b600191505061038c565b60ff84111561033b5761033b610299565b50506001821b61038c565b5060208310610133831016604e8410600b8410161715610369575081810a61038c565b6103755f1984846102ad565b805f190482111561038857610388610299565b0290505b92915050565b5f6103a060ff8416836102f0565b9392505050565b808202811582820484141761038c5761038c610299565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806103e657607f821691505b60208210810361040457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561045157805f5260205f20601f840160051c8101602085101561042f5750805b601f840160051c820191505b8181101561044e575f815560010161043b565b50505b505050565b81516001600160401b0381111561046f5761046f6103be565b6104838161047d84546103d2565b8461040a565b6020601f8211600181146104b5575f831561049e5750848201515b5f19600385901b1c1916600184901b17845561044e565b5f84815260208120601f198516915b828110156104e457878501518255602094850194600190920191016104c4565b508482101561050157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561038c5761038c610299565b611de4806105305f395ff3fe608060405234801561000f575f5ffd5b506004361061016d575f3560e01c806372a62c22116100d9578063a9059cbb11610093578063cd66b5f71161006e578063cd66b5f71461035e578063dd62ed3e14610367578063f133b7591461039f578063f2fde38b146103a8575f5ffd5b8063a9059cbb14610323578063b773a9f814610336578063b9b5aae614610349575f5ffd5b806372a62c221461029557806379cc6790146102a8578063857b6f5e146102bb5780638da5cb5b146102e357806395d89b41146103085780639722c95e14610310575f5ffd5b806342966c681161012a57806342966c68146102095780634e73ca471461021e5780635d23046c1461023d578063687ff42a1461025257806370a0823114610265578063715018a61461028d575f5ffd5b806306fdde0314610171578063095ea7b31461018f57806314d3f10e146101b257806318160ddd146101d557806323b872dd146101e7578063313ce567146101fa575b5f5ffd5b6101796103bb565b6040516101869190611819565b60405180910390f35b6101a261019d36600461184d565b61044b565b6040519015158152602001610186565b6101c56101c0366004611875565b610464565b604051610186949392919061188c565b6002545b604051908152602001610186565b6101a26101f53660046118b7565b610524565b60405160128152602001610186565b61021c610217366004611875565b610547565b005b6101d961022c3660046118f1565b600c6020525f908152604090205481565b610245610554565b604051610186919061190a565b61021c610260366004611961565b61097a565b6101d96102733660046118f1565b6001600160a01b03165f9081526020819052604090205490565b61021c610d06565b61021c6102a3366004611a20565b610d19565b61021c6102b636600461184d565b610dfa565b6102ce6102c936600461184d565b610e13565b60408051928352602083019190915201610186565b6005546001600160a01b03165b6040516001600160a01b039091168152602001610186565b610179610e4b565b61021c61031e366004611a6a565b610e5a565b6101a261033136600461184d565b610f07565b6102f0610344366004611875565b610f14565b610351610f3c565b6040516101869190611abd565b6101d960095481565b6101d9610375366004611b4b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101d9600a5481565b61021c6103b63660046118f1565b611045565b6060600380546103ca90611b7c565b80601f01602080910402602001604051908101604052809291908181526020018280546103f690611b7c565b80156104415780601f1061041857610100808354040283529160200191610441565b820191905f5260205f20905b81548152906001019060200180831161042457829003601f168201915b5050505050905090565b5f33610458818585611084565b60019150505b92915050565b60068181548110610473575f80fd5b5f918252602090912060049091020180546001820180549193509061049790611b7c565b80601f01602080910402602001604051908101604052809291908181526020018280546104c390611b7c565b801561050e5780601f106104e55761010080835404028352916020019161050e565b820191905f5260205f20905b8154815290600101906020018083116104f157829003601f168201915b5050505050908060020154908060030154905084565b5f33610531858285611096565b61053c858585611111565b506001949350505050565b610551338261116e565b50565b6007546060905f9067ffffffffffffffff81111561057457610574611981565b6040519080825280602002602001820160405280156105b857816020015b604080518082019091525f80825260208201528152602001906001900390816105925790505b5090505f5b600754811015610734575f5f90505f60085f600785815481106105e2576105e2611bb4565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205490505b80156106d2575f60085f6007868154811061062657610626611bb4565b5f9182526020808320909101546001600160a01b031683528201929092526040019020610654600184611bdc565b8154811061066457610664611bb4565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050600a54815f0151426106a29190611bdc565b106106ad57506106d2565b60208101516106bc9084611bef565b92505080806106ca90611c02565b915050610609565b506040518060400160405280600784815481106106f1576106f1611bb4565b5f91825260209182902001546001600160a01b0316825201829052835184908490811061072057610720611bb4565b6020908102919091010152506001016105bd565b505f805b82518110156107b2575f83828151811061075457610754611bb4565b60200260200101516020015111156107aa5782818151811061077857610778611bb4565b602002602001015183838061078c90611c17565b94508151811061079e5761079e611bb4565b60200260200101819052505b600101610738565b5060018111156108b0575f5b6107c9600183611bdc565b8110156108ae575f6107dc826001611bef565b90505b828110156108a5578382815181106107f9576107f9611bb4565b60200260200101516020015184828151811061081757610817611bb4565b602002602001015160200151111561089d575f84838151811061083c5761083c611bb4565b6020026020010151905084828151811061085857610858611bb4565b602002602001015185848151811061087257610872611bb4565b60200260200101819052508085838151811061089057610890611bb4565b6020026020010181905250505b6001016107df565b506001016107be565b505b5f8167ffffffffffffffff8111156108ca576108ca611981565b60405190808252806020026020018201604052801561090e57816020015b604080518082019091525f80825260208201528152602001906001900390816108e85790505b5090505f826009541161092357600954610925565b825b90505f5b818110156109705784818151811061094357610943611bb4565b602002602001015183828151811061095d5761095d611bb4565b6020908102919091010152600101610929565b5090949350505050565b5f6006838154811061098e5761098e611bb4565b905f5260205f2090600402016040518060800160405290815f82015481526020016001820180546109be90611b7c565b80601f01602080910402602001604051908101604052809291908181526020018280546109ea90611b7c565b8015610a355780601f10610a0c57610100808354040283529160200191610a35565b820191905f5260205f20905b815481529060010190602001808311610a1857829003601f168201915b505050505081526020016002820154815260200160038201548152505090508060200151515f03610a7957604051636785430960e01b815260040160405180910390fd5b6040516370a0823160e01b8152336004820152829030906370a0823190602401602060405180830381865afa158015610ab4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad89190611c2f565b1015610af757604051631e9acf1760e31b815260040160405180910390fd5b604051636eb1769f60e11b81523360048201523060248201819052839163dd62ed3e90604401602060405180830381865afa158015610b38573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c9190611c2f565b1015610b7b576040516313be252b60e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820181905260448201849052906323b872dd906064016020604051808303815f875af1158015610bc3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be79190611c46565b505f610bf1610554565b80519091505f9015610c9a57612710848460400151610c109190611c65565b610c1a9190611c7c565b90505f825182610c2a9190611c7c565b90505f5b8351811015610c97575f848281518110610c4a57610c4a611bb4565b60200260200101515f01519050610c62308285611111565b6001600160a01b0381165f908152600c602052604081208054859290610c89908490611bef565b909155505050600101610c2e565b50505b5f610ca58286611bdc565b9050610cb1308261116e565b335f81815260086020908152604080832081518083019092524282528183018a815281546001818101845592865293909420915160029093029091019182559151910155610cfe906111a2565b505050505050565b610d0e611575565b610d175f6115a2565b565b610d21611575565b610d2b8183611bef565b61271014610d4c57604051630af6e66560e31b815260040160405180910390fd5b604080516080810182526006805480835260208301878152938301869052606083018590526001810182555f91909152815160049091027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f81019182559251919290917ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4090910190610dde9082611cdf565b5060408201518160020155606082015181600301555050505050565b610e05823383611096565b610e0f828261116e565b5050565b6008602052815f5260405f208181548110610e2c575f80fd5b5f91825260209091206002909102018054600190910154909250905082565b6060600480546103ca90611b7c565b610e62611575565b610e6c8183611bef565b61271014610e8d57604051630af6e66560e31b815260040160405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060068581548110610ec157610ec1611bb4565b905f5260205f2090600402015f820151815f01556020820151816001019081610eea9190611cdf565b506040820151600282015560609091015160039091015550505050565b5f33610458818585611111565b60078181548110610f23575f80fd5b5f918252602090912001546001600160a01b0316905081565b60606006805480602002602001604051908101604052809291908181526020015f905b8282101561103c578382905f5260205f2090600402016040518060800160405290815f8201548152602001600182018054610f9990611b7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc590611b7c565b80156110105780601f10610fe757610100808354040283529160200191611010565b820191905f5260205f20905b815481529060010190602001808311610ff357829003601f168201915b505050505081526020016002820154815260200160038201548152505081526020019060010190610f5f565b50505050905090565b61104d611575565b6001600160a01b03811661107b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610551816115a2565b61109183838360016115f3565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461110b57818110156110fd57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401611072565b61110b84848484035f6115f3565b50505050565b6001600160a01b03831661113a57604051634b637e8f60e11b81525f6004820152602401611072565b6001600160a01b0382166111635760405163ec442f0560e01b81525f6004820152602401611072565b6110918383836116c5565b6001600160a01b03821661119757604051634b637e8f60e11b81525f6004820152602401611072565b610e0f825f836116c5565b5f5b6007548110156111f057816001600160a01b0316600782815481106111cb576111cb611bb4565b5f918252602090912001546001600160a01b0316036111e8575050565b6001016111a4565b506001600160a01b0381166112025750565b6001600160a01b0381163b156112155750565b6001600160a01b0381165f908152600860205260408120545b80156112d4576001600160a01b0383165f908152600860205260408120611256600184611bdc565b8154811061126657611266611bb4565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050600a54815f0151426112a49190611bdc565b106112af57506112d4565b60208101516112be9084611bef565b92505080806112cc90611c02565b91505061122e565b505f5b600754811015611404575f5f90505f60085f600785815481106112fc576112fc611bb4565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205490505b80156113ec575f60085f6007868154811061134057611340611bb4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902061136e600184611bdc565b8154811061137e5761137e611bb4565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050600a54815f0151426113bc9190611bdc565b106113c757506113ec565b60208101516113d69084611bef565b92505080806113e490611c02565b915050611323565b50828110156113fb5750611404565b506001016112d7565b6007545f0361145e57600780546001810182555f919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0385166001600160a01b0319909116179055505050565b600780546001810182555f9182527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0386161790556114af610554565b90505f5b815181101561151c578181815181106114ce576114ce611bb4565b60200260200101515f0151600782815481106114ec576114ec611bb4565b5f91825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556001016114b3565b505f5b815160075461152e9190611bdc565b81101561156e57600780548061154657611546611d9a565b5f8281526020902081015f1990810180546001600160a01b031916905501905560010161151f565b5050505050565b6005546001600160a01b03163314610d175760405163118cdaa760e01b8152336004820152602401611072565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03841661161c5760405163e602df0560e01b81525f6004820152602401611072565b6001600160a01b03831661164557604051634a1406b160e11b81525f6004820152602401611072565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561110b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516116b791815260200190565b60405180910390a350505050565b6001600160a01b0383166116ef578060025f8282546116e49190611bef565b9091555061175f9050565b6001600160a01b0383165f90815260208190526040902054818110156117415760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401611072565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661177b57600280548290039055611799565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117de91815260200190565b60405180910390a3505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61182b60208301846117eb565b9392505050565b80356001600160a01b0381168114611848575f5ffd5b919050565b5f5f6040838503121561185e575f5ffd5b61186783611832565b946020939093013593505050565b5f60208284031215611885575f5ffd5b5035919050565b848152608060208201525f6118a460808301866117eb565b6040830194909452506060015292915050565b5f5f5f606084860312156118c9575f5ffd5b6118d284611832565b92506118e060208501611832565b929592945050506040919091013590565b5f60208284031215611901575f5ffd5b61182b82611832565b602080825282518282018190525f918401906040840190835b8181101561195657835180516001600160a01b031684526020908101518185015290930192604090920191600101611923565b509095945050505050565b5f5f60408385031215611972575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126119a4575f5ffd5b813567ffffffffffffffff8111156119be576119be611981565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156119ed576119ed611981565b604052818152838201602001851015611a04575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611a32575f5ffd5b833567ffffffffffffffff811115611a48575f5ffd5b611a5486828701611995565b9660208601359650604090950135949350505050565b5f5f5f5f60808587031215611a7d575f5ffd5b84359350602085013567ffffffffffffffff811115611a9a575f5ffd5b611aa687828801611995565b949794965050505060408301359260600135919050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611b3f57603f19878603018452815180518652602081015160806020880152611b1360808801826117eb565b604083810151908901526060928301519290970191909152506020938401939190910190600101611ae3565b50929695505050505050565b5f5f60408385031215611b5c575f5ffd5b611b6583611832565b9150611b7360208401611832565b90509250929050565b600181811c90821680611b9057607f821691505b602082108103611bae57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561045e5761045e611bc8565b8082018082111561045e5761045e611bc8565b5f81611c1057611c10611bc8565b505f190190565b5f60018201611c2857611c28611bc8565b5060010190565b5f60208284031215611c3f575f5ffd5b5051919050565b5f60208284031215611c56575f5ffd5b8151801515811461182b575f5ffd5b808202811582820484141761045e5761045e611bc8565b5f82611c9657634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561109157805f5260205f20601f840160051c81016020851015611cc05750805b601f840160051c820191505b8181101561156e575f8155600101611ccc565b815167ffffffffffffffff811115611cf957611cf9611981565b611d0d81611d078454611b7c565b84611c9b565b6020601f821160018114611d3f575f8315611d285750848201515b5f19600385901b1c1916600184901b17845561156e565b5f84815260208120601f198516915b82811015611d6e5787850151825560209485019460019092019101611d4e565b5084821015611d8b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d14d8b09673d229c0ed220c0a9d409d6a7c9a276d7e4f31e7045d89370901ae564736f6c634300081c0033