0 txs
0 calls
constructor
constructor(address _poolFactory)
functions
allPoolPositions
viewfunction allPoolPositions(uint256) view returns (address)
allPoolPositionsLength
viewfunction allPoolPositionsLength() view returns (uint256)
getLpRewardByPP
viewfunction getLpRewardByPP(address) view returns (address)
getLpRewardListInfo
viewfunction getLpRewardListInfo(address[] rewardList) view returns (tuple[] rewardInfos)
getLpRewardListInfoByPP
viewfunction getLpRewardListInfoByPP(address poolPosition) view returns (tuple[] rewardInfo)
isApprovedRewardToken
viewfunction isApprovedRewardToken(address) view returns (bool)
isFactoryLpReward
viewfunction isFactoryLpReward(address) view returns (bool)
isPoolPosition
viewfunction isPoolPosition(address) view returns (bool)
minimumRewardAmount
viewfunction minimumRewardAmount(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
poolFactory
viewfunction poolFactory() view returns (address)
poolPositionNumber
viewfunction poolPositionNumber(address) view returns (uint256)
addNewApprovedRewardToken
nonpayablefunction addNewApprovedRewardToken(address rewardToken, uint256 minimumAmount)
createPoolPositionAndRewards
nonpayablefunction createPoolPositionAndRewards(address pool, uint128[] binIds, uint128[] ratios, bool isStatic) returns (address poolPosition)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AddNewApprovedRewardToken
event AddNewApprovedRewardToken(address rewardToken, uint256 minimumAmount)
LpRewardCreated
event LpRewardCreated(address poolPosition, address reward)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolPositionCreated
event PoolPositionCreated(address pool, uint128[] binIds, uint128[] ratios, address poolPosition, uint256 poolPositionNumber)
errors
MustBeFactoryPool
error MustBeFactoryPool()
creation bytecode
0x60a060405234801561001057600080fd5b5060405162004374380380620043748339810160408190526100319161009b565b61003a3361004b565b6001600160a01b03166080526100cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ad57600080fd5b81516001600160a01b03811681146100c457600080fd5b9392505050565b608051614286620000ee600039600081816101e601526104df01526142866000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80637d8eb4a5116100b2578063a1014b0011610081578063c77f53f711610066578063c77f53f71461031c578063e31504831461032f578063f2fde38b1461033757600080fd5b8063a1014b00146102e9578063ac9650d8146102fc57600080fd5b80637d8eb4a51461026857806386d751ae146102885780638da5cb5b146102ab57806390f57fe6146102c957600080fd5b80635539fea5116100ee5780635539fea51461020857806362e9396a146102285780637095bffc1461023b578063715018a61461025e57600080fd5b80630975acad146101205780631f69e45c14610153578063237120f8146101865780634219dc40146101e1575b600080fd5b61014061012e366004610f24565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b610176610161366004610f24565b60026020526000908152604090205460ff1681565b604051901515815260200161014a565b6101bc610194366004610f24565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014a565b6101bc7f000000000000000000000000000000000000000000000000000000000000000081565b61021b61021636600461100c565b61034a565b60405161014a91906110ab565b6101bc6102363660046111fb565b610497565b610176610249366004610f24565b60046020526000908152604090205460ff1681565b6102666107cf565b005b61027b610276366004610f24565b6107e3565b60405161014a9190611290565b610176610296366004610f24565b60076020526000908152604090205460ff1681565b60005473ffffffffffffffffffffffffffffffffffffffff166101bc565b6101406102d7366004610f24565b60036020526000908152604090205481565b6101bc6102f7366004611316565b6108ac565b61030f61030a36600461132f565b6108e3565b60405161014a91906113df565b61026661032a36600461145f565b6109d8565b600154610140565b610266610345366004610f24565b6109ee565b80516060908067ffffffffffffffff81111561036857610368610f41565b6040519080825280602002602001820160405280156103a857816020015b6040805160208101909152606081528152602001906001900390816103865790505b50915060005b81811015610490578381815181106103c8576103c861148b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663c9f670726040518163ffffffff1660e01b8152600401600060405180830381865afa15801561041a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261046091908101906114ba565b8382815181106104725761047261148b565b6020908102919091010151528061048881611595565b9150506103ae565b5050919050565b6040517f578eaca400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063578eaca490602401602060405180830381865afa158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c91906115f4565b610582576040517f50d0744300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001548261062a576040517fb96415940000000000000000000000000000000000000000000000000000000081527332aed3bce901da12ca8489788f3a99fce1056e149063b9641594906105e4908b908b908b908b908b908990600401611669565b602060405180830381865af4158015610601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062591906116c0565b6106c5565b6040517fb96415940000000000000000000000000000000000000000000000000000000081527301538aa697ce8cc8252c70c41452dae86ce22a3e9063b964159490610684908b908b908b908b908b908990600401611669565b602060405180830381865af41580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c591906116c0565b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560009081526003602090815260408083208690556002909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055915061078082610aaa565b507f8f8879ffd08f52cea5fd357c96f99931a564ca54e120dba4fe84e56233f4a63d888888888887876040516107bc97969594939291906116dd565b60405180910390a1509695505050505050565b6107d7610bc1565b6107e16000610c42565b565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600660205260408082205481517fc9f670720000000000000000000000000000000000000000000000000000000081529151606094919091169263c9f6707292600480820193918290030181865afa158015610860573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108a691908101906114ba565b92915050565b600181815481106108bc57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60608167ffffffffffffffff8111156108fe576108fe610f41565b60405190808252806020026020018201604052801561093157816020015b606081526020019060019003908161091c5790505b50905060005b828110156109d1576109a1308585848181106109555761095561148b565b90506020028101906109679190611739565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cb792505050565b8282815181106109b3576109b361148b565b602002602001018190525080806109c990611595565b915050610937565b5092915050565b6109e0610bc1565b6109ea8282610ce4565b5050565b6109f6610bc1565b73ffffffffffffffffffffffffffffffffffffffff8116610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610aa781610c42565b50565b60008130604051610aba90610ef4565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f080158015610afa573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff818116600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055938716808352600682529184902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905583519182528101919091529192507f2e7e9564fe4343a49dfebe896cb4e6f03ffd0f7663cd3de734348b160c788aae910160405180910390a1919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a95565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060610cdd83836040518060600160405280602781526020016200422a60279139610d79565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556005825291829020849055815192835282018390527f3e3d458ecec87edd71d24a2c23f92784eeb0d5aaada6dccd6250f60155a40139910160405180910390a15050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610a95565b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051610e47919061179e565b600060405180830381855af49150503d8060008114610e82576040519150601f19603f3d011682016040523d82523d6000602084013e610e87565b606091505b5091509150610e97828286610ea1565b9695505050505050565b60608315610eb0575081610cdd565b825115610ec05782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9591906117ba565b612a5c80620017ce83390190565b73ffffffffffffffffffffffffffffffffffffffff81168114610aa757600080fd5b600060208284031215610f3657600080fd5b8135610cdd81610f02565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610f9357610f93610f41565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fe057610fe0610f41565b604052919050565b600067ffffffffffffffff82111561100257611002610f41565b5060051b60200190565b6000602080838503121561101f57600080fd5b823567ffffffffffffffff81111561103657600080fd5b8301601f8101851361104757600080fd5b803561105a61105582610fe8565b610f99565b81815260059190911b8201830190838101908783111561107957600080fd5b928401925b828410156110a057833561109181610f02565b8252928401929084019061107e565b979650505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015611192578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251518885528051898601819052908901908390898701905b8083101561117d5783518051835260208082015190840152604080820151908401526060808201519084015260809081015173ffffffffffffffffffffffffffffffffffffffff169083015260a0820191508b8401935060018301925061111b565b50978a019795505050918701916001016110d3565b50919998505050505050505050565b60008083601f8401126111b357600080fd5b50813567ffffffffffffffff8111156111cb57600080fd5b6020830191508360208260051b85010111156111e657600080fd5b9250929050565b8015158114610aa757600080fd5b6000806000806000806080878903121561121457600080fd5b863561121f81610f02565b9550602087013567ffffffffffffffff8082111561123c57600080fd5b6112488a838b016111a1565b9097509550604089013591508082111561126157600080fd5b5061126e89828a016111a1565b9094509250506060870135611282816111ed565b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561130a5783518051845260208082015190850152604080820151908501526060808201519085015260809081015173ffffffffffffffffffffffffffffffffffffffff169084015260a083019385019392506001016112ac565b50909695505050505050565b60006020828403121561132857600080fd5b5035919050565b6000806020838503121561134257600080fd5b823567ffffffffffffffff81111561135957600080fd5b611365858286016111a1565b90969095509350505050565b60005b8381101561138c578181015183820152602001611374565b50506000910152565b600081518084526113ad816020860160208601611371565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611452577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611440858351611395565b94509285019290850190600101611406565b5092979650505050505050565b6000806040838503121561147257600080fd5b823561147d81610f02565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208083850312156114cd57600080fd5b825167ffffffffffffffff8111156114e457600080fd5b8301601f810185136114f557600080fd5b805161150361105582610fe8565b81815260a0918202830184019184820191908884111561152257600080fd5b938501935b838510156115895780858a03121561153f5760008081fd5b611547610f70565b855181528686015187820152604080870151908201526060808701519082015260808087015161157681610f02565b9082015283529384019391850191611527565b50979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60006020828403121561160657600080fd5b8151610cdd816111ed565b818352600060208085019450826000805b8681101561165d5782356fffffffffffffffffffffffffffffffff811680821461164a578384fd5b8952509683019691830191600101611622565b50959695505050505050565b73ffffffffffffffffffffffffffffffffffffffff87168152608060208201526000611699608083018789611611565b82810360408401526116ac818688611611565b915050826060830152979650505050505050565b6000602082840312156116d257600080fd5b8151610cdd81610f02565b600073ffffffffffffffffffffffffffffffffffffffff808a16835260a0602084015261170e60a08401898b611611565b838103604085015261172181888a611611565b95909116606084015250506080015295945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261176e57600080fd5b83018035915067ffffffffffffffff82111561178957600080fd5b6020019150368190038213156111e657600080fd5b600082516117b0818460208701611371565b9190910192915050565b602081526000610cdd602083018461139556fe60c06040526001805460ff191660101790553480156200001e57600080fd5b5060405162002a5c38038062002a5c833981016040819052620000419162000086565b600160008181556001600160a01b0393841660a0529190921660805260048054909201825552620000c5565b6001600160a01b03811681146200008357600080fd5b50565b600080604083850312156200009a57600080fd5b8251620000a7816200006d565b6020840151909250620000ba816200006d565b809150509250929050565b60805160a05161295562000107600039600081816102fe0152818161119201526113c10152600081816101cc015281816105f1015261189001526129556000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c80635d0cde97116100cd5780638381e18211610081578063ac9650d811610066578063ac9650d814610359578063c9f6707214610379578063d2cadaf31461038e57600080fd5b80638381e18214610333578063a0d6ff9a1461034657600080fd5b806370a08231116100b257806370a08231146102d957806372f702f3146102f95780637acb77571461032057600080fd5b80635d0cde97146102b9578063664366db146102c657600080fd5b8063211dc32d116101245780633e3cc239116101095780633e3cc23914610213578063427f91a61461027157806349d3b6e2146102a657600080fd5b8063211dc32d146101b4578063245e4bf0146101c757600080fd5b80628cc262146101555780630e7cacf91461017e57806318160ddd146101935780631f671765146101aa575b600080fd5b61016861016336600461228a565b6103a1565b60405161017591906122a5565b60405180910390f35b61019161018c366004612318565b6104f3565b005b61019c60025481565b604051908152602001610175565b60065461019c9081565b61019c6101c236600461234b565b61071e565b6101ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b61022661022136600461237e565b6107d2565b604080519788526020880196909652948601939093526060850191909152608084015260a083015273ffffffffffffffffffffffffffffffffffffffff1660c082015260e001610175565b61029461027f36600461228a565b60056020526000908152604090205460ff1681565b60405160ff9091168152602001610175565b6101916102b43660046123a8565b610837565b6001546102949060ff1681565b6101916102d436600461240f565b6108b9565b61019c6102e736600461228a565b60036020526000908152604090205481565b6101ee7f000000000000000000000000000000000000000000000000000000000000000081565b61019161032e366004612462565b6108fc565b610191610341366004612462565b61090b565b61019161035436600461228a565b610916565b61036c610367366004612485565b610923565b6040516101759190612535565b610381610a18565b60405161017591906125b5565b61019c61039c36600461262c565b610b93565b6004546060908067ffffffffffffffff8111156103c0576103c0612656565b60405190808252806020026020018201604052801561042957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103de5790505b50915060015b818160ff1610156104ec57600060048260ff168154811061045257610452612685565b90600052602060002090600a0201905060405180606001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020016104938784610ba7565b8152600983015473ffffffffffffffffffffffffffffffffffffffff166020909101528451859060ff85169081106104cd576104cd612685565b60200260200101819052505080806104e4906126e3565b91505061042f565b5050919050565b600260005403610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556203f4808110156105a9576040517f91aaaf240000000000000000000000000000000000000000000000000000000081526004810182905260240161055b565b6040517f0975acad00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690630975acad90602401602060405180830381865afa15801561063a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065e9190612702565b9050808310156106a4576040517f1eecc570000000000000000000000000000000000000000000000000000000008152600481018490526024810182905260440161055b565b6106af848484610c59565b915062278d008211156106f1576040517f91aaaf240000000000000000000000000000000000000000000000000000000081526004810183905260240161055b565b61071373ffffffffffffffffffffffffffffffffffffffff8516333086610e16565b505060016000555050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205460ff16808203610798576040517fe63bc0be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161055b565b6000600482815481106107ad576107ad612685565b90600052602060002090600a020190506107c78582610ba7565b925050505b92915050565b600481815481106107e257600080fd5b60009182526020909120600a90910201805460018201546002830154600384015460078501546008860154600990960154949650929491939092919073ffffffffffffffffffffffffffffffffffffffff1687565b6002600054036108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161055b565b60026000556108b181610ef8565b506001600055565b6108f7338484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061106f92505050565b505050565b6109073383836110c0565b5050565b61090733838361129b565b6109203382611464565b50565b60608167ffffffffffffffff81111561093e5761093e612656565b60405190808252806020026020018201604052801561097157816020015b606081526020019060019003908161095c5790505b50905060005b82811015610a11576109e13085858481811061099557610995612685565b90506020028101906109a7919061271b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061149692505050565b8282815181106109f3576109f3612685565b60200260200101819052508080610a0990612780565b915050610977565b5092915050565b6004546060908067ffffffffffffffff811115610a3757610a37612656565b604051908082528060200260200182016040528015610ab057816020015b610a9d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b815260200190600190039081610a555790505b50915060015b818160ff161015610b8e57600060048260ff1681548110610ad957610ad9612685565b90600052602060002090600a020190506040518060a00160405280826000015481526020018260010154815260200182600201548152602001826003015481526020018260090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250848360ff1681518110610b6f57610b6f612685565b6020026020010181905250508080610b86906126e3565b915050610ab6565b505090565b6000610ba03384846114bb565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812054610c2790610c19610bdd856116bf565b8560030154610bec91906127b8565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600487016020526040902054611729565b670de0b6b3a764000061174a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600584016020526040902054610ba091906127b8565b600080610c6585611817565b9050600060048260ff1681548110610c7f57610c7f612685565b90600052602060002090600a02019050610c9a600082611b2e565b60098101546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091610d3f9173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612702565b8360070154611729565b905080861180610d5157506002820154155b15610d755784610d6182886127b8565b610d6b91906127fa565b6002830155610d91565b6002820154610d8482886127b8565b610d8e91906127fa565b94505b610d9b85426127b8565b825542600183015560028201546040805133815273ffffffffffffffffffffffffffffffffffffffff8a166020820152808201899052606081018890526080810192909252517ffcb9ca03b70a876a8d62dc2ef18aa125118fd02dae56cfffc36a627e7b1c48119181900360a00190a1509295945050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610ef29085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611cac565b50505050565b600060048260ff1681548110610f1057610f10612685565b90600052602060002090600a02019050806000015462278d00610f3391906127b8565b421015610f71576040517ff062126c00000000000000000000000000000000000000000000000000000000815260ff8316600482015260240161055b565b60098101546040805173ffffffffffffffffffffffffffffffffffffffff909216825260ff841660208301527f353ebfaea553ae85160f3da125ac0ded25dcae43d4ef924530be7a0f9a919dac910160405180910390a160068054600160ff85161b1916905560098101805473ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905581547fffffffffffffffffffffffff00000000000000000000000000000000000000001690915560078201819055600382018190556002820181905580825560019091015550565b805160005b818160ff1610156110b9576110a68585858460ff168151811061109957611099612685565b60200260200101516114bb565b50806110b1816126e3565b915050611074565b5050505050565b60026000540361112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161055b565b6002600081905550818060000361116f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117882611db8565b6111ba73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016853086610e16565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548592906111ef9084906127b8565b92505081905550826002600082825461120891906127b8565b909155505073ffffffffffffffffffffffffffffffffffffffff828116600081815260036020908152604091829020546002548351338152958a16928601929092529184018790526060840192909252608083015260a08201527f085d03d4e08946d168a8e39b4d6fb3dac61848912dae1a052fbe35f51e790e309060c0015b60405180910390a1505060016000555050565b600260005403611307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161055b565b6002600081905550818060000361134a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61135384611db8565b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054859290611388908490612835565b9250508190555082600260008282546113a19190612835565b909155506113e8905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168385611e1f565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260036020908152604091829020546002548351338152928301949094529181018790529285166060840152608083015260a08201527f624749dcbc3e908a465e807a4005f6ff77637b2f4fb4bafc79e36dc67c43f9569060c001611288565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020546109079083908361129b565b6060610ba083836040518060600160405280602781526020016128f960279139611e75565b6000600260005403611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161055b565b6002600055600654600160ff84161b16611574576040517fadcabdeb00000000000000000000000000000000000000000000000000000000815260ff8316600482015260240161055b565b600060048360ff168154811061158c5761158c612685565b90600052602060002090600a020190506115a68582611b2e565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005820160205260409020549150811561163f5773ffffffffffffffffffffffffffffffffffffffff851660009081526005820160205260408120819055600782018054849290611614908490612835565b9091555050600981015461163f9073ffffffffffffffffffffffffffffffffffffffff168584611e1f565b60098101546040805133815273ffffffffffffffffffffffffffffffffffffffff88811660208301528781168284015260ff87166060830152909216608083015260a08201849052517f668db5c1eca9fc9d61c658150ed33ea6dd7ccf0c809339169c4262c12cf53fd39181900360c00190a15060016000559392505050565b6000806116dc6116d28460000154611f9d565b8460010154611729565b90508015806116eb5750600254155b806116f857506002830154155b156117065750600092915050565b6002830154610ba090611721670de0b6b3a764000084612848565b60025461174a565b60008183106117415761173c8284612835565b610ba0565b50600092915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036117a257838281611798576117986127cb565b0492505050610ba0565b8084116117ae57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff16801561184b57919050565b6040517f7095bffc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f00000000000000000000000000000000000000000000000000000000000000001690637095bffc90602401602060405180830381865afa1580156118d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fb919061285f565b611949576040517fe63bc0be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260240161055b565b60015b6001805461195f9160ff90911690612881565b60ff168160ff16101561199557600654600160ff83161b1661198357809150611995565b8061198d816126e3565b91505061194c565b508060ff166000036119d3576040517f0d1470a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460ff8216036119ec576004805460010181556000525b600060048260ff1681548110611a0457611a04612685565b600091825260208220600a91909102016009810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87161790556008810180549193509091611a6a83612780565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8416179055611ad76006838154600160ff9092169190911b179055565b6040805173ffffffffffffffffffffffffffffffffffffffff8516815260ff841660208201527f8b19e0126c38fb29a20d80185dfa44abf853d0d22e1c9d4f9db32dc269f0bc4b910160405180910390a150919050565b6000611b39826116bf565b90508015611b8c5780826003016000828254611b5591906127b8565b9091555050600254611b73908290670de0b6b3a76400006001611fa9565b826007016000828254611b8691906127b8565b90915550505b8154611b9790611f9d565b600183015573ffffffffffffffffffffffffffffffffffffffff8316156108f757600882015473ffffffffffffffffffffffffffffffffffffffff8416600090815260068401602052604090205414611c345773ffffffffffffffffffffffffffffffffffffffff831660009081526004830160209081526040808320839055600585018252808320839055600885015460068601909252909120555b611c3e8383612006565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260058401602052604081208054909190611c759084906127b8565b9091555050600382015473ffffffffffffffffffffffffffffffffffffffff84166000908152600484016020526040902055505050565b6000611d0e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661204b9092919063ffffffff16565b8051909150156108f75780806020019051810190611d2c919061285f565b6108f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161055b565b60045460015b818160ff1610156108f757600654600160ff83161b1615611e0d57600060048260ff1681548110611df157611df1612685565b90600052602060002090600a02019050611e0b8482611b2e565b505b80611e17816126e3565b915050611dbe565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526108f79084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610e70565b606073ffffffffffffffffffffffffffffffffffffffff84163b611f1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161055b565b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051611f4391906128c9565b600060405180830381855af49150503d8060008114611f7e576040519150601f19603f3d011682016040523d82523d6000602084013e611f83565b606091505b5091509150611f93828286612062565b9695505050505050565b60006107cc82426120b5565b600080611fb786868661174a565b90506001836002811115611fcd57611fcd61289a565b148015611fea575060008480611fe557611fe56127cb565b868809115b15611ffd57611ffa6001826127b8565b90505b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360208181526040808420549285015460048601909252832054610ba09291610c1991611729565b606061205a84846000856120cb565b949350505050565b60608315612071575081610ba0565b8251156120815782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b91906128e5565b60008183106120c45781610ba0565b5090919050565b60608247101561215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161055b565b73ffffffffffffffffffffffffffffffffffffffff85163b6121db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161055b565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161220491906128c9565b60006040518083038185875af1925050503d8060008114612241576040519150601f19603f3d011682016040523d82523d6000602084013e612246565b606091505b5091509150612256828286612062565b979650505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461228557600080fd5b919050565b60006020828403121561229c57600080fd5b610ba082612261565b602080825282518282018190526000919060409081850190868401855b8281101561230b578151805173ffffffffffffffffffffffffffffffffffffffff90811686528782015188870152908601511685850152606090930192908501906001016122c2565b5091979650505050505050565b60008060006060848603121561232d57600080fd5b61233684612261565b95602085013595506040909401359392505050565b6000806040838503121561235e57600080fd5b61236783612261565b915061237560208401612261565b90509250929050565b60006020828403121561239057600080fd5b5035919050565b803560ff8116811461228557600080fd5b6000602082840312156123ba57600080fd5b610ba082612397565b60008083601f8401126123d557600080fd5b50813567ffffffffffffffff8111156123ed57600080fd5b6020830191508360208260051b850101111561240857600080fd5b9250929050565b60008060006040848603121561242457600080fd5b61242d84612261565b9250602084013567ffffffffffffffff81111561244957600080fd5b612455868287016123c3565b9497909650939450505050565b6000806040838503121561247557600080fd5b8235915061237560208401612261565b6000806020838503121561249857600080fd5b823567ffffffffffffffff8111156124af57600080fd5b6124bb858286016123c3565b90969095509350505050565b60005b838110156124e25781810151838201526020016124ca565b50506000910152565b600081518084526125038160208601602086016124c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156125a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526125968583516124eb565b9450928501929085019060010161255c565b5092979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561230b57815180518552868101518786015285810151868601526060808201519086015260809081015173ffffffffffffffffffffffffffffffffffffffff169085015260a090930192908501906001016125d2565b6000806040838503121561263f57600080fd5b61264883612261565b915061237560208401612397565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff81036126f9576126f96126b4565b60010192915050565b60006020828403121561271457600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261275057600080fd5b83018035915067ffffffffffffffff82111561276b57600080fd5b60200191503681900382131561240857600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127b1576127b16126b4565b5060010190565b808201808211156107cc576107cc6126b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612830577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107cc576107cc6126b4565b80820281158282048414176107cc576107cc6126b4565b60006020828403121561287157600080fd5b81518015158114610ba057600080fd5b60ff81811683821601908111156107cc576107cc6126b4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082516128db8184602087016124c7565b9190910192915050565b602081526000610ba060208301846124eb56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bf76dd457f868e41da97d28d929ba52f9df04cba340ba50fdad8d643bab866a564736f6c63430008110033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b0c19bc057d237815e65156271949cce6a12c3727d2f27652a917eff5c4f343164736f6c63430008110033000000000000000000000000eb6625d65a0553c9dbc64449e56abfe519bd9c9b