0 txs
1.3k calls
constructor
constructor()
functions
calculateShare
viewfunction calculateShare(address, address user) view returns (uint256)
calculateShareFromSurgeEvent
viewfunction calculateShareFromSurgeEvent(address, address user) view returns (uint256)
calculateTotalShare
viewfunction calculateTotalShare(address) view returns (uint256)
calculateTotalShareFromSurgeEvent
viewfunction calculateTotalShareFromSurgeEvent(address) view returns (uint256 totalShare)
compounder
viewfunction compounder() view returns (address)
delegatedOf
viewfunction delegatedOf(address user) view returns (bool isAllowed)
endLockupEventDepositTimestamp
viewfunction endLockupEventDepositTimestamp() view returns (uint256)
endLockupEventLockTimestamp
viewfunction endLockupEventLockTimestamp() view returns (uint256)
endSurgeEventDepositTimestamp
viewfunction endSurgeEventDepositTimestamp() view returns (uint256)
endSurgeEventLockTimestamp
viewfunction endSurgeEventLockTimestamp() view returns (uint256)
getRewarders
viewfunction getRewarders() view returns (address[])
getTierConfigs
viewfunction getTierConfigs() view returns (tuple[])
isLockupEventDepositPeriod
viewfunction isLockupEventDepositPeriod() view returns (bool isActive)
isLockupEventLockPeriod
viewfunction isLockupEventLockPeriod() view returns (bool isActive)
isRewarder
viewfunction isRewarder(address) view returns (bool)
isSurgeEventDepositPeriod
viewfunction isSurgeEventDepositPeriod() view returns (bool isActive)
isSurgeEventLockPeriod
viewfunction isSurgeEventLockPeriod() view returns (bool isActive)
maxLockupAmount
viewfunction maxLockupAmount() view returns (uint256)
owner
viewfunction owner() view returns (address)
rewarders
viewfunction rewarders(uint256) view returns (address)
stakingToken
viewfunction stakingToken() view returns (address)
startLockupEventDepositTimestamp
viewfunction startLockupEventDepositTimestamp() view returns (uint256)
startSurgeEventDepositTimestamp
viewfunction startSurgeEventDepositTimestamp() view returns (uint256)
surgeRewarder
viewfunction surgeRewarder() view returns (address)
tierConfigs
viewfunction tierConfigs(uint256) view returns (uint256 maxCap, uint256 multiplier)
totalAmountByTier
viewfunction totalAmountByTier(uint256) view returns (uint256)
totalLockupAmount
viewfunction totalLockupAmount() view returns (uint256)
totalQuoataByTier
viewfunction totalQuoataByTier(uint256) view returns (uint256)
userLockupAmount
viewfunction userLockupAmount(address user) view returns (uint256 hlpAmount)
userSurgeAmount
viewfunction userSurgeAmount(address) view returns (uint256)
userTokenAmount
viewfunction userTokenAmount(address) view returns (uint256)
userTokenAmountByTier
viewfunction userTokenAmountByTier(address, uint256) view returns (uint256)
addRewarders
nonpayablefunction addRewarders(address[] newRewarders)
delegate
nonpayablefunction delegate(bool allow)
deposit
nonpayablefunction deposit(address to, uint256 amount)
depositSurge
nonpayablefunction depositSurge(address to, uint256 amount)
harvest
nonpayablefunction harvest(address[] _rewarders)
harvestToCompounder
nonpayablefunction harvestToCompounder(address user, address[] _rewarders)
initialize
nonpayablefunction initialize(address _stakingToken, uint256 _startSurgeEventDepositTimestamp, uint256 _endSurgeEventDepositTimestamp, uint256 _endSurgeEventLockTimestamp)
joinLockup
nonpayablefunction joinLockup(uint256 amount)
moveStake
nonpayablefunction moveStake(address from, address to)
removeRewarder
nonpayablefunction removeRewarder(uint256 rewarderIndex)
renounceOwnership
nonpayablefunction renounceOwnership()
setCompounder
nonpayablefunction setCompounder(address compounder_)
setLockupConfigs
nonpayablefunction setLockupConfigs(uint256 _startLockupEventDepositTimestamp, uint256 _endLockupEventDepositTimestamp, uint256 _endLockupEventLockTimestamp, uint256 _maxLockupAmount)
setSurgeEventTime
nonpayablefunction setSurgeEventTime(uint256 _startSurgeEventDepositTimestamp, uint256 _endSurgeEventDepositTimestamp, uint256 _endSurgeEventLockTimestamp)
setSurgeRewarder
nonpayablefunction setSurgeRewarder(address _surgeRewarder)
setTierConfigs
nonpayablefunction setTierConfigs(tuple[] configs)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(uint256 amount)
events
Initialized
event Initialized(uint8 version)
LogAddRewarder
event LogAddRewarder(address newRewarder)
LogDelegate
event LogDelegate(address indexed user, address indexed delegate, bool isAllowed)
LogDeposit
event LogDeposit(address indexed caller, address indexed user, uint256 amount)
LogDepositLockup
event LogDepositLockup(address indexed caller, address indexed user, uint256 amount)
LogDepositTier
event LogDepositTier(uint256 indexed tier, address indexed caller, address indexed user, uint256 amount)
LogRemoveRewarder
event LogRemoveRewarder(uint256 indexed rewarderIndex, address indexed rewarder)
LogSetCompounder
event LogSetCompounder(address oldCompounder, address newCompounder)
LogSetSurgeRewarder
event LogSetSurgeRewarder(address oldRewarder, address newRewarder)
LogSetTierConfig
event LogSetTierConfig(uint256 indexed tier, (uint256 maxCap, uint256 multiplier) configs)
LogWithdraw
event LogWithdraw(address indexed caller, uint256 amount)
LogWithdrawLockup
event LogWithdrawLockup(address indexed caller, uint256 amount)
LogWithdrawTier
event LogWithdrawTier(uint256 indexed tier, address indexed caller, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
HLPStaking_BadAmount
error HLPStaking_BadAmount()
HLPStaking_DuplicateRewarder
error HLPStaking_DuplicateRewarder()
HLPStaking_InsufficientTokenAmount
error HLPStaking_InsufficientTokenAmount()
HLPStaking_LockupEventEndEarlierThanStart
error HLPStaking_LockupEventEndEarlierThanStart()
HLPStaking_LockupEventEnded
error HLPStaking_LockupEventEnded()
HLPStaking_LockupEventUnlockEarlierThanEnd
error HLPStaking_LockupEventUnlockEarlierThanEnd()
HLPStaking_MaxLockupAmount
error HLPStaking_MaxLockupAmount()
HLPStaking_NotCompounder
error HLPStaking_NotCompounder()
HLPStaking_NotRewarder
error HLPStaking_NotRewarder()
HLPStaking_SurgeEventAllTiersFilled
error HLPStaking_SurgeEventAllTiersFilled()
HLPStaking_SurgeEventAlreadyStarted
error HLPStaking_SurgeEventAlreadyStarted()
HLPStaking_SurgeEventEndEarlierThanStart
error HLPStaking_SurgeEventEndEarlierThanStart()
HLPStaking_SurgeEventEnded
error HLPStaking_SurgeEventEnded()
HLPStaking_SurgeEventUnlockEarlierThanEnd
error HLPStaking_SurgeEventUnlockEarlierThanEnd()
HLPStaking_SurgeRewarderNotSet
error HLPStaking_SurgeRewarderNotSet()
HLPStaking_WithdrawalNotAllowedDuringLockupEvent
error HLPStaking_WithdrawalNotAllowedDuringLockupEvent()
HLPStaking_WithdrawalNotAllowedDuringSurgeEvent
error HLPStaking_WithdrawalNotAllowedDuringSurgeEvent()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612bf580620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102465760003560e01c8063078128841461024b5780630b5ed0e9146102675780630eeb7b5714610270578063218c4da8146102855780632b7482fe146102985780632e1a7d4d146102b8578063309cd0eb146102cb5780633614c810146102e35780633c07f33e146102ee5780633d191cd71461030e57806340518bbf1461032357806344759cb71461032b57806347e7ef241461033e5780634aa2bb34146103515780634ec81af11461036457806350bb3c1c1461037757806350bcec4c14610380578063520eca4f14610393578063569f02fd1461039c578063578e7778146103bc57806370c1a061146103cf578063715018a6146103e257806372baca16146103ea57806372f702f3146103f357806382d9d6bf1461040657806385354762146104195780638ad981bd146104395780638af8198c146104425780638d51b16a1461046a5780638da5cb5b146104735780638e478cab1461047b578063943bc6ab1461049e578063993746b3146104c1578063b1f40339146104ca578063b36795b0146104dd578063c89d3460146104f0578063d61b0eaa14610503578063dc68245114610516578063e00e073214610529578063e39067e11461053c578063e473e2831461054f578063eaf8f3251461057a578063f1072f4d1461058f578063f2fde38b146105af578063f3603cca146105c2578063f6e334e5146105d5578063f751c70a146105e0578063fa2cc3c014610600578063fcf8770f14610613578063fee88cb614610626575b600080fd5b61025460755481565b6040519081526020015b60405180910390f35b61025460775481565b61028361027e366004612566565b610651565b005b61028361029336600461259b565b6107d1565b6102546102a63660046125c5565b60746020526000908152604090205481565b6102836102c6366004612566565b6107e1565b6102d3610822565b604051901515815260200161025e565b6079544211156102d3565b6102546102fc366004612566565b60686020526000908152604090205481565b61031661083d565b60405161025e91906125e7565b6102d361089f565b6102836103393660046125c5565b6108b8565b61028361034c36600461259b565b610929565b61028361035f366004612737565b610935565b61028361037236600461276b565b610a4c565b61025460785481565b61028361038e3660046127a4565b610bd9565b610254606f5481565b6072546103af906001600160a01b031681565b60405161025e919061284e565b6102836103ca366004612862565b610c8d565b6102546103dd366004612894565b610ceb565b610283610d6a565b61025460705481565b606d546103af906001600160a01b031681565b6102836104143660046128d5565b610d7e565b610254610427366004612566565b60696020526000908152604090205481565b61025460765481565b610455610450366004612566565b610df2565b6040805192835260208301919091520161025e565b61025460795481565b6103af610e20565b6102d36104893660046125c5565b606a6020526000908152604090205460ff1681565b6102d36104ac3660046125c5565b60736020526000908152604090205460ff1681565b610254606e5481565b6102836104d8366004612566565b610e2f565b6102836104eb366004612894565b610f13565b6102836104fe366004612737565b611540565b6102546105113660046125c5565b61154e565b6102836105243660046128f2565b6115b9565b6102836105373660046125c5565b611611565b61025461054a3660046125c5565b611682565b61025461055d36600461259b565b606660209081526000928352604080842090915290825290205481565b6105826116f4565b60405161025e919061291e565b61025461059d3660046125c5565b60676020526000908152604090205481565b6102836105bd3660046125c5565b611767565b6102836105d0366004612975565b6117dd565b6070544211156102d3565b6102546105ee3660046125c5565b60656020526000908152604090205481565b6071546103af906001600160a01b031681565b6103af610621366004612566565b611820565b610254610634366004612894565b6001600160a01b0316600090815260656020526040902054919050565b61065961184a565b6000606b828154811061066e5761066e6129c2565b600091825260209091200154606b80546001600160a01b03909216925090610698906001906129ee565b815481106106a8576106a86129c2565b600091825260209091200154606b80546001600160a01b0390921691849081106106d4576106d46129c2565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055606b8054829190610710906001906129ee565b81548110610720576107206129c2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550606b80548061075f5761075f612a01565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038316808352606a9091526040808320805460ff1916905551909184917f76f7fcf091f4b98542d165bfd928aa6c0d19821bc68cdc86c0170dc6bbc387319190a35050565b6107dd828260016118a9565b5050565b6107ea81611b42565b60405181815233907f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab7089060200160405180910390a250565b6000606e5442101580156108385750606f544211155b905090565b6060606b80548060200260200160405190810160405280929190818152602001828054801561089557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610877575b5050505050905090565b6000607754421015801561083857505060785442111590565b6108c061184a565b6072546040517fbb6a6ca0f55d1804469cac393a23727f929c86fd7160e930a6b355f1bb270f9b916108ff916001600160a01b03909116908490612a17565b60405180910390a1607280546001600160a01b0319166001600160a01b0392909216919091179055565b6107dd828260006118a9565b61093d61184a565b60005b81518110156107dd57600082828151811061095d5761095d6129c2565b6020908102919091018101516001600160a01b0381166000908152606a90925260409091205490915060ff16156109a757604051631fc9217b60e31b815260040160405180910390fd5b606b805460018082019092557fbd43cb8ece8cd1863bcd6082d65c5b0d25665b1ce17980f0da43c0ed545f98b40180546001600160a01b0319166001600160a01b0384169081179091556000908152606a602052604090819020805460ff1916909217909155517fca9879f7c869aaabe52872a2923d87ec6e2c369759989f2b4173e014baaa086790610a3b90839061284e565b60405180910390a150600101610940565b600054610100900460ff1615808015610a6c5750600054600160ff909116105b80610a8d5750610a7b306120c6565b158015610a8d575060005460ff166001145b610af55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610b18576000805461ff0019166101001790555b610b206120d5565b83831015610b415760405163058f934760e11b815260040160405180910390fd5b82821015610b62576040516310828d5f60e21b815260040160405180910390fd5b606d80546001600160a01b0319166001600160a01b038716179055606e849055606f83905560708290558015610bd2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610be161184a565b60005b81518110156107dd57606c828281518110610c0157610c016129c2565b6020908102919091018101518254600181810185556000948552938390208251600290920201908155910151910155815181907f4b48fefcabd0f00ca106f599dbe31ddffc45e843f679e423927549ad811b1eb390849083908110610c6857610c686129c2565b6020026020010151604051610c7d9190612a31565b60405180910390a2600101610be4565b610c9561184a565b83831015610cb65760405163430f137560e01b815260040160405180910390fd5b82821015610cd75760405163472e215160e11b815260040160405180910390fd5b607793909355607891909155607955607655565b600080805b606c54811015610d6057606c8181548110610d0d57610d0d6129c2565b60009182526020808320600160029093020191909101546001600160a01b0387168352606682526040808420858552909252912054610d4c9190612a48565b610d569083612a5f565b9150600101610cf0565b5090505b92915050565b610d7261184a565b610d7c6000612104565b565b336000908152607360205260409020805460ff1916821515179055610da1610e20565b6001600160a01b0316336001600160a01b03167faeb4c97740c376a3bf9e837dc0583c86fd6a3edce7b7c594389415de1b12028883604051610de7911515815260200190565b60405180910390a350565b606c8181548110610e0257600080fd5b60009182526020909120600290910201805460019091015490915082565b6033546001600160a01b031690565b33600090815260656020526040902054811115610e5f576040516349e3928d60e01b815260040160405180910390fd5b610e6761089f565b610e845760405163021e2abd60e31b815260040160405180910390fd5b60765481607554610e959190612a5f565b1115610eb457604051636a3b920d60e11b815260040160405180910390fd5b3360009081526074602052604081208054839290610ed3908490612a5f565b925050819055508060756000828254610eec9190612a5f565b909155505060405181815233908190600080516020612b8083398151915290602001610de7565b610f1b61184a565b6001600160a01b03821660009081526073602052604090205460ff168015610f5b57506001600160a01b03811660009081526073602052604090205460ff165b610f945760405162461bcd60e51b815260206004820152600a6024820152690859195b1959d85d195960b21b6044820152606401610aec565b6001600160a01b038216600090815260656020908152604080832054607490925282205490915b606b548110156110cd576000606b8281548110610fda57610fda6129c2565b6000918252602090912001546072546001600160a01b0391821692501681146110625760405163ccad973d60e01b81526001600160a01b0382169063ccad973d9061102b9089908890600401612a72565b600060405180830381600087803b15801561104557600080fd5b505af1158015611059573d6000803e3d6000fd5b505050506110c4565b60405163ccad973d60e01b81526001600160a01b0382169063ccad973d90611091908990600090600401612a72565b600060405180830381600087803b1580156110ab57600080fd5b505af11580156110bf573d6000803e3d6000fd5b505050505b50600101610fbb565b6001600160a01b038516600090815260656020908152604080832083905560749091528120819055606c546001600160401b0381111561110f5761110f612634565b604051908082528060200260200182016040528015611138578160200160208202803683370190505b506001600160a01b03808816600090815260676020526040812054607254939450929091611167911689610ceb565b6001600160a01b0389166000908152606760205260409020549091501561128b57600093505b606c54841015611212576001600160a01b0388166000908152606660209081526040808320878452909152902054801561120657808486815181106111d4576111d46129c2565b6020908102919091018101919091526001600160a01b038a166000908152606682526040808220888352909252908120555b8460010194505061118d565b6001600160a01b0380891660009081526067602052604080822091909155607254905163ccad973d60e01b815291169063ccad973d90611258908b908590600401612a72565b600060405180830381600087803b15801561127257600080fd5b505af1158015611286573d6000803e3d6000fd5b505050505b600093505b606b548410156113a5576000606b85815481106112af576112af6129c2565b6000918252602090912001546072546001600160a01b03918216925016811461133757604051630afe546360e21b81526001600160a01b03821690632bf9518c90611300908b908b90600401612a72565b600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b50505050611399565b604051630afe546360e21b81526001600160a01b03821690632bf9518c90611366908b90600090600401612a72565b600060405180830381600087803b15801561138057600080fd5b505af1158015611394573d6000803e3d6000fd5b505050505b84600101945050611290565b6001600160a01b038716600090815260656020526040812080548892906113cd908490612a5f565b90915550506001600160a01b038716600090815260746020526040812080548792906113fa908490612a5f565b909155505081156114a557600093505b82518410156114a5576000838581518110611427576114276129c2565b6020026020010151111561149a57828481518110611447576114476129c2565b602002602001015160666000896001600160a01b03166001600160a01b03168152602001908152602001600020600086815260200190815260200160002060008282546114949190612a5f565b90915550505b83600101935061140a565b6001600160a01b038716600090815260676020526040812080548492906114cd908490612a5f565b9091555050607254604051630afe546360e21b81526001600160a01b0390911690632bf9518c90611504908a908590600401612a72565b600060405180830381600087803b15801561151e57600080fd5b505af1158015611532573d6000803e3d6000fd5b505050505050505050505050565b61154b333383612156565b50565b6000805b606c548110156115b357606c818154811061156f5761156f6129c2565b906000526020600020906002020160010154606960008381526020019081526020016000205461159f9190612a48565b6115a99083612a5f565b9150600101611552565b50919050565b6115c161184a565b828210156115e25760405163058f934760e11b815260040160405180910390fd5b81811015611603576040516310828d5f60e21b815260040160405180910390fd5b606e92909255606f55607055565b61161961184a565b6071546040517fe97abd239615891a24b2f6413d269045fc0b00aaeaa38a6113143c8f53bf6f9291611658916001600160a01b03909116908490612a17565b60405180910390a1607180546001600160a01b0319166001600160a01b0392909216919091179055565b606d546040516370a0823160e01b81526000916001600160a01b0316906370a08231906116b390309060040161284e565b602060405180830381865afa1580156116d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190612a8b565b6060606c805480602002602001604051908101604052809291908181526020016000905b8282101561175e57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611718565b50505050905090565b61176f61184a565b6001600160a01b0381166117d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aec565b61154b81612104565b6071546001600160a01b0316331461180857604051636a01edd560e11b815260040160405180910390fd5b6071546107dd9083906001600160a01b031683612156565b606b818154811061183057600080fd5b6000918252602090912001546001600160a01b0316905081565b33611853610e20565b6001600160a01b031614610d7c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aec565b6072546001600160a01b03166118d25760405163621b93b960e01b815260040160405180910390fd5b60005b606b548110156119e7576000606b82815481106118f4576118f46129c2565b6000918252602090912001546072546001600160a01b03918216925016811461197c57604051630afe546360e21b81526001600160a01b03821690632bf9518c906119459088908890600401612a72565b600060405180830381600087803b15801561195f57600080fd5b505af1158015611973573d6000803e3d6000fd5b505050506119de565b604051630afe546360e21b81526001600160a01b03821690632bf9518c906119ab908890600090600401612a72565b600060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b505050505b506001016118d5565b506001600160a01b03831660009081526065602052604081208054849290611a10908490612a5f565b90915550508015611ae557611a2361089f565b611a405760405163021e2abd60e31b815260040160405180910390fd5b60765482607554611a519190612a5f565b1115611a7057604051636a3b920d60e11b815260040160405180910390fd5b6001600160a01b03831660009081526074602052604081208054849290611a98908490612a5f565b925050819055508160756000828254611ab19190612a5f565b90915550506040518281526001600160a01b038416903390600080516020612b808339815191529060200160405180910390a35b606d54611afd906001600160a01b0316333085612241565b6040518281526001600160a01b0384169033907f5c8d1f77b6233deba47b516a690497af4c7f1be42a768e331832cb02b3400d6b9060200160405180910390a3505050565b6072546001600160a01b0316611b6b5760405163621b93b960e01b815260040160405180910390fd5b33600090815260656020526040902054811115611b9b5760405163139b8bad60e11b815260040160405180910390fd5b3360009081526067602052604090205415801590611bdd575033600090815260676020908152604080832054606590925290912054611bda91906129ee565b81115b8015611beb57506070544211155b15611c09576040516303a9f19f60e21b815260040160405180910390fd5b60005b606b54811015611d1e576000606b8281548110611c2b57611c2b6129c2565b6000918252602090912001546072546001600160a01b039182169250168114611cb35760405163ccad973d60e01b81526001600160a01b0382169063ccad973d90611c7c9033908790600401612a72565b600060405180830381600087803b158015611c9657600080fd5b505af1158015611caa573d6000803e3d6000fd5b50505050611d15565b60405163ccad973d60e01b81526001600160a01b0382169063ccad973d90611ce2903390600090600401612a72565b600060405180830381600087803b158015611cfc57600080fd5b505af1158015611d10573d6000803e3d6000fd5b505050505b50600101611c0c565b503360009081526065602052604081208054839290611d3e9084906129ee565b9091555050336000908152607460209081526040808320546065909252909120541015611e0357336000908152606560209081526040808320546074909252822054611d8a91906129ee565b33600090815260746020526040812080549293508392909190611dae9084906129ee565b925050819055508060756000828254611dc791906129ee565b909155505060405181815233907f8d3a4251f8a03820f949c7e2bc746f71c5db69c9ad8326cb7e410263c64484ee9060200160405180910390a2505b3360009081526067602090815260408083205460659092529091205410156120af57336000908152606560209081526040808320546067909252822054611e4a91906129ee565b9050611e5860705442111590565b158015611e7357503360009081526067602052604090205415155b156120ad57607254600090611e91906001600160a01b031633610ceb565b606c54909150600090611ea6906001906129ee565b90505b33600090815260666020908152604080832084845290915290205480156120095783811115611f775760405184815233908390600080516020612ba08339815191529060200160405180910390a333600090815260666020908152604080832085845290915281208054869290611f219084906129ee565b90915550503360009081526067602052604081208054869290611f459084906129ee565b909155505060008281526069602052604081208054869290611f689084906129ee565b90915550600094506120099050565b60405181815233908390600080516020612ba08339815191529060200160405180910390a33360008181526066602090815260408083208684528252808320839055928252606790529081208054839290611fd39084906129ee565b909155505060008281526069602052604081208054839290611ff69084906129ee565b90915550612006905081856129ee565b93505b836000036120175750612021565b5060001901611ea9565b5060725460009061203b906001600160a01b031633610ceb565b61204590836129ee565b60725460405163ccad973d60e01b81529192506001600160a01b03169063ccad973d906120789033908590600401612a72565b600060405180830381600087803b15801561209257600080fd5b505af11580156120a6573d6000803e3d6000fd5b5050505050505b505b606d546107ea906001600160a01b031633836122b2565b6001600160a01b03163b151590565b600054610100900460ff166120fc5760405162461bcd60e51b8152600401610aec90612aa4565b610d7c6122d6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b805160005b81811015610bd257606a6000848381518110612179576121796129c2565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166121bd57604051635ad5c24f60e11b815260040160405180910390fd5b8281815181106121cf576121cf6129c2565b60200260200101516001600160a01b031663cb75a6c286866040518363ffffffff1660e01b8152600401612204929190612a17565b600060405180830381600087803b15801561221e57600080fd5b505af1158015612232573d6000803e3d6000fd5b5050505080600101905061215b565b6040516001600160a01b03808516602483015283166044820152606481018290526122ac9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612306565b50505050565b6122d18363a9059cbb60e01b8484604051602401612275929190612a72565b505050565b600054610100900460ff166122fd5760405162461bcd60e51b8152600401610aec90612aa4565b610d7c33612104565b600061235b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123d89092919063ffffffff16565b8051909150156122d157808060200190518101906123799190612aef565b6122d15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610aec565b60606123e784846000856123ef565b949350505050565b6060824710156124505760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610aec565b600080866001600160a01b0316858760405161246c9190612b30565b60006040518083038185875af1925050503d80600081146124a9576040519150601f19603f3d011682016040523d82523d6000602084013e6124ae565b606091505b50915091506124bf878383876124ca565b979650505050505050565b60608315612537578251600003612530576124e4856120c6565b6125305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610aec565b50816123e7565b6123e7838381511561254c5781518083602001fd5b8060405162461bcd60e51b8152600401610aec9190612b4c565b60006020828403121561257857600080fd5b5035919050565b80356001600160a01b038116811461259657600080fd5b919050565b600080604083850312156125ae57600080fd5b6125b78361257f565b946020939093013593505050565b6000602082840312156125d757600080fd5b6125e08261257f565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156126285783516001600160a01b031683529284019291840191600101612603565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561266c5761266c612634565b60405290565b604051601f8201601f191681016001600160401b038111828210171561269a5761269a612634565b604052919050565b60006001600160401b038211156126bb576126bb612634565b5060051b60200190565b600082601f8301126126d657600080fd5b813560206126eb6126e6836126a2565b612672565b82815260059290921b8401810191818101908684111561270a57600080fd5b8286015b8481101561272c5761271f8161257f565b835291830191830161270e565b509695505050505050565b60006020828403121561274957600080fd5b81356001600160401b0381111561275f57600080fd5b6123e7848285016126c5565b6000806000806080858703121561278157600080fd5b61278a8561257f565b966020860135965060408601359560600135945092505050565b600060208083850312156127b757600080fd5b82356001600160401b038111156127cd57600080fd5b8301601f810185136127de57600080fd5b80356127ec6126e6826126a2565b81815260069190911b8201830190838101908783111561280b57600080fd5b928401925b828410156124bf57604084890312156128295760008081fd5b61283161264a565b843581528585013586820152825260409093019290840190612810565b6001600160a01b0391909116815260200190565b6000806000806080858703121561287857600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156128a757600080fd5b6128b08361257f565b91506128be6020840161257f565b90509250929050565b801515811461154b57600080fd5b6000602082840312156128e757600080fd5b81356125e0816128c7565b60008060006060848603121561290757600080fd5b505081359360208301359350604090920135919050565b602080825282518282018190526000919060409081850190868401855b828110156129685761295884835180518252602090810151910152565b928401929085019060010161293b565b5091979650505050505050565b6000806040838503121561298857600080fd5b6129918361257f565b915060208301356001600160401b038111156129ac57600080fd5b6129b8858286016126c5565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610d6457610d646129d8565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0392831681529116602082015260400190565b815181526020808301519082015260408101610d64565b8082028115828204841417610d6457610d646129d8565b80820180821115610d6457610d646129d8565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a9d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612b0157600080fd5b81516125e0816128c7565b60005b83811015612b27578181015183820152602001612b0f565b50506000910152565b60008251612b42818460208701612b0c565b9190910192915050565b6020815260008251806020840152612b6b816040850160208701612b0c565b601f01601f1916919091016040019291505056fe1cb3d30a8d91ed45c2e510f808b7ce02eb9414f8609a1b527d42ec804ff591372eff90bd2ba36425dcc86f297ded1622ebd6d6fc7c593256f1af4d3b718b7530a264697066735822122007b110e9071eea7662673bb32dc54e7f89aa7e2d9f9e88819f92cf271557a90664736f6c63430008120033