271 txs
1.8k calls
constructor
constructor(address _factory, address _usdc, address _weth, address _aqtisToken)
functions
aqtisToken
viewfunction aqtisToken() view returns (address)
autoCompound
viewfunction autoCompound(address, address) view returns (bool)
claimCooldown
viewfunction claimCooldown() view returns (uint256)
delegatedRewardsReceivers
viewfunction delegatedRewardsReceivers(address, address) view returns (address)
estimateValueUSDC
viewfunction estimateValueUSDC(address lst, uint256 amount) view returns (uint256)
estimateValueWETH
viewfunction estimateValueWETH(address lst, uint256 amount) view returns (uint256)
factory
viewfunction factory() view returns (address)
getBonusRewardsFor
viewfunction getBonusRewardsFor(address lst, address user) view returns (uint256)
getLSTs
viewfunction getLSTs() view returns (address[])
getLSTSettings
viewfunction getLSTSettings(address lst) view returns (tuple)
getRewardsFor
viewfunction getRewardsFor(address lst, address user) view returns (tuple)
getRewardsSettings
viewfunction getRewardsSettings(address lst) view returns (tuple)
isAutoCompounding
viewfunction isAutoCompounding(address lst, address user) view returns (bool)
isRewardActive
viewfunction isRewardActive(address lst) view returns (bool)
lastClaimTime
viewfunction lastClaimTime(address, address) view returns (uint256)
owner
viewfunction owner() view returns (address)
Q64
viewfunction Q64() view returns (uint256)
usdc
viewfunction usdc() view returns (address)
usdcPairs
viewfunction usdcPairs(address) view returns (address)
weth
viewfunction weth() view returns (address)
wethPairs
viewfunction wethPairs(address) view returns (address)
addLST
nonpayablefunction addLST(address lst)
claimRewards
nonpayablefunction claimRewards(address lst)
claimRewardsFor
nonpayablefunction claimRewardsFor(address lst, address user)
delegateRewards
nonpayablefunction delegateRewards(address lst, address receiver)
initializeBonusProgram
nonpayablefunction initializeBonusProgram(address lst, uint256 activeTime, uint256 startTime, uint256 aqtisAmount, uint256 maxClaim)
removeLST
nonpayablefunction removeLST(address lst)
renounceOwnership
nonpayablefunction renounceOwnership()
setAutoCompound
nonpayablefunction setAutoCompound(address lst, bool compound)
setClaimCooldown
nonpayablefunction setClaimCooldown(uint256 cooldown)
setMinOutFractionQ64
nonpayablefunction setMinOutFractionQ64(uint256 fraction)
setTimeWeightedAveragePeriod
nonpayablefunction setTimeWeightedAveragePeriod(uint24 period)
setUsdcPair
nonpayablefunction setUsdcPair(address lst, address pair)
setWethPair
nonpayablefunction setWethPair(address lst, address pair)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes _data)
updateFactory
nonpayablefunction updateFactory(address _factory)
withdrawERC20
nonpayablefunction withdrawERC20(address token, uint256 amount)
withdrawETH
nonpayablefunction withdrawETH(uint256 amount)
events
AutoCompoundClaimed
event AutoCompoundClaimed(address indexed lst, address indexed user, address quoteToken, uint256 amount, uint256 quoteAmount)
AutocompoundSet
event AutocompoundSet(address indexed lst, address indexed user, bool compound)
ClaimCooldownSet
event ClaimCooldownSet(uint256 oldCooldown, uint256 newCooldown)
FactoryUpdated
event FactoryUpdated(address oldFactory, address newFactory)
LSTAdded
event LSTAdded(address indexed lst)
LSTRemoved
event LSTRemoved(address indexed lst)
LSTUsdcPairSet
event LSTUsdcPairSet(address indexed lst, address pair)
LSTWethPairSet
event LSTWethPairSet(address indexed lst, address pair)
MinOutFractionSet
event MinOutFractionSet(uint256 oldFraction, uint256 newFraction)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardsClaimed
event RewardsClaimed(address indexed lst, address indexed user, address token, uint256 amount)
RewardsDelegated
event RewardsDelegated(address indexed lst, address indexed user, address receiver)
RewardsProgramEnded
event RewardsProgramEnded(address lst, uint256 activeTime, uint256 startTime, uint256 totalRewards, uint256 maxClaim)
RewardsProgramInitialized
event RewardsProgramInitialized(address lst, uint256 activeTime, uint256 startTime, uint256 totalRewards, uint256 maxClaim)
SwapExecuted
event SwapExecuted(address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
TimeWeightedAveragePeriodSet
event TimeWeightedAveragePeriodSet(uint24 oldPeriod, uint24 newPeriod)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
T
error T()
creation bytecode
0x60e06040526000805462ffffff60a01b191660e160a31b17905560646200003168010000000000000000606162000140565b6200003d91906200016c565b6001553480156200004d57600080fd5b5060405162004d3c38038062004d3c8339810160408190526200007091620001ac565b6001600160a01b0383811660805282811660a052600080546001600160a01b03191691861691909117905560016004553380620000c757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d281620000ee565b506001600160a01b031660c052505061a8c06007555062000209565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80820281158282048414176200016657634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200018a57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b0381168114620001a757600080fd5b919050565b60008060008060808587031215620001c357600080fd5b620001ce856200018f565b9350620001de602086016200018f565b9250620001ee604086016200018f565b9150620001fe606086016200018f565b905092959194509250565b60805160a05160c051614a62620002da600039600081816108530152611d3c01526000818161047c0152818161137b01528181611e8401528181611f200152818161291a015281816129a501528181612a2101528181612e1c01528181612e980152818161360f0152818161384301526140ec0152600081816104280152818161135501528181611738015281816117d401528181612b4201528181612bba01528181612bef01528181612d6501528181612d9a015281816136c70152818161378101526140c60152614a626000f3fe6080604052600436106102a45760003560e01c8063734570ee1161016e578063be0dcf17116100cb578063ef5cfb8c1161007f578063f2fde38b11610064578063f2fde38b146108b5578063fa461e33146108d5578063fdea3657146108f557600080fd5b8063ef5cfb8c14610875578063f14210a61461089557600080fd5b8063d30c1a34116100b0578063d30c1a3414610801578063d9f165dc14610821578063e891a8b41461084157600080fd5b8063be0dcf17146107ab578063c45a0155146107e157600080fd5b80639be2665711610122578063a1db978211610107578063a1db978214610738578063b17a24f7146104be578063b9c0c6c61461075857600080fd5b80639be26657146106d7578063a16633401461071857600080fd5b80638da5cb5b116101535780638da5cb5b1461063857806391920f30146106565780639ac29ced1461068e57600080fd5b8063734570ee146105dd57806385d6882a146105fd57600080fd5b80633e413bee1161021c57806359c9eb90116101d0578063601c2669116101b5578063601c26691461058857806362839552146105a8578063715018a6146105c857600080fd5b806359c9eb90146105205780635d7896871461054057600080fd5b80633fc8cef3116102015780633fc8cef31461046a57806340b2fbc41461049e5780634f7dffd5146104be57600080fd5b80633e413bee146104165780633e47afcc1461044a57600080fd5b8063217a371e1161027357806333fca1871161025857806333fca187146103b95780633aa36ad7146103d65780633dd61bfa146103f657600080fd5b8063217a371e1461036b578063298e27691461038b57600080fd5b806303ce3098146102b057806308437d15146102d2578063105f0fe8146102fd5780632137ed141461034b57600080fd5b366102ab57005b600080fd5b3480156102bc57600080fd5b506102d06102cb3660046141f5565b61090b565b005b3480156102de57600080fd5b506102e7610956565b6040516102f49190614212565b60405180910390f35b34801561030957600080fd5b506103336103183660046141f5565b6003602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102f4565b34801561035757600080fd5b506102d061036636600461425f565b610967565b34801561037757600080fd5b506102d0610386366004614298565b610a2e565b34801561039757600080fd5b506103ab6103a63660046142bd565b610abb565b6040519081526020016102f4565b3480156103c557600080fd5b506103ab6801000000000000000081565b3480156103e257600080fd5b506102d06103f13660046142e9565b610ad2565b34801561040257600080fd5b506103ab61041136600461425f565b610b1f565b34801561042257600080fd5b506103337f000000000000000000000000000000000000000000000000000000000000000081565b34801561045657600080fd5b506103ab6104653660046142bd565b610b2b565b34801561047657600080fd5b506103337f000000000000000000000000000000000000000000000000000000000000000081565b3480156104aa57600080fd5b506102d06104b93660046141f5565b610b39565b3480156104ca57600080fd5b506104de6104d93660046141f5565b610b84565b6040516102f49190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b34801561052c57600080fd5b506102d061053b3660046142e9565b610c0e565b34801561054c57600080fd5b5061057861055b3660046141f5565b6001600160a01b0316600090815260066020526040902054421090565b60405190151581526020016102f4565b34801561059457600080fd5b506102d06105a3366004614310565b610c57565b3480156105b457600080fd5b506102d06105c336600461425f565b610d0c565b3480156105d457600080fd5b506102d0610db4565b3480156105e957600080fd5b506102d06105f836600461433e565b610dc8565b34801561060957600080fd5b5061057861061836600461425f565b600c60209081526000928352604080842090915290825290205460ff1681565b34801561064457600080fd5b506005546001600160a01b0316610333565b34801561066257600080fd5b506103ab61067136600461425f565b600860209081526000928352604080842090915290825290205481565b34801561069a57600080fd5b506105786106a936600461425f565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205460ff1690565b3480156106e357600080fd5b506103336106f236600461425f565b600b6020908152600092835260408084209091529082529020546001600160a01b031681565b34801561072457600080fd5b506102d061073336600461425f565b610e35565b34801561074457600080fd5b506102d06107533660046142bd565b610e43565b34801561076457600080fd5b5061077861077336600461425f565b610e71565b6040516102f491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b3480156107b757600080fd5b506103336107c63660046141f5565b6002602052600090815260409020546001600160a01b031681565b3480156107ed57600080fd5b50600054610333906001600160a01b031681565b34801561080d57600080fd5b506102d061081c36600461425f565b610f06565b34801561082d57600080fd5b506102d061083c3660046141f5565b610fa5565b34801561084d57600080fd5b506103337f000000000000000000000000000000000000000000000000000000000000000081565b34801561088157600080fd5b506102d06108903660046141f5565b611012565b3480156108a157600080fd5b506102d06108b03660046142e9565b61101c565b3480156108c157600080fd5b506102d06108d03660046141f5565b61103f565b3480156108e157600080fd5b506102d06108f0366004614382565b611093565b34801561090157600080fd5b506103ab60075481565b6109136111ff565b61091e600982611245565b506040516001600160a01b038216907f329f3447748e4ad270a07142ee2263864137809fc0a98fb44f55439e1d16c2ee90600090a250565b6060610962600961125a565b905090565b8161097360098261126e565b6109bc5760405162461bcd60e51b81526020600482015260156024820152741314d5081859191c995cdcc81b9bdd08199bdd5b99605a1b60448201526064015b60405180910390fd5b6001600160a01b038381166000818152600b60209081526040808320338085529083529281902080546001600160a01b03191695881695861790555193845290927f561c68e35ffbc9cea1da71b23152e341f7a0ff864112d43bb3906dced0dea81c91015b60405180910390a3505050565b610a366111ff565b6000546040805162ffffff600160a01b9093048316815291831660208301527f0a8864eca1731d51a19ac12612cfd3db634f61cc369445e91f1e0d6a07a06b76910160405180910390a1600080547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff16600160a01b62ffffff84160217905550565b50565b6000610ac983836001611290565b90505b92915050565b610ada6111ff565b60015460408051918252602082018390527fba8db96484fc046829d5e94f94fcb9e53ea98593599ca62206c27ef6cfdb5991910160405180910390a1610ab881600155565b6000610ac983836113dc565b6000610ac983836000611290565b610b416111ff565b610b4c600982611721565b506040516001600160a01b038216907fa030892515ee18fc982528189f12296c35762d55115b61da90208fc240b39d5b90600090a250565b610bb66040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b0316600090815260066020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b610c166111ff565b60075460408051918252602082018390527f1643929f15226556503afde8215b1313ee727b02e0004d15fa4747280432d574910160405180910390a1600755565b81610c6360098261126e565b610ca75760405162461bcd60e51b81526020600482015260156024820152741314d5081859191c995cdcc81b9bdd08199bdd5b99605a1b60448201526064016109b3565b6001600160a01b0383166000818152600c602090815260408083203380855290835292819020805460ff191687151590811790915590519081529192917fada064ab477323b74c2557ddbf7e4df6ceaebf34a3f84ae06f583698ccd633249101610a21565b610d146111ff565b81610d2060098261126e565b610d645760405162461bcd60e51b81526020600482015260156024820152741314d5081859191c995cdcc81b9bdd08199bdd5b99605a1b60448201526064016109b3565b610d6e8383611736565b6040516001600160a01b0383811682528416907f41658f019ba6155cd8e4b6c83ef539b04bb10902382940ad9b377e1bf04e5331906020015b60405180910390a2505050565b610dbc6111ff565b610dc66000611a12565b565b610dd06111ff565b84610ddc60098261126e565b610e205760405162461bcd60e51b81526020600482015260156024820152741314d5081859191c995cdcc81b9bdd08199bdd5b99605a1b60448201526064016109b3565b610e2d8686868686611a64565b505050505050565b610e3f8282611b19565b5050565b610e4b6111ff565b610e3f610e606005546001600160a01b031690565b6001600160a01b0384169083611e16565b610e9c6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040516311305c1f60e11b81526001600160a01b038381166004830152841690632260b83e90602401608060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac99190614449565b610f0e6111ff565b81610f1a60098261126e565b610f5e5760405162461bcd60e51b81526020600482015260156024820152741314d5081859191c995cdcc81b9bdd08199bdd5b99605a1b60448201526064016109b3565b610f688383611e82565b6040516001600160a01b0383811682528416907f284c8dca34178c31fb43e157bcd55678f4a81a484bb088e982c9f56afd3a94f990602001610da7565b610fad6111ff565b600054604080516001600160a01b03928316815291831660208301527f333c7678baf16017cf31e1d2f90143a62aab01a67a0807f6836a4304ceabb555910160405180910390a1600080546001600160a01b0319166001600160a01b03831617905550565b610ab88133611b19565b6110246111ff565b610ab86110396005546001600160a01b031690565b8261215e565b6110476111ff565b6001600160a01b03811661108a576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016109b3565b610ab881611a12565b60006110a1828401846144af565b80516001600160a01b03908116600090815260036020526040902054919250163314806110e9575080516001600160a01b039081166000908152600260205260409020541633145b6111355760405162461bcd60e51b815260206004820152601760248201527f4c5354537761703a20496e76616c69642073656e64657200000000000000000060448201526064016109b3565b8051602082015160008080891361116157836001600160a01b0316836001600160a01b03161088611178565b826001600160a01b0316846001600160a01b031610895b9150915084604001518111156111d05760405162461bcd60e51b815260206004820152601a60248201527f4c5354537761703a204578636565646564206d6178206d696e7400000000000060448201526064016109b3565b81156111e6576111e18433836121f5565b6111f4565b8293506111f48433836121f5565b505050505050505050565b6005546001600160a01b03163314610dc6576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016109b3565b6000610ac9836001600160a01b038416612273565b60606000611267836122c2565b9392505050565b6001600160a01b03811660009081526001830160205260408120541515610ac9565b600080808360018111156112a6576112a661451a565b146112cb576001600160a01b03808616600090815260036020526040902054166112e7565b6001600160a01b03808616600090815260026020526040902054165b90506001600160a01b0381166113395760405162461bcd60e51b81526020600482015260176024820152761314d514ddd85c0e8814185a5c881b9bdd08199bdd5b99604a1b60448201526064016109b3565b60008084600181111561134e5761134e61451a565b14611379577f000000000000000000000000000000000000000000000000000000000000000061139b565b7f00000000000000000000000000000000000000000000000000000000000000005b60008054919250906113ba908490600160a01b900462ffffff1661231e565b5090506113d1816113ca8861258c565b848a6125e6565b979650505050505050565b6001600160a01b038216600090815260066020526040812060030154810361140657506000610acc565b6001600160a01b03831660009081526006602052604090206001015442101561143157506000610acc565b6040517fb77cf9c60000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526000919085169063b77cf9c690602401602060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b89190614530565b6001600160a01b038516600090815260066020526040902080546001909101549192506114e49161455f565b81106114f4576000915050610acc565b60006115008242614572565b6040517fe34735800000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291925060009187169063e347358090602401602060405180830381865afa158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190614530565b90508060000361159f5760009350505050610acc565b6040517ffed1280b0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526000919088169063fed1280b90602401602060405180830381865afa158015611602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116269190614530565b6001600160a01b038816600090815260066020526040812060030154919250906116508585614585565b61165a9190614585565b6001600160a01b038916600090815260066020526040812054919250906116819084614585565b9050600061168f82846145b2565b6001600160a01b038b166000908152600660205260409020600401549091508111156116d357506001600160a01b0389166000908152600660205260409020600401545b6001600160a01b038a1660009081526006602052604090206002015481111561171457506001600160a01b0389166000908152600660205260409020600201545b9998505050505050505050565b6000610ac9836001600160a01b038416612721565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c291906145c6565b6001600160a01b0316148061186957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185e91906145c6565b6001600160a01b0316145b6118ad5760405162461bcd60e51b81526020600482015260156024820152742629aa29bbb0b81d1024b73b30b634b2103830b4b960591b60448201526064016109b3565b816001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906145c6565b6001600160a01b031614806119a05750816001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611971573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199591906145c6565b6001600160a01b0316145b6119e45760405162461bcd60e51b81526020600482015260156024820152742629aa29bbb0b81d1024b73b30b634b2103830b4b960591b60448201526064016109b3565b6001600160a01b03918216600090815260036020526040902080546001600160a01b03191691909216179055565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160a080820183528682526020808301878152838501868152606080860189815260808088018b81526001600160a01b038f166000818152600689528b902099518a55955160018a01559351600289015590516003880155915160049096019590955585519182529181018990529384018790529183018590529082018390527f5383d2302a831f3cf1bb2ec65ce6d314d69a1451b6ade989f798f5133727c9ce910160405180910390a15050505050565b611b2161281b565b81611b2d60098261126e565b611b715760405162461bcd60e51b81526020600482015260156024820152741314d5081859191c995cdcc81b9bdd08199bdd5b99605a1b60448201526064016109b3565b6007546001600160a01b038084166000908152600860209081526040808320938816835292905220544291611ba59161455f565b10611bf25760405162461bcd60e51b815260206004820181905260248201527f436c61696d5661756c743a20436f6f6c646f776e206e6f74206578706972656460448201526064016109b3565b6040516311305c1f60e11b81526001600160a01b03838116600483015260009190851690632260b83e90602401608060405180830381865afa158015611c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c609190614449565b6001600160a01b038581166000908152600b60209081526040808320848916845290915290205491925084911615611cbc57506001600160a01b038085166000908152600b602090815260408083208785168452909152902054165b602082015115611cd657611cd6858583856020015161285e565b815115611ced57611ced8585838560000151612a86565b606082015115611d0757611d078585838560600151612c49565b6000611d1386866113dc565b90506000818460400151611d27919061455f565b90508015611d6357611d636001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611e16565b8115611d7357611d738783612efe565b6001600160a01b038681166000818152600860209081526040808320948c168084529490915290819020429055517f343959b4000000000000000000000000000000000000000000000000000000008152600481019190915263343959b490602401600060405180830381600087803b158015611def57600080fd5b505af1158015611e03573d6000803e3d6000fd5b505050505050505050610e3f6001600455565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052611e7d908490612fd5565b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0e91906145c6565b6001600160a01b03161480611fb557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faa91906145c6565b6001600160a01b0316145b611ff95760405162461bcd60e51b81526020600482015260156024820152742629aa29bbb0b81d1024b73b30b634b2103830b4b960591b60448201526064016109b3565b816001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612041573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206591906145c6565b6001600160a01b031614806120ec5750816001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e191906145c6565b6001600160a01b0316145b6121305760405162461bcd60e51b81526020600482015260156024820152742629aa29bbb0b81d1024b73b30b634b2103830b4b960591b60448201526064016109b3565b6001600160a01b03918216600090815260026020526040902080546001600160a01b03191691909216179055565b804710156121815760405163cd78605960e01b81523060048201526024016109b3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146121ce576040519150601f19603f3d011682016040523d82523d6000602084013e6121d3565b606091505b5050905080611e7d57604051630a12f52160e11b815260040160405180910390fd5b6040517fa0712d68000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0384169063a0712d6890602401600060405180830381600087803b15801561225057600080fd5b505af1158015612264573d6000803e3d6000fd5b50505050611e7d838383613051565b60008181526001830160205260408120546122ba57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610acc565b506000610acc565b60608160000180548060200260200160405190810160405280929190818152602001828054801561231257602002820191906000526020600020905b8154815260200190600101908083116122fe575b50505050509050919050565b6000808263ffffffff166000036123775760405162461bcd60e51b815260206004820152600260248201527f425000000000000000000000000000000000000000000000000000000000000060448201526064016109b3565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106123ac576123ac6145e3565b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106123db576123db6145e3565b602002602001019063ffffffff16908163ffffffff1681525050600080866001600160a01b031663883bdbfd846040518263ffffffff1660e01b815260040161242491906145f9565b600060405180830381865afa158015612441573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261246991908101906146d3565b91509150600082600081518110612482576124826145e3565b60200260200101518360018151811061249d5761249d6145e3565b60200260200101516124af9190614795565b90506000826000815181106124c6576124c66145e3565b6020026020010151836001815181106124e1576124e16145e3565b60200260200101516124f391906147c2565b9050612503600389900b836147e2565b965060008260060b1280156125275750612521600389900b83614820565b60060b15155b1561253a578661253681614842565b9750505b60006125536001600160a01b0363ffffffff8b16614865565b905061257d77ffffffffffffffffffffffffffffffffffffffff00000000602084901b16826148a8565b96505050505050509250929050565b60006fffffffffffffffffffffffffffffffff8211156125e2576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260806004820152602481018390526044016109b3565b5090565b6000806125f286613181565b90506fffffffffffffffffffffffffffffffff6001600160a01b038216116126935760006126296001600160a01b03831680614585565b9050836001600160a01b0316856001600160a01b03161061266a57612665600160c01b876fffffffffffffffffffffffffffffffff16836134bd565b61268b565b61268b81876fffffffffffffffffffffffffffffffff16600160c01b6134bd565b925050612718565b60006126b26001600160a01b03831680680100000000000000006134bd565b9050836001600160a01b0316856001600160a01b0316106126f3576126ee600160801b876fffffffffffffffffffffffffffffffff16836134bd565b612714565b61271481876fffffffffffffffffffffffffffffffff16600160801b6134bd565b9250505b50949350505050565b6000818152600183016020526040812054801561280a576000612745600183614572565b855490915060009061275990600190614572565b90508082146127be576000866000018281548110612779576127796145e3565b906000526020600020015490508087600001848154811061279c5761279c6145e3565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806127cf576127cf6148df565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610acc565b6000915050610acc565b5092915050565b600260045403612857576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600455565b6001600160a01b038085166000908152600c602090815260408083209387168352929052205460ff161561298557600061289a85836000611290565b6040516349eea28f60e11b8152600481018290529091506001600160a01b038616906393dd451e90602401600060405180830381600087803b1580156128df57600080fd5b505af11580156128f3573d6000803e3d6000fd5b5061290c925050506001600160a01b0386168483611e16565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116825260208201849052918101849052858216918716907f736d2f88def4652768bf132a41c0fda2907d2ff022fedd5d7eaf4cc12860b18f906060015b60405180910390a350612a80565b61298f848261357d565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156129f157600080fd5b505af1158015612a05573d6000803e3d6000fd5b50505050612a13828261215e565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682526020820184905285811692908716917f5637d7f962248a7f05a7ab69eec6446e31f3d0a299d997f135a65c62806e789191015b60405180910390a35b50505050565b6001600160a01b038085166000908152600c602090815260408083209387168352929052205460ff1615612ba3576000612ac285836001611290565b6040516349eea28f60e11b8152600481018290529091506001600160a01b038616906393dd451e90602401600060405180830381600087803b158015612b0757600080fd5b505af1158015612b1b573d6000803e3d6000fd5b50612b34925050506001600160a01b0386168483611e16565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116825260208201849052918101849052858216918716907f736d2f88def4652768bf132a41c0fda2907d2ff022fedd5d7eaf4cc12860b18f90606001612977565b612bad8482613635565b612be16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168383611e16565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682526020820184905285811692908716917f5637d7f962248a7f05a7ab69eec6446e31f3d0a299d997f135a65c62806e78919101612a77565b6001600160a01b038085166000908152600c602090815260408083209387168352929052205460ff1615612d3b576040516349eea28f60e11b8152600481018290526001600160a01b038516906393dd451e90602401600060405180830381600087803b158015612cb957600080fd5b505af1158015612ccd573d6000803e3d6000fd5b50612ce6925050506001600160a01b0385168383611e16565b604080516001600160a01b0386811680835260208301859052928201849052851691907f736d2f88def4652768bf132a41c0fda2907d2ff022fedd5d7eaf4cc12860b18f9060600160405180910390a3612a80565b6000612d486002836145b2565b90506000612d5686836136ed565b9050612d8c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583611e16565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682526020820184905287811692908916917f5637d7f962248a7f05a7ab69eec6446e31f3d0a299d997f135a65c62806e7891910160405180910390a36000612e0387846137af565b604051632e1a7d4d60e01b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015612e6857600080fd5b505af1158015612e7c573d6000803e3d6000fd5b50505050612e8a858261215e565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682526020820184905288811692908a16917f5637d7f962248a7f05a7ab69eec6446e31f3d0a299d997f135a65c62806e7891910160405180910390a350505050505050565b6001600160a01b0382166000908152600660205260409020600401548110612fa1576001600160a01b038216600081815260066020908152604080832060048101939093558254600184015460038501546002909501548351968752938601919091528482015260608401929092526080830152517f5cd50876ae624b630091570180bdb4f1d3e078cbe15f08fd5f593363eb22b6a79181900360a00190a15050565b6001600160a01b03821660009081526006602052604081206004018054839290612fcc908490614572565b90915550505050565b6000612fea6001600160a01b03841683613869565b9050805160001415801561300f57508080602001905181019061300d91906148f5565b155b15611e7d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016109b3565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905291516000928392908716916130c29190614936565b6000604051808303816000865af19150503d80600081146130ff576040519150601f19603f3d011682016040523d82523d6000602084013e613104565b606091505b509150915081801561312e57508051158061312e57508080602001905181019061312e91906148f5565b61317a5760405162461bcd60e51b815260206004820152600260248201527f535400000000000000000000000000000000000000000000000000000000000060448201526064016109b3565b5050505050565b60008060008360020b12613198578260020b6131a0565b8260020b6000035b9050620d89e88111156131df576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001166000036131f657600160801b613208565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561323c576ffff97272373d413259a46990580e213a0260801c5b600482161561325b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561327a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613299576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156132b8576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156132d7576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156132f6576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613316576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613336576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613356576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613376576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613396576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156133b6576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156133d6576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156133f6576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613417576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613437576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613456576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613473576b048a170391f7dc42444e8fa20260801c5b60008460020b13156134945780600019816134905761349061459c565b0490505b6401000000008106156134a85760016134ab565b60005b60ff16602082901c0192505050919050565b60008060006134cc8686613877565b91509150600084806134e0576134e061459c565b8688099050828111156134fb576134f8600183614572565b91505b6135058184614572565b9250816000036135235761351985846145b2565b9350505050611267565b8482106135725760405162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f5700000000000060448201526064016109b3565b6113d18383876138b9565b6001600160a01b03828116600090815260026020526040902054166135de5760405162461bcd60e51b81526020600482015260176024820152761314d514ddd85c0e8814185a5c881b9bdd08199bdd5b99604a1b60448201526064016109b3565b60006135ea8383613a34565b6001600160a01b03808516600090815260026020526040902054919250612a809116847f00000000000000000000000000000000000000000000000000000000000000008486613a66565b6001600160a01b03828116600090815260036020526040902054166136965760405162461bcd60e51b81526020600482015260176024820152761314d514ddd85c0e8814185a5c881b9bdd08199bdd5b99604a1b60448201526064016109b3565b60006136a28383613c4f565b6001600160a01b03808516600090815260036020526040902054919250612a809116847f00000000000000000000000000000000000000000000000000000000000000008486613a66565b6001600160a01b038281166000908152600360205260408120549091166137505760405162461bcd60e51b81526020600482015260176024820152761314d514ddd85c0e8814185a5c881b9bdd08199bdd5b99604a1b60448201526064016109b3565b600061375c8484613c5e565b6001600160a01b038086166000908152600360205260409020549192506137a79116857f00000000000000000000000000000000000000000000000000000000000000008685613c87565b949350505050565b6001600160a01b038281166000908152600260205260408120549091166138125760405162461bcd60e51b81526020600482015260176024820152761314d514ddd85c0e8814185a5c881b9bdd08199bdd5b99604a1b60448201526064016109b3565b600061381e8484613ee7565b6001600160a01b038086166000908152600260205260409020549192506137a79116857f00000000000000000000000000000000000000000000000000000000000000008685613c87565b6060610ac983836000613ef6565b60008080600019848609905061388d8486614585565b92506138998382614572565b9150828110156138b1576138ae600183614572565b91505b509250929050565b6000806138c583613f89565b831690506138d381846145b2565b92506138df81866145b2565b9450806138eb82613f89565b6138f591906145b2565b61390090600161455f565b61390a9085614585565b613914908661455f565b945060016139228185614585565b61392d906002614572565b6139379082614585565b90506139438185614585565b61394e906002614572565b6139589082614585565b90506139648185614585565b61396f906002614572565b6139799082614585565b90506139858185614585565b613990906002614572565b61399a9082614585565b90506139a68185614585565b6139b1906002614572565b6139bb9082614585565b90506139c78185614585565b6139d2906002614572565b6139dc9082614585565b90506139e88185614585565b6139f3906002614572565b6139fd9082614585565b9050613a098185614585565b613a14906002614572565b613a1e9082614585565b9050613a2a8187614585565b9695505050505050565b600080613a4384846000611290565b600154909150613a5c6801000000000000000083614585565b6137a791906145b2565b600080846001600160a01b0316866001600160a01b0316109050600080886001600160a01b031663128acb083085613a9d89613fa2565b613aa690614952565b87613acf57613aca600173fffd8963efd1fc6a506488495d951d5263988d266147c2565b613adf565b613adf6401000276a3600161498a565b60405180606001604052808f6001600160a01b031681526020018e6001600160a01b031681526020018d815250604051602001613b46919081516001600160a01b039081168252602080840151909116908201526040918201519181019190915260600190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613b759594939291906149aa565b60408051808303816000875af1158015613b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb79190614a08565b91509150600083613bd15781613bcc84614952565b613bdb565b82613bdb83614952565b9095509050858114613bec57600080fd5b876001600160a01b0316896001600160a01b03167fdd36740e2a012d93061a0d99eaa9107860955de4e90027d3cf465a055026c4078784604051613c3a929190918252602082015260400190565b60405180910390a35050505095945050505050565b600080613a4384846001611290565b600080613c6d84846001614001565b90506801000000000000000081600154613a5c9190614585565b600080846001600160a01b0316866001600160a01b0316109050600080886001600160a01b031663128acb083085613cbe8a613fa2565b87613ce757613ce2600173fffd8963efd1fc6a506488495d951d5263988d266147c2565b613cf7565b613cf76401000276a3600161498a565b60405180606001604052808f6001600160a01b031681526020018e6001600160a01b031681526020018d815250604051602001613d5e919081516001600160a01b039081168252602080840151909116908201526040918201519181019190915260600190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613d8d9594939291906149aa565b60408051808303816000875af1158015613dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dcf9190614a08565b91509150600083613de95781613de484614952565b613df3565b82613df383614952565b9097509050858111613e6d5760405162461bcd60e51b815260206004820152602360248201527f4c5354537761703a20496e73756666696369656e74206f757470757420616d6f60448201527f756e74000000000000000000000000000000000000000000000000000000000060648201526084016109b3565b876001600160a01b0316896001600160a01b03167fdd36740e2a012d93061a0d99eaa9107860955de4e90027d3cf465a055026c4078984604051613ebb929190918252602082015260400190565b60405180910390a383613ece5782613ed0565b815b613ed990614952565b9a9950505050505050505050565b600080613c6d84846000614001565b606081471015613f1b5760405163cd78605960e01b81523060048201526024016109b3565b600080856001600160a01b03168486604051613f379190614936565b60006040518083038185875af1925050503d8060008114613f74576040519150601f19603f3d011682016040523d82523d6000602084013e613f79565b606091505b5091509150613a2a868383614142565b6000613f9782600019614572565b610acc90600161455f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156125e2576040517f24775e06000000000000000000000000000000000000000000000000000000008152600481018390526024016109b3565b600080808360018111156140175761401761451a565b1461403c576001600160a01b0380861660009081526003602052604090205416614058565b6001600160a01b03808616600090815260026020526040902054165b90506001600160a01b0381166140aa5760405162461bcd60e51b81526020600482015260176024820152761314d514ddd85c0e8814185a5c881b9bdd08199bdd5b99604a1b60448201526064016109b3565b6000808460018111156140bf576140bf61451a565b146140ea577f000000000000000000000000000000000000000000000000000000000000000061410c565b7f00000000000000000000000000000000000000000000000000000000000000005b600080549192509061412b908490600160a01b900462ffffff1661231e565b5090506113d18161413b8861258c565b89856125e6565b60608261415757614152826141b7565b611267565b815115801561416e57506001600160a01b0384163b155b156141b0576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109b3565b5080611267565b8051156141c75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b0381168114610ab857600080fd5b60006020828403121561420757600080fd5b8135611267816141e0565b6020808252825182820181905260009190848201906040850190845b818110156142535783516001600160a01b03168352928401929184019160010161422e565b50909695505050505050565b6000806040838503121561427257600080fd5b823561427d816141e0565b9150602083013561428d816141e0565b809150509250929050565b6000602082840312156142aa57600080fd5b813562ffffff8116811461126757600080fd5b600080604083850312156142d057600080fd5b82356142db816141e0565b946020939093013593505050565b6000602082840312156142fb57600080fd5b5035919050565b8015158114610ab857600080fd5b6000806040838503121561432357600080fd5b823561432e816141e0565b9150602083013561428d81614302565b600080600080600060a0868803121561435657600080fd5b8535614361816141e0565b97602087013597506040870135966060810135965060800135945092505050565b6000806000806060858703121561439857600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156143be57600080fd5b818701915087601f8301126143d257600080fd5b8135818111156143e157600080fd5b8860208285010111156143f357600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561444157614441614402565b604052919050565b60006080828403121561445b57600080fd5b6040516080810181811067ffffffffffffffff8211171561447e5761447e614402565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b6000606082840312156144c157600080fd5b6040516060810181811067ffffffffffffffff821117156144e4576144e4614402565b60405282356144f2816141e0565b81526020830135614502816141e0565b60208201526040928301359281019290925250919050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561454257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610acc57610acc614549565b81810381811115610acc57610acc614549565b8082028115828204841417610acc57610acc614549565b634e487b7160e01b600052601260045260246000fd5b6000826145c1576145c161459c565b500490565b6000602082840312156145d857600080fd5b8151611267816141e0565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561425357835163ffffffff1683529284019291840191600101614615565b600067ffffffffffffffff82111561465157614651614402565b5060051b60200190565b600082601f83011261466c57600080fd5b8151602061468161467c83614637565b614418565b8083825260208201915060208460051b8701019350868411156146a357600080fd5b602086015b848110156146c85780516146bb816141e0565b83529183019183016146a8565b509695505050505050565b600080604083850312156146e657600080fd5b825167ffffffffffffffff808211156146fe57600080fd5b818501915085601f83011261471257600080fd5b8151602061472261467c83614637565b82815260059290921b8401810191818101908984111561474157600080fd5b948201945b8386101561476f5785518060060b81146147605760008081fd5b82529482019490820190614746565b9188015191965090935050508082111561478857600080fd5b506138ae8582860161465b565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715610acc57610acc614549565b6001600160a01b0382811682821603908082111561281457612814614549565b60008160060b8360060b806147f9576147f961459c565b667fffffffffffff1982146000198214161561481757614817614549565b90059392505050565b60008260060b806148335761483361459c565b808360060b0791505092915050565b60008160020b627fffff19810361485b5761485b614549565b6000190192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff82811682821681810283169291811582850482141761489f5761489f614549565b50505092915050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff808416806148d3576148d361459c565b92169190910492915050565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561490757600080fd5b815161126781614302565b60005b8381101561492d578181015183820152602001614915565b50506000910152565b60008251614948818460208701614912565b9190910192915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361498357614983614549565b5060000390565b6001600160a01b0381811683821601908082111561281457612814614549565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a0608083015282518060a08401526149f08160c0850160208701614912565b601f01601f19169190910160c0019695505050505050565b60008060408385031215614a1b57600080fd5b50508051602090910151909290915056fea2646970667358221220fe95a6fec36fdb0322f2b4d071d09f8f03b58e05547b606753012e86ecf6621264736f6c634300081700330000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006ff2241756549b5816a177659e766eaf14b34429