UNPKG

keep3r-v2

Version:

The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs

1,199 lines 57.2 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Keep3rKeeperFundableForTest", "sourceName": "solidity/for-test/peripherals/keepers/Keep3rKeeperFundableForTest.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_kph", "type": "address" }, { "internalType": "address", "name": "_keep3rV1", "type": "address" }, { "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" }, { "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyAJob", "type": "error" }, { "inputs": [], "name": "BondsLocked", "type": "error" }, { "inputs": [], "name": "BondsUnexistent", "type": "error" }, { "inputs": [], "name": "Disputed", "type": "error" }, { "inputs": [], "name": "DisputerExistent", "type": "error" }, { "inputs": [], "name": "DisputerUnexistent", "type": "error" }, { "inputs": [], "name": "JobDisputed", "type": "error" }, { "inputs": [], "name": "JobUnavailable", "type": "error" }, { "inputs": [], "name": "MinRewardPeriod", "type": "error" }, { "inputs": [], "name": "NoGovernanceZeroAddress", "type": "error" }, { "inputs": [], "name": "OnlyDisputer", "type": "error" }, { "inputs": [], "name": "OnlyGovernance", "type": "error" }, { "inputs": [], "name": "OnlyPendingGovernance", "type": "error" }, { "inputs": [], "name": "OnlySlasher", "type": "error" }, { "inputs": [], "name": "SlasherExistent", "type": "error" }, { "inputs": [], "name": "SlasherUnexistent", "type": "error" }, { "inputs": [], "name": "UnbondsLocked", "type": "error" }, { "inputs": [], "name": "UnbondsUnexistent", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_bond", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Activation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_bondTime", "type": "uint256" } ], "name": "BondTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_bonding", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Bonding", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "DisputerAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "DisputerRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "FeeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_pendingGovernance", "type": "address" } ], "name": "GovernanceProposal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_governance", "type": "address" } ], "name": "GovernanceSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_inflationPeriod", "type": "uint256" } ], "name": "InflationPeriodChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rHelper", "type": "address" } ], "name": "Keep3rHelperChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rV1", "type": "address" } ], "name": "Keep3rV1Change", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" } ], "name": "Keep3rV1ProxyChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "name": "Kp3rWethPoolChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_liquidityMinimum", "type": "uint256" } ], "name": "LiquidityMinimumChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_rewardPeriodTime", "type": "uint256" } ], "name": "RewardPeriodTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "SlasherAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "SlasherRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_unbondTime", "type": "uint256" } ], "name": "UnbondTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeperOrJob", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_unbonding", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Unbonding", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_bond", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Withdrawal", "type": "event" }, { "inputs": [], "name": "BASE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_REWARD_PERIOD_TIME", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" } ], "name": "activate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "addDisputer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "addSlasher", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "bond", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "bondTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "bonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "canActivateAfter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "canWithdrawAfter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "disputers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "disputes", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "firstSeen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "governance", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hasBonded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inflationPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keeper", "type": "address" } ], "name": "isKeeper", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "jobTokenCredits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "jobs", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rHelper", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rV1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rV1Proxy", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keepers", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "kp3rWethPool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityMinimum", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "pendingBonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingGovernance", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "pendingUnbonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "removeDisputer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "removeSlasher", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardPeriodTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_bondTime", "type": "uint256" } ], "name": "setBondTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_governance", "type": "address" } ], "name": "setGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_inflationPeriod", "type": "uint256" } ], "name": "setInflationPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "job", "type": "address" } ], "name": "setJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rHelper", "type": "address" } ], "name": "setKeep3rHelper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rV1", "type": "address" } ], "name": "setKeep3rV1", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" } ], "name": "setKeep3rV1Proxy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "name": "setKp3rWethPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_liquidityMinimum", "type": "uint256" } ], "name": "setLiquidityMinimum", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewardPeriodTime", "type": "uint256" } ], "name": "setRewardPeriodTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_unbondTime", "type": "uint256" } ], "name": "setUnbondTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "slashers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "unbond", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unbondTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bonding", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "workCompleted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526203f480601d5562127500601e556729a2241af62c0000601f5562069780602055622cd300602155601e6022553480156200003e57600080fd5b506040516200213e3803806200213e8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601580546001600160a01b03199081166001600160a01b0393841617909155601b80548216888416178155601980548316888516179055601a80548316878516179055601c8054831686851690811782556000818152600c602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b611ee2806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c80639d5c33d811610182578063c7ae40d0116100e9578063ebbb6194116100a2578063f0f346b91161007c578063f0f346b914610713578063f11a1d1a14610726578063f39c38a014610739578063fc253d2b1461074c57600080fd5b8063ebbb6194146106e4578063ec00cdfc146106f7578063ec342ad01461070a57600080fd5b8063c7ae40d014610657578063cb4be2bb1461066a578063cb54694d1461067d578063cd22af1b14610690578063ddca3f43146106bb578063e326ac43146106c457600080fd5b8063aac6aa9c1161013b578063aac6aa9c146105c5578063ab033ea9146105d8578063b0103b1a146105eb578063b23922331461060e578063b7e7734014610621578063b87fcbff1461063457600080fd5b80639d5c33d814610545578063a39744b514610558578063a515366a14610583578063a5d059ca14610596578063a662031b146105a9578063a7d2e784146105bc57600080fd5b80635aa6e6751161024157806372da828a116101fa5780637c8fce23116101d45780637c8fce23146104f25780638cb22b76146105075780638fe204dd1461052a578063951dc22c1461053d57600080fd5b806372da828a146104c3578063768b5d90146104d65780637b40c913146104df57600080fd5b80635aa6e675146104655780635ebe23f014610478578063633fb68f1461048157806368a9f19c1461048a57806369fe0e2d1461049d5780636ba42aaa146104b057600080fd5b80631ef94b91116102935780631ef94b91146103b757806321040b01146103e2578063238efcbc1461040d578063274a8db414610415578063461411bc1461044857806351cff8d91461045257600080fd5b806307b435c2146102db57806315006b8214610319578063160e1e3114610344578063168f92e7146103595780631b44555e146103845780631c5a9d9c146103a4575b600080fd5b6103066102e9366004611cee565b601060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b610306610327366004611cee565b600e60209081526000928352604080842090915290825290205481565b610357610352366004611cd3565b610755565b005b610306610367366004611cee565b600760209081526000928352604080842090915290825290205481565b610306610392366004611cd3565b60036020526000908152604090205481565b6103576103b2366004611cd3565b6108b2565b6019546103ca906001600160a01b031681565b6040516001600160a01b039091168152602001610310565b6103066103f0366004611cee565b601160209081526000928352604080842090915290825290205481565b610357610974565b610438610423366004611cd3565b60186020526000908152604090205460ff1681565b6040519015158152602001610310565b6103066201518081565b610357610460366004611cd3565b6109fd565b6015546103ca906001600160a01b031681565b610306601d5481565b610306601f5481565b610357610498366004611cd3565b610c1b565b6103576104ab366004611d6d565b610cd4565b6104386104be366004611cd3565b610d34565b6103576104d1366004611cd3565b610d47565b61030660205481565b601c546103ca906001600160a01b031681565b6104fa610de7565b6040516103109190611dbb565b610438610515366004611cd3565b60126020526000908152604090205460ff1681565b610357610538366004611d6d565b610df8565b6104fa610e58565b610357610553366004611cd3565b610e64565b610306610566366004611cee565b600660209081526000928352604080842090915290825290205481565b610357610591366004611d21565b610f1d565b6103576105a4366004611d21565b6111a4565b6103576105b7366004611cd3565b61127e565b610306601e5481565b6103576105d3366004611cd3565b61128d565b6103576105e6366004611cd3565b611342565b6104386105f9366004611cd3565b60056020526000908152604090205460ff1681565b61035761061c366004611d6d565b6113bb565b61035761062f366004611d6d565b61141b565b610438610642366004611cd3565b60176020526000908152604090205460ff1681565b601a546103ca906001600160a01b031681565b610357610678366004611cd3565b61147b565b61035761068b366004611d6d565b61151b565b61030661069e366004611cee565b600f60209081526000928352604080842090915290825290205481565b61030660225481565b6103066106d2366004611cd3565b60046020526000908152604090205481565b6103576106f2366004611d6d565b61159d565b610357610705366004611cd3565b6115fd565b61030661271081565b610357610721366004611cd3565b61169d565b601b546103ca906001600160a01b031681565b6016546103ca906001600160a01b031681565b61030660215481565b6015546001600160a01b03163314610780576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166107a75760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b038381166001600160a01b031992831681179093556000838152600c60205260409081902080549093168417909255601b54915163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108539190611d4b565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191694151594909417909355519081527f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa91015b60405180910390a150565b3360009081526005602052604090205460ff16156108e3576040516362e6201d60e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b038516845290915290205461092457604051636258f48160e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b0385168452909152902054421161096757604051630fd0eeef60e11b815260040160405180910390fd5b6109713382611752565b50565b6016546001600160a01b0316331461099f57604051637ef5703160e11b815260040160405180910390fd5b60168054601580546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b60026000541415610a555760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081553381526010602090815260408083206001600160a01b0385168452909152902054610a9a5760405163184c088160e21b815260040160405180910390fd5b3360009081526010602090815260408083206001600160a01b03851684529091529020544211610add576040516327cfdcb760e01b815260040160405180910390fd5b3360009081526005602052604090205460ff1615610b0e576040516362e6201d60e01b815260040160405180910390fd5b3360009081526011602090815260408083206001600160a01b0385811680865291909352922054601954909291161415610ba157601a5460405163140e25ad60e31b8152600481018390526001600160a01b039091169063a0712d6890602401600060405180830381600087803b158015610b8857600080fd5b505af1158015610b9c573d6000803e3d6000fd5b505050505b3360008181526011602090815260408083206001600160a01b0387168085529252822091909155610bd29183611820565b6040518181526001600160a01b0383169033907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a350506001600055565b6015546001600160a01b03163314610c46576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff1615610c805760405163546da66560e11b815260040160405180910390fd5b6001600160a01b038116600081815260176020908152604091829020805460ff1916600117905590519182527f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b91016108a7565b6015546001600160a01b03163314610cff576040516354348f0360e01b815260040160405180910390fd5b60228190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d906020016108a7565b6000610d41600183611888565b92915050565b6015546001600160a01b03163314610d72576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610d995760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b0906020016108a7565b6060610df360136118ad565b905090565b6015546001600160a01b03163314610e23576040516354348f0360e01b815260040160405180910390fd5b601e8190556040518181527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee2906020016108a7565b6060610df360016118ad565b6015546001600160a01b03163314610e8f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff1615610ec95760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b038116600081815260186020908152604091829020805460ff1916600117905590519182527f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f91016108a7565b60026000541415610f705760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a4c565b600260009081553381526005602052604090205460ff1615610fa5576040516362e6201d60e01b815260040160405180910390fd5b610fb0601333611888565b15610fce5760405163d7229c4360e01b815260040160405180910390fd5b601d54610fdb9042611e3b565b336000908152600f602090815260408083206001600160a01b03871680855292528083209390935591516370a0823160e01b81523060048201529091906370a082319060240160206040518083038186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190611d86565b90506110886001600160a01b0384163330856118ba565b6040516370a0823160e01b815230600482015281906001600160a01b038516906370a082319060240160206040518083038186803b1580156110c957600080fd5b505afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111019190611d86565b61110b9190611e53565b336000908152601260209081526040808320805460ff19166001179055600e82528083206001600160a01b0388168452909152812080549294508492909190611155908490611e3b565b90915550506040518281526001600160a01b0384169033907fa7e66869262026842e8d81f5e6806cdc8d846e27c824e2e22f4fe51442771b349060200160405180910390a35050600160005550565b601e546111b19042611e3b565b3360008181526010602090815260408083206001600160a01b038816808552908352818420959095559282526006815282822093825292909252812080548392906111fd908490611e53565b90915550503360009081526011602090815260408083206001600160a01b038616845290915281208054839290611235908490611e3b565b90915550506040518181526001600160a01b0383169033907f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de9060200160405180910390a35050565b6112896013826118f8565b5050565b6015546001600160a01b031633146112b8576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff166112f1576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b038116600081815260176020908152604091829020805460ff1916905590519182527f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02591016108a7565b6015546001600160a01b0316331461136d576040516354348f0360e01b815260040160405180910390fd5b601680546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f906020016108a7565b6015546001600160a01b031633146113e6576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb69906020016108a7565b6015546001600160a01b03163314611446576040516354348f0360e01b815260040160405180910390fd5b601d8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b43906020016108a7565b6015546001600160a01b031633146114a6576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166114cd5760405163d92e233d60e01b815260040160405180910390fd5b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae250906020016108a7565b6015546001600160a01b03163314611546576040516354348f0360e01b815260040160405180910390fd5b6201518081101561156a57604051633f384aad60e21b815260040160405180910390fd5b60208181556040518281527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d991016108a7565b6015546001600160a01b031633146115c8576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e7906020016108a7565b6015546001600160a01b03163314611628576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811661164f5760405163d92e233d60e01b815260040160405180910390fd5b601980546001600160a01b0319166001600160a01b0383169081179091556040519081527f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf906020016108a7565b6015546001600160a01b031633146116c8576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff1661170157604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b038116600081815260186020908152604091829020805460ff1916905590519182527f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e91016108a7565b6001600160a01b03821660009081526004602052604090205461178b576001600160a01b03821660009081526004602052604090204290555b6117966001836118f8565b506001600160a01b038281166000908152600e60209081526040808320938516835292905290812080549190556117ce82848361190d565b816001600160a01b0316836001600160a01b03167f3673530133b6da67e9854f605b0cfa7bb9798cd33c18036dfc10d8da7c4d4a758360405161181391815260200190565b60405180910390a3505050565b6040516001600160a01b03831660248201526044810182905261188390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526119c2565b505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b606060006118a683611a94565b6040516001600160a01b03808516602483015283166044820152606481018290526118f29085906323b872dd60e01b9060840161184c565b50505050565b60006118a6836001600160a01b038416611af0565b6001600160a01b03808316600090815260066020908152604080832093871683529290529081208054839290611944908490611e3b565b90915550506019546001600160a01b038481169116141561188357601954604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b1580156119a557600080fd5b505af11580156119b9573d6000803e3d6000fd5b50505050505050565b6000611a17826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b3f9092919063ffffffff16565b8051909150156118835780806020019051810190611a359190611d4b565b6118835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a4c565b606081600001805480602002602001604051908101604052809291908181526020018280548015611ae457602002820191906000526020600020905b815481526020019060010190808311611ad0575b50505050509050919050565b6000818152600183016020526040812054611b3757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d41565b506000610d41565b6060611b4e8484600085611b56565b949350505050565b606082471015611bb75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a4c565b843b611c055760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a4c565b600080866001600160a01b03168587604051611c219190611d9f565b60006040518083038185875af1925050503d8060008114611c5e576040519150601f19603f3d011682016040523d82523d6000602084013e611c63565b606091505b5091509150611c73828286611c7e565b979650505050505050565b60608315611c8d5750816118a6565b825115611c9d5782518084602001fd5b8160405162461bcd60e51b8152600401610a4c9190611e08565b80356001600160a01b0381168114611cce57600080fd5b919050565b600060208284031215611ce557600080fd5b6118a682611cb7565b60008060408385031215611d0157600080fd5b611d0a83611cb7565b9150611d1860208401611cb7565b90509250929050565b60008060408385031215611d3457600080fd5b611d3d83611cb7565b946020939093013593505050565b600060208284031215611d5d57600080fd5b815180151581146118a657600080fd5b600060208284031215611d7f57600080fd5b5035919050565b600060208284031215611d9857600080fd5b5051919050565b60008251611db1818460208701611e6a565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015611dfc5783516001600160a01b031683529284019291840191600101611dd7565b50909695505050505050565b6020815260008251806020840152611e27816040850160208701611e6a565b601f01601f19169190910160400192915050565b60008219821115611e4e57611e4e611e96565b500190565b600082821015611e6557611e65611e96565b500390565b60005b83811015611e85578181015183820152602001611e6d565b838111156118f25750506000910152565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220329df2150e6ce00f3eb83129f80697ee790f2601f39b1e7a61247b17ab86ead264736f6c63430008070033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102d65760003560e01c80639d5c33d811610182578063c7ae40d0116100e9578063ebbb6194116100a2578063f0f346b91161007c578063f0f346b914610713578063f11a1d1a14610726578063f39c38a014610739578063fc253d2b1461074c57600080fd5b8063ebbb6194146106e4578063ec00cdfc146106f7578063ec342ad01461070a57600080fd5b8063c7ae40d014610657578063cb4be2bb1461066a578063cb54694d1461067d578063cd22af1b14610690578063ddca3f43146106bb578063e326ac43146106c457600080fd5b8063aac6aa9c1161013b578063aac6aa9c146105c5578063ab033ea9146105d8578063b0103b1a146105eb578063b23922331461060e578063b7e7734014610621578063b87fcbff1461063457600080fd5b80639d5c33d814610545578063a39744b514610558578063a515366a14610583578063a5d059ca14610596578063a662031b146105a9578063a7d2e784146105bc57600080fd5b80635aa6e6751161024157806372da828a116101fa5780637c8fce23116101d45780637c8fce23146104f25780638cb22b76146105075780638fe204dd1461052a578063951dc22c1461053d57600080fd5b806372da828a146104c3578063768b5d90146104d65780637b40c913146104df57600080fd5b80635aa6e675146104655780635ebe23f014610478578063633fb68f1461048157806368a9f19c1461048a57806369fe0e2d1461049d5780636ba42aaa146104b057600080fd5b80631ef94b91116102935780631ef94b91146103b757806321040b01146103e2578063238efcbc1461040d578063274a8db414610415578063461411bc1461044857806351cff8d91461045257600080fd5b806307b435c2146102db57806315006b8214610319578063160e1e3114610344578063168f92e7146103595780631b44555e146103845780631c5a9d9c146103a4575b600080fd5b6103066102e9366004611cee565b601060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b610306610327366004611cee565b600e60209081526000928352604080842090915290825290205481565b610357610352366004611cd3565b610755565b005b610306610367366004611cee565b600760209081526000928352604080842090915290825290205481565b610306610392366004611cd3565b60036020526000908152604090205481565b6103576103b2366004611cd3565b6108b2565b6019546103ca906001600160a01b031681565b6040516001600160a01b039091168152602001610310565b6103066103f0366004611cee565b601160209081526000928352604080842090915290825290205481565b610357610974565b610438610423366004611cd3565b60186020526000908152604090205460ff1681565b6040519015158152602001610310565b6103066201518081565b610357610460366004611cd3565b6109fd565b6015546103ca906001600160a01b031681565b610306601d5481565b610306601f5481565b610357610498366004611cd3565b610c1b565b6103576104ab366004611d6d565b610cd4565b6104386104be366004611cd3565b610d34565b6103576104d1366004611cd3565b610d47565b61030660205481565b601c546103ca906001600160a01b031681565b6104fa610de7565b6040516103109190611dbb565b610438610515366004611cd3565b60126020526000908152604090205460ff1681565b610357610538366004611d6d565b610df8565b6104fa610e58565b610357610553366004611cd3565b610e64565b610306610566366004611cee565b600660209081526000928352604080842090915290825290205481565b610357610591366004611d21565b610f1d565b6103576105a4366004611d21565b6111a4565b6103576105b7366004611cd3565b61127e565b610306601e5481565b6103576105d3366004611cd3565b61128d565b6103576105e6366004611cd3565b611342565b6104386105f9366004611cd3565b60056020526000908152604090205460ff1681565b61035761061c366004611d6d565b6113bb565b61035761062f366004611d6d565b61141b565b610438610642366004611cd3565b60176020526000908152604090205460ff1681565b601a546103ca906001600160a01b031681565b610357610678366004611cd3565b61147b565b61035761068b366004611d6d565b61151b565b61030661069e366004611cee565b600f60209081526000928352604080842090915290825290205481565b61030660225481565b6103066106d2366004611cd3565b60046020526000908152604090205481565b6103576106f2366004611d6d565b61159d565b610357610705366004611cd3565b6115fd565b61030661271081565b610357610721366004611cd3565b61169d565b601b546103ca906001600160a01b031681565b6016546103ca906001600160a01b031681565b61030660215481565b6015546001600160a01b03163314610780576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166107a75760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b038381166001600160a01b031992831681179093556000838152600c60205260409081902080549093168417909255601b54915163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108539190611d4b565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191694151594909417909355519081527f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa91015b60405180910390a150565b3360009081526005602052604090205460ff16156108e3576040516362e6201d60e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b038516845290915290205461092457604051636258f48160e01b815260040160405180910390fd5b336000908152600f602090815260408083206001600160a01b0385168452909152902054421161096757604051630fd0eeef60e11b815260040160405180910390fd5b6109713382611752565b50565b6016546001600160a01b0316331461099f57604051637ef5703160e11b815260040160405180910390fd5b60168054601580546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b60026000541415610a555760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081553381526010602090815260408083206001600160a01b0385168452909152902054610a9a5760405163184c088160e21b815260040160405180910390fd5b3360009081526010602090815260408083206001600160a01b03851684529091529020544211610add576040516327cfdcb760e01b815260040160405180910390fd5b3360009081526005602052604090205460ff1615610b0e576040516362e6201d60e01b815260040160405180910390fd5b3360009081526011602090815260408083206001600160a01b0385811680865291909352922054601954909291161415610ba157601a5460405163140e25ad60e31b8152600481018390526001600160a01b039091169063a0712d6890602401600060405180830381600087803b158015610b8857600080fd5b505af1158015610b9c573d6000803e3d6000fd5b505050505b3360008181526011602090815260408083206001600160a01b0387168085529252822091909155610bd29183611820565b6040518181526001600160a01b0383169033907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a350506001600055565b6015546001600160a01b03163314610c46576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526017602052604090205460ff1615610c805760405163546da66560e11b815260040160405180910390fd5b6001600160a01b038116600081815260176020908152604091829020805460ff1916600117905590519182527f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b91016108a7565b6015546001600160a01b03163314610cff576040516354348f0360e01b815260040160405180910390fd5b60228190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d906020016108a7565b6000610d41600183611888565b92915050565b6015546001600160a01b03163314610d72576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610d995760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b0906020016108a7565b6060610df360136118ad565b905090565b6015546001600160a01b03163314610e23576040516354348f0360e01b815260040160405180910390fd5b601e8190556040518181527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee2906020016108a7565b6060610df360016118ad565b6015546001600160a01b03163314610e8f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526018602052604090205460ff1615610ec95760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b038116600081815260186020908152604091829020805460ff1916600117905590519182527f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f91016108a7565b60026000541415610f705760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a4c565b600260009081553381526005602052604090205460ff1615610fa5576040516362e6201d60e01b815260040160405180910390fd5b610fb0601333611888565b15610fce5760405163d7229c4360e01b815260040160405180910390fd5b601d54610fdb9042611e3b565b336000908152600f602090815260408083206001600160a01b03871680855292528083209390935591516370a0823160e01b81523060048201529091906370a082319060240160206040518083038186803b15801561103957600080fd5b505afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190611d86565b90506110886001600160a01b0384163330856118ba565b6040516370a0823160e01b815230600482015281906001600160a01b038516906370a082319060240160206040518083038186803b1580156110c957600080fd5b505afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111019190