45 txs
47 calls
constructor
constructor(address _messageBus)
functions
getBatchStakeWeightByTrackId
viewfunction getBatchStakeWeightByTrackId(uint24 trackId, uint80 timestamp, uint256 start, uint256 count) view returns (tuple[])
getTotalStakeWeight
viewfunction getTotalStakeWeight(uint24 trackId, uint80 timestamp) view returns (uint192)
getUserStakeWeight
viewfunction getUserStakeWeight(uint24 trackId, address user, uint80 timestamp) view returns (uint192)
hasEmergencyWithdrawn
viewfunction hasEmergencyWithdrawn(uint24, address) view returns (bool)
messageBus
viewfunction messageBus() view returns (address)
numTrackStakers
viewfunction numTrackStakers(uint24) view returns (uint256)
owner
viewfunction owner() view returns (address)
trackActiveRollOvers
viewfunction trackActiveRollOvers(uint24, address, uint24) view returns (uint192)
trackCheckpointCounts
viewfunction trackCheckpointCounts(uint24) view returns (uint32)
trackCheckpoints
viewfunction trackCheckpoints(uint24, uint32) view returns (uint80 timestamp, uint104 totalStaked, uint192 totalStakeWeight, uint24 numFinishedSales)
trackCount
viewfunction trackCount() view returns (uint24)
trackDisabled
viewfunction trackDisabled(uint24) view returns (bool)
trackFinishedSaleTimestamps
viewfunction trackFinishedSaleTimestamps(uint24, uint24) view returns (uint80)
trackMaxStakes
viewfunction trackMaxStakes(uint24) view returns (uint104)
tracks
viewfunction tracks(uint256) view returns (string name, address stakeToken, uint24 weightAccrualRate, uint64 passiveRolloverRate, uint64 activeRolloverRate, uint104 maxTotalStake)
trackStakers
viewfunction trackStakers(uint24, uint256) view returns (address)
trackTotalActiveRollOvers
viewfunction trackTotalActiveRollOvers(uint24, uint24) view returns (uint192)
userCheckpointCounts
viewfunction userCheckpointCounts(uint24, address) view returns (uint32)
userCheckpoints
viewfunction userCheckpoints(uint24, address, uint32) view returns (uint80 timestamp, uint104 staked, uint192 stakeWeight, uint24 numFinishedSales)
activeRollOver
nonpayablefunction activeRollOver(uint24 trackId)
addTrack
nonpayablefunction addTrack(string name, address stakeToken, uint24 _weightAccrualRate, uint64 _passiveRolloverRate, uint64 _activeRolloverRate, uint104 _maxTotalStake)
bumpSaleCounter
nonpayablefunction bumpSaleCounter(uint24 trackId)
disableTrack
nonpayablefunction disableTrack(uint24 trackId)
ownerWithdraw
nonpayablefunction ownerWithdraw(address stakeToken)
renounceOwnership
nonpayablefunction renounceOwnership()
stake
nonpayablefunction stake(uint24 trackId, uint104 amount)
syncTotalWeight
payablefunction syncTotalWeight(address receiver, uint24 trackId, uint80 timestamp, uint64 dstChainId) payable
syncUserWeight
payablefunction syncUserWeight(address receiver, address[] users, uint24 trackId, uint80 timestamp, uint64 dstChainId) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ActiveRollOver
event ActiveRollOver(uint24 indexed trackId, address indexed user)
AddTrack
event AddTrack(string indexed name, address indexed token)
AddTrackCheckpoint
event AddTrackCheckpoint(uint24 indexed trackId, uint80 timestamp)
AddUserCheckpoint
event AddUserCheckpoint(uint24 indexed trackId, uint80 timestamp)
BumpSaleCounter
event BumpSaleCounter(uint24 indexed trackId, uint32 newCount)
DisableTrack
event DisableTrack(uint24 indexed trackId)
EmergencyWithdraw
event EmergencyWithdraw(uint24 indexed trackId, address indexed sender, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Stake
event Stake(uint24 indexed trackId, address indexed user, uint104 amount)
SyncTotalWeight
event SyncTotalWeight(address receiver, uint24 srcTrackId, uint80 timestamp, uint64 dstChainId, uint24 dstTrackId)
SyncUserWeight
event SyncUserWeight(address receiver, uint24 srcTrackId, uint80 timestamp, uint64 dstChainId, uint24 dstTrackId)
Unstake
event Unstake(uint24 indexed trackId, address indexed user, uint104 amount)
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162004698380380620046988339810160408190526200003491620000a5565b6200003f3362000055565b600180556001600160a01b0316608052620000d7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000b857600080fd5b81516001600160a01b0381168114620000d057600080fd5b9392505050565b6080516145896200010f600039600081816105fb015281816109e101528181610abe01528181610f59015261103601526145896000f3fe6080604052600436106101c15760003560e01c80637e14a790116100f7578063ab35678c11610095578063ec331ee811610064578063ec331ee814610711578063f2fde38b14610731578063f9bfaa7d14610751578063fe9d47471461077157600080fd5b8063ab35678c1461064f578063ad01671614610673578063b33f517a146106a0578063d4799a06146106e157600080fd5b80638da5cb5b116100d15780638da5cb5b1461059757806392721276146105c9578063a1a227fa146105e9578063a2e345861461061d57600080fd5b80637e14a790146104fd57806383e64d941461053057806385e942091461057757600080fd5b80632f385bcb116101645780635301f3ad1161013e5780635301f3ad14610470578063715018a6146104a8578063770c5c12146104bd5780637db85246146104dd57600080fd5b80632f385bcb146103bc5780632f4fe7821461040f5780633fceccbe1461042257600080fd5b8063185242b0116101a0578063185242b0146102815780631ee93a3a1461029457806325cab7f9146102df57806326df01e41461039c57600080fd5b8062c40584146101c65780630a29ffd9146102245780630ee4d19714610246575b600080fd5b3480156101d257600080fd5b506102076101e1366004613a5e565b60026020908152600092835260408084209091529082529020546001600160501b031681565b6040516001600160501b0390911681526020015b60405180910390f35b34801561023057600080fd5b5061024461023f366004613a91565b6107e3565b005b34801561025257600080fd5b50610273610261366004613a91565b60086020526000908152604090205481565b60405190815260200161021b565b61024461028f366004613aef565b610833565b3480156102a057600080fd5b506102cf6102af366004613b45565b600760209081526000928352604080842090915290825290205460ff1681565b604051901515815260200161021b565b3480156102eb57600080fd5b506103576102fa366004613b90565b600e602090815260009384526040808520825292845282842090528252902080546001909101546001600160501b03821691600160501b90046001600160681b0316906001600160c01b03811690600160c01b900462ffffff1684565b604080516001600160501b0390951685526001600160681b0390931660208501526001600160c01b039091169183019190915262ffffff16606082015260800161021b565b3480156103a857600080fd5b506102446103b7366004613bf7565b610b78565b3480156103c857600080fd5b506103fa6103d7366004613b45565b600d60209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff909116815260200161021b565b61024461041d366004613cba565b610d87565b34801561042e57600080fd5b5061045861043d366004613a91565b600c602052600090815260409020546001600160681b031681565b6040516001600160681b03909116815260200161021b565b34801561047c57600080fd5b5061049061048b366004613d72565b6110f1565b6040516001600160c01b03909116815260200161021b565b3480156104b457600080fd5b5061024461121d565b3480156104c957600080fd5b506102446104d8366004613d9c565b611231565b3480156104e957600080fd5b506104906104f8366004613dc6565b6114ab565b34801561050957600080fd5b506103fa610518366004613a91565b600a6020526000908152604090205463ffffffff1681565b34801561053c57600080fd5b5061049061054b366004613e02565b60036020908152600093845260408085208252928452828420905282529020546001600160c01b031681565b34801561058357600080fd5b50610244610592366004613a91565b6119f3565b3480156105a357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161021b565b3480156105d557600080fd5b506105b16105e4366004613e3e565b611c2f565b3480156105f557600080fd5b506105b17f000000000000000000000000000000000000000000000000000000000000000081565b34801561062957600080fd5b5061063d610638366004613e68565b611c67565b60405161021b96959493929190613ed9565b34801561065b57600080fd5b5060055460405162ffffff909116815260200161021b565b34801561067f57600080fd5b5061069361068e366004613f36565b611d68565b60405161021b9190613f78565b3480156106ac57600080fd5b506104906106bb366004613a5e565b60046020908152600092835260408084209091529082529020546001600160c01b031681565b3480156106ed57600080fd5b506102cf6106fc366004613a91565b60066020526000908152604090205460ff1681565b34801561071d57600080fd5b5061024461072c366004613a91565b611f56565b34801561073d57600080fd5b5061024461074c366004613fd9565b612003565b34801561075d57600080fd5b5061024461076c366004613fd9565b61207c565b34801561077d57600080fd5b5061035761078c366004613ff6565b600b602090815260009283526040808420909152908252902080546001909101546001600160501b03821691600160501b90046001600160681b0316906001600160c01b03811690600160c01b900462ffffff1684565b6107eb612114565b62ffffff8116600081815260066020526040808220805460ff19166001179055517fcb27b9acd764424cf6cdaa672c3a35243af86cbf4ecb53ad48a9212610e5781b9190a250565b6002600154141561085f5760405162461bcd60e51b815260040161085690614020565b60405180910390fd5b600260015562ffffff831660009081526006602052604090205460ff16156108ba5760405162461bcd60e51b815260206004820152600e60248201526d1d1c9858dac8191a5cd8589b195960921b6044820152606401610856565b6040805160018082528183019092526000916020808301908036833701905050905033816000815181106108f0576108f061406d565b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905061093785856110f1565b8160008151811061094a5761094a61406d565b60200260200101906001600160c01b031690816001600160c01b03168152505060006040518060a00160405280848152602001866001600160501b0316815260200160018081111561099e5761099e614083565b81526020018762ffffff168152602001838152506040516020016109c291906140ff565b60408051601f198184030181529082905263299aee5160e11b825291507f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b03831690635335dca290610a239086906004016141a5565b60206040518083038186803b158015610a3b57600080fd5b505afa158015610a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7391906141b8565b905080341015610ab65760405162461bcd60e51b815260206004820152600e60248201526d4e6f7420656e6f7567682066656560901b6044820152606401610856565b610ae38987857f00000000000000000000000000000000000000000000000000000000000000008561216e565b610aed81346141e7565b15610b2a57336108fc610b0083346141e7565b6040518115909202916000818181858888f19350505050158015610b28573d6000803e3d6000fd5b505b7f26f761805bf5b48d09abfb7b15d908bb69dd697594afda09ffae497db2a3df4a898989898c604051610b619594939291906141fe565b60405180910390a150506001805550505050505050565b610b80612114565b62ffffff8416610bc65760405162461bcd60e51b815260206004820152601160248201527006163637275616c2072617465206973203607c1b6044820152606401610856565b6040805160e06020601f8a01819004028201810190925260c081018881526005928291908b908b908190850183828082843760009201829052509385525050506001600160a01b03891660208084019190915262ffffff891660408401526001600160401b038089166060850152871660808401526001600160681b03861660a090930192909252835460018101855593815281902082518051939460030290910192610c7692849201906139ad565b50602082015160018083018054604086015160608701516001600160401b03908116600160b81b0267ffffffffffffffff60b81b1962ffffff909316600160a01b026001600160b81b03199094166001600160a01b0390971696909617929092171693909317905560808401516002909301805460a0909501516001600160681b0316600160401b026001600160a81b0319909516939092169290921792909217909155600554610d3491610d2a916141e7565b60008060006121d9565b846001600160a01b03168787604051610d4e929190614243565b604051908190038120907f1e50e9757b681e9008a480e25488ddd40b47b5295b68ae5f6d9c7204377e5b3b90600090a350505050505050565b60026001541415610daa5760405162461bcd60e51b815260040161085690614020565b600260015562ffffff831660009081526006602052604090205460ff1615610e065760405162461bcd60e51b815260206004820152600f60248201526e1d1c9858dac808591a5cd8589b1959608a1b6044820152606401610856565b6000846001600160401b03811115610e2057610e20614057565b604051908082528060200260200182016040528015610e49578160200160208202803683370190505b50905060005b85811015610ec457610e8885888884818110610e6d57610e6d61406d565b9050602002016020810190610e829190613fd9565b866114ab565b828281518110610e9a57610e9a61406d565b6001600160c01b039092166020928302919091019091015280610ebc81614253565b915050610e4f565b506040805160c060208802808301820190935260a0820188815260009383928b918b9182919086019084908082843760009201829052509385525050506001600160501b038716602083015260409091019081526020018662ffffff16815260200183815250604051602001610f3a91906140ff565b60408051601f198184030181529082905263299aee5160e11b825291507f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b03831690635335dca290610f9b9086906004016141a5565b60206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906141b8565b90508034101561102e5760405162461bcd60e51b815260206004820152600e60248201526d4e6f7420656e6f7567682066656560901b6044820152606401610856565b61105b8a86857f00000000000000000000000000000000000000000000000000000000000000008561216e565b61106581346141e7565b156110a257336108fc61107883346141e7565b6040518115909202916000818181858888f193505050501580156110a0573d6000803e3d6000fd5b505b7f63f7370c5ec881103dc49f9b20da0dd67baa69c60e154fafa9f9b914fa1982858a8888888b6040516110d99594939291906141fe565b60405180910390a15050600180555050505050505050565b600042826001600160501b0316111561111c5760405162461bcd60e51b81526004016108569061426e565b62ffffff831660009081526006602052604090205460ff161561114157506000611217565b600061114d8484612928565b80519091506001600160501b0316611169576000915050611217565b8051600090611178908561429c565b9050600060058662ffffff16815481106111945761119461406d565b906000526020600020906003020190506000670de0b6b3a764000084602001516001600160681b03168360010160149054906101000a900462ffffff1662ffffff16856001600160501b03166111ea91906142c4565b6111f491906142c4565b6111fe9190614309565b9050808460400151611210919061432f565b9450505050505b92915050565b611225612114565b61122f6000612c2e565b565b600260015414156112545760405162461bcd60e51b815260040161085690614020565b60026001556001600160681b03811661129d5760405162461bcd60e51b815260206004820152600b60248201526a0616d6f756e7420697320360ac1b6044820152606401610856565b600060058362ffffff16815481106112b7576112b761406d565b6000918252602080832062ffffff8716845260069091526040909220546003909102909101915060ff1680156113235760405162461bcd60e51b81526020600482015260116024820152701d1c9858dac81a5cc8191a5cd8589b1959607a1b6044820152606401610856565b6113463360018401546001600160a01b031690306001600160681b038716612c7e565b61135284846001612cef565b6113608484600160006121d9565b62ffffff84166000908152600b60209081526040808320600a90925282205482906113939060019063ffffffff1661435a565b63ffffffff16815260208082019290925260409081016000908120825160808101845281546001600160501b03811682526001600160681b03600160501b90910481168287018190526001909301546001600160c01b0381168387015262ffffff600160c01b909104811660608401528b168452600c90955292909120549193509116101561145b5760208181015162ffffff87166000908152600c909252604090912080546cffffffffffffffffffffffffff19166001600160681b039092169190911790555b6040516001600160681b0385168152339062ffffff8716907fc7de557a4862000809abc99c50fd0b30c35beb37a010dae4335462b336827fd39060200160405180910390a3505060018055505050565b600042826001600160501b031611156114d65760405162461bcd60e51b81526004016108569061426e565b62ffffff841660009081526006602052604090205460ff16156114fb575060006119ec565b62ffffff84166000908152600d602090815260408083206001600160a01b038716845290915290205463ffffffff16806115395760009150506119ec565b60006115468686866133b9565b80519091506001600160501b0316611563576000925050506119ec565b600061156f8786612928565b90506000826060015182606001516115879190614377565b9050600060058962ffffff16815481106115a3576115a361406d565b90600052602060002090600302016040518060c00160405290816000820180546115cc90614393565b80601f01602080910402602001604051908101604052809291908181526020018280546115f890614393565b80156116455780601f1061161a57610100808354040283529160200191611645565b820191906000526020600020905b81548152906001019060200180831161162857829003601f168201915b505050918352505060018201546001600160a01b038116602083015262ffffff600160a01b8204811660408401526001600160401b03600160b81b9092048216606084015260029093015490811660808301526001600160681b03600160401b9091041660a09091015290915060009083166117335784516000906116ca908a61429c565b9050670de0b6b3a764000086602001516001600160681b0316846040015162ffffff16836001600160501b031661170191906142c4565b61170b91906142c4565b6117159190614309565b8660400151611724919061432f565b97506119ec9650505050505050565b506040840151845160005b8462ffffff168162ffffff16101561193b5762ffffff8c166000908152600260205260408120606089015184919083906117799086906143ce565b62ffffff1681526020810191909152604001600020546117a291906001600160501b031661429c565b9050670de0b6b3a764000088602001516001600160681b0316866040015162ffffff16836001600160501b03166117d991906142c4565b6117e391906142c4565b6117ed9190614309565b6117f7908561432f565b93506000600360008f62ffffff1662ffffff16815260200190815260200160002060008e6001600160a01b03166001600160a01b031681526020019081526020016000206000848b6060015161184d91906143ce565b62ffffff16815260208101919091526040016000205460608701516001600160c01b039091169150670de0b6b3a7640000906001600160401b031661189283886143ec565b61189c91906142c4565b6118a69190614309565b6080870151670de0b6b3a7640000906118c8906001600160401b0316846142c4565b6118d29190614309565b6118dc919061432f565b62ffffff8f16600090815260026020526040812060608c0151929750916119049086906143ce565b62ffffff1681526020810191909152604001600020546001600160501b0316935082915061193390508161440c565b91505061173e565b5062ffffff8b1660009081526002602052604081206060870151829061196390600190614377565b62ffffff16815260208101919091526040016000205461198c906001600160501b03168b61429c565b9050670de0b6b3a764000087602001516001600160681b0316856040015162ffffff16836001600160501b03166119c391906142c4565b6119cd91906142c4565b6119d79190614309565b6119e1908461432f565b985050505050505050505b9392505050565b6119ff81600080612cef565b62ffffff81166000818152600e6020908152604080832033808552908352818420948452600d83528184209084529091528120549091908290611a4a9060019063ffffffff1661435a565b63ffffffff16815260208082019290925260409081016000908120825160808101845281546001600160501b0381168252600160501b90046001600160681b0316818601526001909101546001600160c01b0380821683860152600160c01b90910462ffffff9081166060840181905290881680855260038752858520338652875285852082865287528585205490855260048752858520828652909652938320805492965093948116939291611b03918591166143ec565b92506101000a8154816001600160c01b0302191690836001600160c01b031602179055508160400151600360008562ffffff1662ffffff1681526020019081526020016000206000611b523390565b6001600160a01b031681526020808201929092526040908101600090812062ffffff86811680845291855283832080546001600160c01b0319166001600160c01b03978816179055878401519089168352600485528383209183529352908120805492939092611bc49185911661432f565b92506101000a8154816001600160c01b0302191690836001600160c01b03160217905550611bef3390565b6001600160a01b03168362ffffff167f2ad99c2ef3fb067831abd0a8620f3b2ddda1e7be89576a286edea06e048cf3dc60405160405180910390a3505050565b60096020528160005260406000208181548110611c4b57600080fd5b6000918252602090912001546001600160a01b03169150829050565b60058181548110611c7757600080fd5b9060005260206000209060030201600091509050806000018054611c9a90614393565b80601f0160208091040260200160405190810160405280929190818152602001828054611cc690614393565b8015611d135780601f10611ce857610100808354040283529160200191611d13565b820191906000526020600020905b815481529060010190602001808311611cf657829003601f168201915b505050600184015460029094015492936001600160a01b0381169362ffffff600160a01b83041693506001600160401b03600160b81b90920482169250908116906001600160681b03600160401b9091041686565b606042846001600160501b03161115611d935760405162461bcd60e51b81526004016108569061426e565b60008211611df55760405162461bcd60e51b815260206004820152602960248201527f636f756e7420706172616d65746572206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610856565b62ffffff851660009081526008602052604081205490611e15848661442f565b90506000818310611e265781611e28565b825b90506000611e3687836141e7565b6001600160401b03811115611e4d57611e4d614057565b604051908082528060200260200182016040528015611e9257816020015b6040805180820190915260008082526020820152815260200190600190039081611e6b5790505b509050865b82811015611f495762ffffff8a166000908152600960205260408120805483908110611ec557611ec561406d565b60009182526020822001546001600160a01b03169150611ee68c838d6114ab565b604080518082019091526001600160a01b03841681526001600160c01b038216602082015290915084611f198c866141e7565b81518110611f2957611f2961406d565b602002602001018190525050508080611f4190614253565b915050611e97565b5098975050505050505050565b611f5e612114565b62ffffff81166000908152600b60209081526040808320600a9092528220548290611f919060019063ffffffff1661435a565b63ffffffff1681526020808201929092526040908101600090812060019081015462ffffff878116845260028652848420600160c01b909204168084529452918120805469ffffffffffffffffffff1916426001600160501b0316179055919250611fff91849181906121d9565b5050565b61200b612114565b6001600160a01b0381166120705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610856565b61207981612c2e565b50565b612084612114565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b1580156120c657600080fd5b505afa1580156120da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fe91906141b8565b9050611fff6001600160a01b0383163383613725565b6000546001600160a01b0316331461122f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610856565b604051634f9e72ad60e11b81526001600160a01b03831690639f3ce55a9083906121a090899089908990600401614447565b6000604051808303818588803b1580156121b957600080fd5b505af11580156121cd573d6000803e3d6000fd5b50505050505050505050565b600060058562ffffff16815481106121f3576121f361406d565b6000918252602080832062ffffff89168452600a9091526040909220546003909102909101915063ffffffff1680612341576040518060800160405280426001600160501b03168152602001866001600160681b0316815260200160006001600160c01b031681526020018461226a57600061226d565b60015b60ff16905262ffffff8781166000818152600b60209081526040808320838052825280832086518154888501516001600160681b0316600160501b026001600160b81b03199091166001600160501b03909216919091171781558682015160019091018054606090980151909616600160c01b026001600160d81b03199097166001600160c01b039091161795909517909355908152600a909152908120805463ffffffff169161231d83614483565b91906101000a81548163ffffffff021916908363ffffffff160217905550506128dd565b62ffffff86166000908152600b602052604081208161236160018561435a565b63ffffffff1681526020808201929092526040908101600090812062ffffff8b1682526006909352205490915060ff1680156123e55785156123e55760405162461bcd60e51b815260206004820152601a60248201527f64697361626c65643a2063616e6e6f7420616464207374616b650000000000006044820152606401610856565b81546001600160501b03428116911611156124395760405162461bcd60e51b815260206004820152601460248201527374696d657374616d702023206f766572666c6f7760601b6044820152606401610856565b8154600090612451906001600160501b03164261429c565b83546001870154919250600091670de0b6b3a764000091600160501b90046001600160681b03169061249890600160a01b900462ffffff166001600160501b0386166142c4565b6124a291906142c4565b6124ac9190614309565b60018501549091506000906124cb9083906001600160c01b031661432f565b905087156125e35762ffffff808c1660009081526004602090815260408083206001808b0154600160c01b90049095168452909152902054908801546001600160c01b0390911690670de0b6b3a764000090600160b81b90046001600160401b031661253783856143ec565b61254191906142c4565b61254b9190614309565b6002890154670de0b6b3a76400009061256d906001600160401b0316846142c4565b6125779190614309565b612581919061432f565b91508b62ffffff167fcd058f3f37dac45b4ea419da18091e06ea38756c9996298ca517599007e777c48760010160189054906101000a900462ffffff1660016125ca91906143ce565b60405162ffffff909116815260200160405180910390a2505b6001600160501b0383166127145788612618578454612613908b90600160501b90046001600160681b031661449d565b612635565b8454612635908b90600160501b90046001600160681b03166144bd565b85546001600160681b0391909116600160501b02600160501b600160b81b0319909116178555836126665780612692565b60018501546001600160c01b038083169116106126835780612692565b60018501546001600160c01b03165b6001860180546001600160c01b0319166001600160c01b0392909216919091179055876126cf576001850154600160c01b900462ffffff166126ef565b8460010160189054906101000a900462ffffff1660016126ef91906143ce565b8560010160186101000a81548162ffffff021916908362ffffff1602179055506128d7565b6040518060800160405280426001600160501b031681526020018a612755578654612750908d90600160501b90046001600160681b031661449d565b612772565b8654612772908d90600160501b90046001600160681b03166144bd565b6001600160681b031681526020018561278b57826127b7565b60018701546001600160c01b038085169116106127a857826127b7565b60018701546001600160c01b03165b6001600160c01b03168152602001896127e0576001870154600160c01b900462ffffff16612800565b8660010160189054906101000a900462ffffff16600161280091906143ce565b62ffffff9081169091528c81166000818152600b6020908152604080832063ffffffff808e16855290835281842087518154898601516001600160681b0316600160501b026001600160b81b03199091166001600160501b03909216919091171781558783015160019091018054606090990151909716600160c01b026001600160d81b03199098166001600160c01b039091161796909617909455918152600a909152908120805490921691906128b783614483565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b50505050505b6040516001600160501b034216815262ffffff8716907fbae21b9ce1f492a8affaa603b56fe9c921dceb290c3a3c11815c26b6e6e67fc39060200160405180910390a2505050505050565b60408051608081018252600080825260208083018290528284018290526060830182905262ffffff86168252600a815283822054600b909152928120919263ffffffff16916001600160501b0385169161298360018561435a565b63ffffffff1681526020810191909152604001600020546001600160501b031611612a3d5762ffffff84166000908152600b60205260408120906129c860018461435a565b63ffffffff1681526020808201929092526040908101600020815160808101835281546001600160501b0381168252600160501b90046001600160681b031693810193909352600101546001600160c01b03811691830191909152600160c01b900462ffffff16606082015291506112179050565b62ffffff84166000908152600b602090815260408083208380529091529020546001600160501b0380851691161115612a9b575050604080516080810182526000808252602082018190529181018290526060810191909152611217565b600080612aa960018461435a565b90505b8163ffffffff168163ffffffff161115612baa5760006002612ace848461435a565b612ad891906144df565b612ae2908361435a565b62ffffff8881166000908152600b6020908152604080832063ffffffff86168452825291829020825160808101845281546001600160501b03808216808452600160501b9092046001600160681b0316948301949094526001909201546001600160c01b03811694820194909452600160c01b90930490931660608301529293509188161415612b785794506112179350505050565b80516001600160501b0380891691161015612b9557819350612ba3565b612ba060018361435a565b92505b5050612aac565b5062ffffff8086166000908152600b6020908152604080832063ffffffff909516835293815290839020835160808101855281546001600160501b03811682526001600160681b03600160501b9091041692810192909252600101546001600160c01b03811693820193909352600160c01b90920416606082015291506112179050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052612ce99085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261375a565b50505050565b600060058462ffffff1681548110612d0957612d0961406d565b6000918252602080832062ffffff88168452600d90915260408320600390920201925081612d343390565b6001600160a01b03168152602080820192909252604090810160009081205462ffffff89168252600a845282822054600b90945291812063ffffffff9283169450929091169181612d8660018561435a565b63ffffffff90811682526020808301939093526040918201600020825160808101845281546001600160501b0381168252600160501b90046001600160681b031694810194909452600101546001600160c01b03811692840192909252600160c01b90910462ffffff1660608301529091508316612ff85760028401546001600160681b03600160401b90910481169087161115612e5c5760405162461bcd60e51b8152602060048201526013602482015272065786365656473207374616b696e672063617606c1b6044820152606401610856565b62ffffff8716600081815260096020908152604080832080546001810182559084528284200180546001600160a01b0319163317905592825260089052908120805491612ea883614253565b91905055506040518060800160405280426001600160501b03168152602001876001600160681b0316815260200160006001600160c01b03168152602001826060015162ffffff16815250600e60008962ffffff1662ffffff1681526020019081526020016000206000612f193390565b6001600160a01b0316815260208082019290925260409081016000908120818052835281902083518154938501516001600160681b0316600160501b026001600160b81b03199094166001600160501b03909116179290921782558201516001918201805460609094015162ffffff16600160c01b026001600160d81b03199094166001600160c01b039092169190911792909217909155612fbc9084906144f6565b62ffffff88166000908152600d602090815260408083203384529091529020805463ffffffff191663ffffffff9290921691909117905561336d565b62ffffff87166000908152600e6020908152604080832033845290915281208161302360018761435a565b63ffffffff16815260208101919091526040016000206002860154909150600160401b90046001600160681b031686613078578154613073908990600160501b90046001600160681b031661449d565b613095565b8154613095908990600160501b90046001600160681b03166144bd565b6001600160681b031611156130e25760405162461bcd60e51b8152602060048201526013602482015272065786365656473207374616b696e672063617606c1b6044820152606401610856565b80546001600160501b03428116911611156131365760405162461bcd60e51b815260206004820152601460248201527374696d657374616d702023206f766572666c6f7760601b6044820152606401610856565b8054426001600160501b03908116911614156131e4578561317357805461316e908890600160501b90046001600160681b031661449d565b613190565b8054613190908890600160501b90046001600160681b03166144bd565b81546001600160681b0391909116600160501b02600160501b600160b81b0319909116178155606082015160018201805462ffffff909216600160c01b0262ffffff60c01b1990921691909117905561336b565b6040518060800160405280426001600160501b0316815260200187613225578254613220908a90600160501b90046001600160681b031661449d565b613242565b8254613242908a90600160501b90046001600160681b03166144bd565b6001600160681b0316815260200161325b8a33426114ab565b6001600160c01b03168152606084015162ffffff9081166020928301528a166000908152600e9091526040812090336001600160a01b031681526020808201929092526040908101600090812063ffffffff89168252835281902083518154938501516001600160681b0316600160501b026001600160b81b03199094166001600160501b03909116179290921782558201516001918201805460609094015162ffffff16600160c01b026001600160d81b03199094166001600160c01b0390921691909117929092179091556133339085906144f6565b62ffffff89166000908152600d602090815260408083203384529091529020805463ffffffff191663ffffffff929092169190911790555b505b6040516001600160501b034216815262ffffff8816907f452e6119384e406a318edbd63efae9316d44abef87b7b0d4a557e935b0d7f2e59060200160405180910390a250505050505050565b60408051608081018252600080825260208083018290528284018290526060830182905262ffffff8716808352600d82528483206001600160a01b03881680855290835285842054918452600e8352858420908452909152928120919263ffffffff16916001600160501b0385169161343360018561435a565b63ffffffff1681526020810191909152604001600020546001600160501b0316116135015762ffffff85166000908152600e602090815260408083206001600160a01b038816845290915281209061348c60018461435a565b63ffffffff1681526020808201929092526040908101600020815160808101835281546001600160501b0381168252600160501b90046001600160681b031693810193909352600101546001600160c01b03811691830191909152600160c01b900462ffffff16606082015291506119ec9050565b62ffffff85166000908152600e602090815260408083206001600160a01b038816845282528083208380529091529020546001600160501b03808516911611156135705750506040805160808101825260008082526020820181905291810182905260608101919091526119ec565b60008061357e60018461435a565b90505b8163ffffffff168163ffffffff16111561369057600060026135a3848461435a565b6135ad91906144df565b6135b7908361435a565b62ffffff8981166000908152600e602090815260408083206001600160a01b038d168452825280832063ffffffff86168452825291829020825160808101845281546001600160501b03808216808452600160501b9092046001600160681b0316948301949094526001909201546001600160c01b03811694820194909452600160c01b9093049093166060830152929350918816141561365e5794506119ec9350505050565b80516001600160501b038089169116101561367b57819350613689565b61368660018361435a565b92505b5050613581565b5062ffffff8087166000908152600e602090815260408083206001600160a01b038a168452825280832063ffffffff909516835293815290839020835160808101855281546001600160501b03811682526001600160681b03600160501b9091041692810192909252600101546001600160c01b03811693820193909352600160c01b90920416606082015291506119ec9050565b6040516001600160a01b03831660248201526044810182905261375590849063a9059cbb60e01b90606401612cb2565b505050565b60006137af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661382c9092919063ffffffff16565b80519091501561375557808060200190518101906137cd9190614515565b6137555760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610856565b606061383b8484600085613843565b949350505050565b6060824710156138a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610856565b6001600160a01b0385163b6138fb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610856565b600080866001600160a01b031685876040516139179190614537565b60006040518083038185875af1925050503d8060008114613954576040519150601f19603f3d011682016040523d82523d6000602084013e613959565b606091505b5091509150613969828286613974565b979650505050505050565b606083156139835750816119ec565b8251156139935782518084602001fd5b8160405162461bcd60e51b815260040161085691906141a5565b8280546139b990614393565b90600052602060002090601f0160209004810192826139db5760008555613a21565b82601f106139f457805160ff1916838001178555613a21565b82800160010185558215613a21579182015b82811115613a21578251825591602001919060010190613a06565b50613a2d929150613a31565b5090565b5b80821115613a2d5760008155600101613a32565b803562ffffff81168114613a5957600080fd5b919050565b60008060408385031215613a7157600080fd5b613a7a83613a46565b9150613a8860208401613a46565b90509250929050565b600060208284031215613aa357600080fd5b6119ec82613a46565b6001600160a01b038116811461207957600080fd5b80356001600160501b0381168114613a5957600080fd5b80356001600160401b0381168114613a5957600080fd5b60008060008060808587031215613b0557600080fd5b8435613b1081613aac565b9350613b1e60208601613a46565b9250613b2c60408601613ac1565b9150613b3a60608601613ad8565b905092959194509250565b60008060408385031215613b5857600080fd5b613b6183613a46565b91506020830135613b7181613aac565b809150509250929050565b803563ffffffff81168114613a5957600080fd5b600080600060608486031215613ba557600080fd5b613bae84613a46565b92506020840135613bbe81613aac565b9150613bcc60408501613b7c565b90509250925092565b8035613a5981613aac565b80356001600160681b0381168114613a5957600080fd5b600080600080600080600060c0888a031215613c1257600080fd5b87356001600160401b0380821115613c2957600080fd5b818a0191508a601f830112613c3d57600080fd5b813581811115613c4c57600080fd5b8b6020828501011115613c5e57600080fd5b602092830199509750613c74918a019050613bd5565b9450613c8260408901613a46565b9350613c9060608901613ad8565b9250613c9e60808901613ad8565b9150613cac60a08901613be0565b905092959891949750929550565b60008060008060008060a08789031215613cd357600080fd5b8635613cde81613aac565b955060208701356001600160401b0380821115613cfa57600080fd5b818901915089601f830112613d0e57600080fd5b813581811115613d1d57600080fd5b8a60208260051b8501011115613d3257600080fd5b602083019750809650505050613d4a60408801613a46565b9250613d5860608801613ac1565b9150613d6660808801613ad8565b90509295509295509295565b60008060408385031215613d8557600080fd5b613d8e83613a46565b9150613a8860208401613ac1565b60008060408385031215613daf57600080fd5b613db883613a46565b9150613a8860208401613be0565b600080600060608486031215613ddb57600080fd5b613de484613a46565b92506020840135613df481613aac565b9150613bcc60408501613ac1565b600080600060608486031215613e1757600080fd5b613e2084613a46565b92506020840135613e3081613aac565b9150613bcc60408501613a46565b60008060408385031215613e5157600080fd5b613e5a83613a46565b946020939093013593505050565b600060208284031215613e7a57600080fd5b5035919050565b60005b83811015613e9c578181015183820152602001613e84565b83811115612ce95750506000910152565b60008151808452613ec5816020860160208601613e81565b601f01601f19169290920160200192915050565b60c081526000613eec60c0830189613ead565b6001600160a01b039790971660208301525062ffffff9490941660408501526001600160401b039283166060850152911660808301526001600160681b031660a090910152919050565b60008060008060808587031215613f4c57600080fd5b613f5585613a46565b9350613f6360208601613ac1565b93969395505050506040820135916060013590565b602080825282518282018190526000919060409081850190868401855b82811015613fcc57815180516001600160a01b031685528601516001600160c01b0316868501529284019290850190600101613f95565b5091979650505050505050565b600060208284031215613feb57600080fd5b81356119ec81613aac565b6000806040838503121561400957600080fd5b61401283613a46565b9150613a8860208401613b7c565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600281106140b757634e487b7160e01b600052602160045260246000fd5b9052565b600081518084526020808501945080840160005b838110156140f45781516001600160c01b0316875295820195908201906001016140cf565b509495945050505050565b6020808252825160a083830152805160c0840181905260009291820190839060e08601905b8083101561414d5783516001600160a01b03168252928401926001929092019190840190614124565b50928601516001600160501b038116604087015292604087015193506141766060870185614099565b606087015162ffffff8116608088015293506080870151868203601f190160a0880152935061121081856140bb565b6020815260006119ec6020830184613ead565b6000602082840312156141ca57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156141f9576141f96141d1565b500390565b6001600160a01b0395909516855262ffffff93841660208601526001600160501b039290921660408501526001600160401b0316606084015216608082015260a00190565b8183823760009101908152919050565b6000600019821415614267576142676141d1565b5060010190565b6020808252601490820152730e8d2dacae6e8c2dae0404640e8dede40d0d2ced60631b604082015260600190565b60006001600160501b03838116908316818110156142bc576142bc6141d1565b039392505050565b60006001600160c01b03828116848216811515828404821116156142ea576142ea6141d1565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160c01b0383811680614323576143236142f3565b92169190910492915050565b60006001600160c01b03828116848216808303821115614351576143516141d1565b01949350505050565b600063ffffffff838116908316818110156142bc576142bc6141d1565b600062ffffff838116908316818110156142bc576142bc6141d1565b600181811c908216806143a757607f821691505b602082108114156143c857634e487b7160e01b600052602260045260246000fd5b50919050565b600062ffffff808316818516808303821115614351576143516141d1565b60006001600160c01b03838116908316818110156142bc576142bc6141d1565b600062ffffff80831681811415614425576144256141d1565b6001019392505050565b60008219821115614442576144426141d1565b500190565b6001600160a01b03841681526001600160401b038316602082015260606040820181905260009061447a90830184613ead565b95945050505050565b600063ffffffff80831681811415614425576144256141d1565b60006001600160681b03838116908316818110156142bc576142bc6141d1565b60006001600160681b03808316818516808303821115614351576143516141d1565b600063ffffffff80841680614323576143236142f3565b600063ffffffff808316818516808303821115614351576143516141d1565b60006020828403121561452757600080fd5b815180151581146119ec57600080fd5b60008251614549818460208701613e81565b919091019291505056fea26469706673582212201316d4f6f6480d2cbdc24aafb451a9a1925b51a991f27c16b7228adffeaf390964736f6c634300080900330000000000000000000000000000000000000000000000000000000000000000