0 txs
0 calls
constructor
constructor()
functions
canWithdraw
viewfunction canWithdraw(address _account, uint256 _distributionAmount) view returns (uint256)
checkUpkeep
viewfunction checkUpkeep(bytes) view returns (bool, bytes)
depositsSinceLastUpdate
viewfunction depositsSinceLastUpdate() view returns (uint256)
distributionOracle
viewfunction distributionOracle() view returns (address)
getAccountData
viewfunction getAccountData() view returns (address[], uint256[], uint256[])
getAccountIndex
viewfunction getAccountIndex(address _account) view returns (uint256)
getAccounts
viewfunction getAccounts() view returns (address[])
getDepositsSinceLastUpdate
viewfunction getDepositsSinceLastUpdate() view returns (uint256, uint256)
getLSDTokens
viewfunction getLSDTokens(address _account, uint256 _distributionShareAmount) view returns (uint256)
getQueuedTokens
viewfunction getQueuedTokens(address _account, uint256 _distributionAmount) view returns (uint256)
ipfsHash
viewfunction ipfsHash() view returns (bytes32)
merkleRoot
viewfunction merkleRoot() view returns (bytes32)
merkleTreeSize
viewfunction merkleTreeSize() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
poolStatus
viewfunction poolStatus() view returns (uint8)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
queueDepositMax
viewfunction queueDepositMax() view returns (uint128)
queueDepositMin
viewfunction queueDepositMin() view returns (uint128)
sdlPool
viewfunction sdlPool() view returns (address)
stakingPool
viewfunction stakingPool() view returns (address)
token
viewfunction token() view returns (address)
totalQueued
viewfunction totalQueued() view returns (uint256)
claimLSDTokens
nonpayablefunction claimLSDTokens(uint256 _amount, uint256 _sharesAmount, bytes32[] _merkleProof)
deposit
nonpayablefunction deposit(uint256 _amount, bool _shouldQueue)
depositQueuedTokens
nonpayablefunction depositQueuedTokens(uint256 _queueDepositMin, uint256 _queueDepositMax)
initialize
nonpayablefunction initialize(address _token, address _stakingPool, address _sdlPool, uint128 _queueDepositMin, uint128 _queueDepositMax)
onTokenTransfer
nonpayablefunction onTokenTransfer(address _sender, uint256 _value, bytes _calldata)
pauseForUpdate
nonpayablefunction pauseForUpdate()
performUpkeep
nonpayablefunction performUpkeep(bytes)
renounceOwnership
nonpayablefunction renounceOwnership()
setDistributionOracle
nonpayablefunction setDistributionOracle(address _distributionOracle)
setPoolStatus
nonpayablefunction setPoolStatus(uint8 _status)
setPoolStatusClosed
nonpayablefunction setPoolStatusClosed()
setQueueDepositParams
nonpayablefunction setQueueDepositParams(uint128 _queueDepositMin, uint128 _queueDepositMax)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unqueueTokens
nonpayablefunction unqueueTokens(uint256 _amountToUnqueue, uint256 _amount, uint256 _sharesAmount, bytes32[] _merkleProof)
updateDistribution
nonpayablefunction updateDistribution(bytes32 _merkleRoot, bytes32 _ipfsHash, uint256 _amountDistributed, uint256 _sharesAmountDistributed)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(uint256 _amountToWithdraw, uint256 _amount, uint256 _sharesAmount, bytes32[] _merkleProof, bool _shouldUnqueue)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ClaimLSDTokens
event ClaimLSDTokens(address indexed account, uint256 amount, uint256 amountWithYield)
Deposit
event Deposit(address indexed account, uint256 poolAmount, uint256 queueAmount)
DepositQueuedTokens
event DepositQueuedTokens(uint256 amount)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetPoolStatus
event SetPoolStatus(uint8 status)
SetQueueDepositParams
event SetQueueDepositParams(uint128 queueDepositMin, uint128 queueDepositMax)
Unpaused
event Unpaused(address account)
UnqueueTokens
event UnqueueTokens(address indexed account, uint256 amount)
UpdateDistribution
event UpdateDistribution(bytes32 merkleRoot, bytes32 ipfsHash, uint256 incrementalAmount, uint256 incrementalSharesAmount)
Upgraded
event Upgraded(address indexed implementation)
Withdraw
event Withdraw(address indexed account, uint256 amount)
errors
CannotSetClosedStatus
error CannotSetClosedStatus()
DepositsDisabled
error DepositsDisabled()
InsufficientBalance
error InsufficientBalance()
InsufficientDepositRoom
error InsufficientDepositRoom()
InsufficientQueuedTokens
error InsufficientQueuedTokens()
InvalidAmount
error InvalidAmount()
InvalidProof
error InvalidProof()
InvalidValue
error InvalidValue()
NothingToClaim
error NothingToClaim()
SenderNotAuthorized
error SenderNotAuthorized()
StatusAlreadySet
error StatusAlreadySet()
UnauthorizedToken
error UnauthorizedToken()
WithdrawalsDisabled
error WithdrawalsDisabled()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516137706200011f600039600081816108350152818161087e01528181610941015281816109810152610a1001526137706000f3fe6080604052600436106102465760003560e01c80638945621b11610139578063b63f4658116100b6578063e2ab7cf21161007a578063e2ab7cf2146106d2578063f0228692146106f2578063f235f51b1461071a578063f2fde38b1461072f578063fb2bf5e61461074f578063fc0c546a1461076f57600080fd5b8063b63f465814610646578063bc5f17e014610666578063c623674f14610686578063cfbf915b1461069d578063deb15ecb146106b257600080fd5b80639a408321116100fd5780639a408321146105855780639ba63e9e146105a55780639d382847146105dc578063a4c0ed36146105fc578063aa77eb3a1461061c57600080fd5b80638945621b146104f75780638a48ac031461050e5780638da5cb5b14610530578063946fc84d1461054e57806396ad58ef1461056557600080fd5b80635d4e6fb9116101c75780636e04ff0d1161018b5780636e04ff0d14610450578063715018a61461047e578063766715e714610493578063812af8ec146104b357806388463275146104d757600080fd5b80635d4e6fb9146103b05780635e1e5187146103d05780636253b22d146103f0578063661d2081146104105780636d7c49a21461043057600080fd5b80634f1ef2861161020e5780634f1ef2861461030f57806352d1902d1461032257806353ac4b661461033757806354279a491461034e5780635c975abb1461038d57600080fd5b80630c56ae3b1461024b5780632ab0faf5146102885780632eb4a7ab146102b65780633659cfe6146102cd5780634585e33b146102ef575b600080fd5b34801561025757600080fd5b5060fc5461026b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561029457600080fd5b506102a86102a3366004612eec565b61078f565b60405190815260200161027f565b3480156102c257600080fd5b506102a86101015481565b3480156102d957600080fd5b506102ed6102e8366004612f16565b61082b565b005b3480156102fb57600080fd5b506102ed61030a366004612f73565b610913565b6102ed61031d366004612fcb565b610937565b34801561032e57600080fd5b506102a8610a03565b34801561034357600080fd5b506102a86101045481565b34801561035a57600080fd5b5060ff5461037590600160801b90046001600160801b031681565b6040516001600160801b03909116815260200161027f565b34801561039957600080fd5b5060c95460ff16604051901515815260200161027f565b3480156103bc57600080fd5b506102ed6103cb3660046130d2565b610ab6565b3480156103dc57600080fd5b5060fe5461026b906001600160a01b031681565b3480156103fc57600080fd5b506102ed61040b366004613125565b610cd4565b34801561041c57600080fd5b506102ed61042b366004613147565b610cde565b34801561043c57600080fd5b506102ed61044b366004613179565b610da5565b34801561045c57600080fd5b5061047061046b366004612f73565b610e86565b60405161027f9291906131f2565b34801561048a57600080fd5b506102ed610ff8565b34801561049f57600080fd5b506102a86104ae366004612eec565b61100c565b3480156104bf57600080fd5b506104c8611038565b60405161027f93929190613281565b3480156104e357600080fd5b506102ed6104f23660046132c8565b611257565b34801561050357600080fd5b506102a86101055481565b34801561051a57600080fd5b506105236114fa565b60405161027f919061333b565b34801561053c57600080fd5b506097546001600160a01b031661026b565b34801561055a57600080fd5b506102a86101035481565b34801561057157600080fd5b506102ed610580366004613365565b61155d565b34801561059157600080fd5b506102ed6105a03660046133ca565b61171e565b3480156105b157600080fd5b506102a86105c0366004612f16565b6001600160a01b03166000908152610108602052604090205490565b3480156105e857600080fd5b5060ff54610375906001600160801b031681565b34801561060857600080fd5b506102ed6106173660046133fa565b611762565b34801561062857600080fd5b5061010554610106546040805192835260208301919091520161027f565b34801561065257600080fd5b5060fd5461026b906001600160a01b031681565b34801561067257600080fd5b506102ed610681366004612f16565b61184f565b34801561069257600080fd5b506102a86101025481565b3480156106a957600080fd5b506102ed611879565b3480156106be57600080fd5b506102ed6106cd366004613448565b6118ac565b3480156106de57600080fd5b506102a86106ed366004612eec565b611abd565b3480156106fe57600080fd5b506101005461070d9060ff1681565b60405161027f91906134bf565b34801561072657600080fd5b506102ed611c04565b34801561073b57600080fd5b506102ed61074a366004612f16565b611c8d565b34801561075b57600080fd5b506102ed61076a3660046134e7565b611d03565b34801561077b57600080fd5b5060fb5461026b906001600160a01b031681565b6001600160a01b038216600090815261010b602052604081205481906107b59084613530565b60fc54604051631ae6f20560e31b8152600481018390529192506001600160a01b03169063d737902890602401602060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190613547565b949350505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361087c5760405162461bcd60e51b815260040161087390613560565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108c56000805160206136f4833981519152546001600160a01b031690565b6001600160a01b0316146108eb5760405162461bcd60e51b8152600401610873906135ac565b6108f481611d64565b6040805160008082526020820190925261091091839190611d6c565b50565b60ff54610933906001600160801b0380821691600160801b900416611edc565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361097f5760405162461bcd60e51b815260040161087390613560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109c86000805160206136f4833981519152546001600160a01b031690565b6001600160a01b0316146109ee5760405162461bcd60e51b8152600401610873906135ac565b6109f782611d64565b61093382826001611d6c565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610873565b506000805160206136f483398151915290565b6040805133602082018190529181018690526060810185905260009060800160408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610b4c848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506101015491508490506121e4565b610b69576040516309bde33960e01b815260040160405180910390fd5b6001600160a01b038216600090815261010a6020526040812054610b8d9088613530565b6001600160a01b038416600090815261010b602052604081205491925090610bb59088613530565b60fc54604051631ae6f20560e31b8152600481018390529192506000916001600160a01b039091169063d737902890602401602060405180830381865afa158015610c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c289190613547565b905080600003610c4b576040516312d37ee560e31b815260040160405180910390fd5b6001600160a01b03808616600090815261010a602090815260408083208d905561010b909152902089905560fc54610c85911686836121fa565b60408051848152602081018390526001600160a01b038716917ffa5cffad6b3e2d8e2dcdfdfccd5c40d488ba4cd96eaa5d36d02a4ad558907e4a910160405180910390a2505050505050505050565b6109338282611edc565b60fe546001600160a01b03163314610d09576040516379d1e58f60e01b815260040160405180910390fd5b610d1161225d565b816101056000828254610d249190613530565b92505081905550806101066000828254610d3e9190613530565b909155505061010184905561010283905561010754610103556040805185815260208101859052908101839052606081018290527f32bfabbaa98efe25c71e9c54423b1df62bca7abe868f688173c4555588573be79060800160405180910390a150505050565b610dad6122aa565b6002816002811115610dc157610dc16134a9565b03610ddf5760405163076ee39560e01b815260040160405180910390fd5b6101005460ff166002811115610df757610df76134a9565b816002811115610e0957610e096134a9565b03610e275760405163930e3acf60e01b815260040160405180910390fd5b610100805482919060ff19166001836002811115610e4757610e476134a9565b02179055507f0d1fc50edc127f8afb554cb50e433f0253eba7685df2cdedf875165a1cab001181604051610e7b91906134bf565b60405180910390a150565b60006060600060fc60009054906101000a90046001600160a01b03166001600160a01b031663050b4d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190613547565b9050600060fc60009054906101000a90046001600160a01b03166001600160a01b03166350be85966040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7e9190613547565b905060006101005460ff166002811115610f9a57610f9a6134a9565b148015610fb2575060ff546001600160801b03168210155b8015610fda575060ff54610104546001600160801b0390911690610fd79083906135f8565b10155b604051806020016040528060008152509350935050505b9250929050565b6110006122aa565b61100a6000612304565b565b6001600160a01b03821660009081526101096020526040812054611031908390613530565b9392505050565b606080606060006101078054905067ffffffffffffffff81111561105e5761105e612fb5565b604051908082528060200260200182016040528015611087578160200160208202803683370190505b506101075490915060009067ffffffffffffffff8111156110aa576110aa612fb5565b6040519080825280602002602001820160405280156110d3578160200160208202803683370190505b50905060005b82518110156111e857600061010782815481106110f8576110f8613610565b60009182526020909120015460fd5460405163c7a6472360e01b81526001600160a01b0392831660048201819052935091169063c7a6472390602401602060405180830381865afa158015611151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111759190613547565b84838151811061118757611187613610565b6020026020010181815250506101096000826001600160a01b03166001600160a01b03168152602001908152602001600020548383815181106111cc576111cc613610565b6020908102919091010152506111e181613626565b90506110d9565b5061010782828280548060200260200160405190810160405280929190818152602001828054801561124357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611225575b505050505092509450945094505050909192565b856000036112785760405163162908e360e11b815260040160405180910390fd5b853382151560010361146e5761128c612356565b831561135257604080516001600160a01b03831660208201529081018890526060810187905260009060800160408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061132f868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506101015491508490506121e4565b61134c576040516309bde33960e01b815260040160405180910390fd5b5061138f565b610103546001600160a01b03821660009081526101086020526040902054101561138f576040516309bde33960e01b815260040160405180910390fd5b600061139b828961100c565b90506000610104548211156113b357610104546113b5565b815b90506000818511156113c757816113c9565b845b9050801561146a576001600160a01b03841660009081526101096020526040812080548392906113fa908490613530565b925050819055508061010460008282546114149190613530565b9091555061142490508186613530565b9450836001600160a01b03167f8970221a6faa1d359e1b9207bdf711bd631327374b764981c467f9727c94a1f58260405161146191815260200190565b60405180910390a25b5050505b81156114d95760fc5461148c906001600160a01b031682308561239c565b611495826123d4565b806001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364836040516114d091815260200190565b60405180910390a25b60fb546114f0906001600160a01b0316828a6121fa565b5050505050505050565b606061010780548060200260200160405190810160405280929190818152602001828054801561155357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611535575b5050505050905090565b600054610100900460ff161580801561157d5750600054600160ff909116105b806115975750303b158015611597575060005460ff166001145b6115fa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610873565b6000805460ff19166001179055801561161d576000805461ff0019166101001790555b611625612567565b61162d61258e565b6116356125bd565b60fb80546001600160a01b038089166001600160a01b031992831617835560fc805489831690841617905560fd80548883169084161790556001600160801b03858116600160801b029087161760ff5561010780546001810182556000919091527f47c4908e245f386bfc1825973249847f4053a761ddb4880ad63c323a7b5a2a2501805490921690915590546116d09116866000196125ec565b8015611716576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8160000361173f5760405163162908e360e11b815260040160405180910390fd5b60fb54611757906001600160a01b031633308561239c565b610933338383612699565b8260000361178357604051632a9ffab760e21b815260040160405180910390fd5b60fb546001600160a01b031633036117b65760006117a38284018461363f565b90506117b0858583612699565b50611849565b60fc546001600160a01b03163303611830576117d1836123d4565b60fb546117e8906001600160a01b031685856121fa565b836001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648460405161182391815260200190565b60405180910390a2611849565b604051637e5f934960e01b815260040160405180910390fd5b50505050565b6118576122aa565b60fe80546001600160a01b0319166001600160a01b0392909216919091179055565b60fe546001600160a01b031633146118a4576040516379d1e58f60e01b815260040160405180910390fd5b61100a61295a565b6118b4612356565b846000036118d55760405163162908e360e11b815260040160405180910390fd5b610104548511156118f95760405163ab2619d760e01b815260040160405180910390fd5b610101543390158015906119285750610103546001600160a01b03821660009081526101086020526040902054105b156119e957604080516001600160a01b03831660208201529081018690526060810185905260009060800160408051601f19818403018152828252805160209182012090830152016040516020818303038152906040528051906020012090506119ca848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506101015491508490506121e4565b6119e7576040516309bde33960e01b815260040160405180910390fd5b505b6119f3818661100c565b861115611a1357604051631e9acf1760e31b815260040160405180910390fd5b6001600160a01b0381166000908152610109602052604081208054889290611a3c908490613530565b92505081905550856101046000828254611a569190613530565b909155505060fb54611a72906001600160a01b031682886121fa565b806001600160a01b03167f8970221a6faa1d359e1b9207bdf711bd631327374b764981c467f9727c94a1f587604051611aad91815260200190565b60405180910390a2505050505050565b600080611acc60c95460ff1690565b611aeb57611ae6611add858561100c565b61010454612997565b611aee565b60005b60fc546040516370a0823160e01b81526001600160a01b038781166004830152929350600092611bef9216906370a0823190602401602060405180830381865afa158015611b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b649190613547565b6101045460fc5460408051635a8a2cff60e11b815290518793926001600160a01b03169163b51459fe9160048083019260209291908290030181865afa158015611bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd69190613547565b611be091906135f8565b611bea9190613530565b612997565b9050611bfb81836135f8565b95945050505050565b611c0c6122aa565b60026101005460ff166002811115611c2657611c266134a9565b03611c445760405163930e3acf60e01b815260040160405180910390fd5b610100805460ff191660029081179091556040517f0d1fc50edc127f8afb554cb50e433f0253eba7685df2cdedf875165a1cab001191611c83916134bf565b60405180910390a1565b611c956122aa565b6001600160a01b038116611cfa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610873565b61091081612304565b611d0b6122aa565b6001600160801b03828116600160801b918316918202811760ff556040805191825260208201929092527f20805844455ab3d78ee5fb3ec51f7e2dfe1320e15ba423a17300e8ade67e1514910160405180910390a15050565b6109106122aa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611da457611d9f836129ad565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611dfe575060408051601f3d908101601f19168201909252611dfb91810190613547565b60015b611e615760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610873565b6000805160206136f48339815191528114611ed05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610873565b50611d9f838383612a49565b60006101005460ff166002811115611ef657611ef66134a9565b14611f1457604051630e2f42c960e31b815260040160405180910390fd5b60fc546040805163050b4d1360e01b815290516000926001600160a01b03169163050b4d139160048083019260209291908290030181865afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f829190613547565b9050801580611f9057508281105b15611fae5760405163127fc87360e11b815260040160405180910390fd5b6101045460fc546040805163285f42cb60e11b815290516000926001600160a01b0316916350be85969160048083019260209291908290030181865afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120209190613547565b9050600061202e82846135f8565b905080158061203c57508581105b1561205a5760405163ab2619d760e01b815260040160405180910390fd5b600061206f6120698487612997565b87612997565b9050600061208e61208486611bea858a613530565b611bea848a613530565b905061209a8186613530565b610104819055508061010560008282546120b491906135f8565b909155505060fc5460405163119c137760e31b8152600481018390526001600160a01b0390911690638ce09bb890602401602060405180830381865afa158015612102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121269190613547565b610106600082825461213891906135f8565b909155505060fc546040516311f9fbc960e21b8152306004820152602481018390526001600160a01b03909116906347e7ef2490604401600060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b505050507f6be584159f50072877d72b057c066085f4e38f417c4f12177c8565e4687bfea5816040516121d291815260200190565b60405180910390a15050505050505050565b6000826121f18584612a6e565b14949350505050565b6040516001600160a01b038316602482015260448101829052611d9f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612abb565b612265612b90565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001611c83565b6097546001600160a01b0316331461100a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610873565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60c95460ff161561100a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610873565b6040516001600160a01b03808516602483015283166044820152606481018290526118499085906323b872dd60e01b90608401612226565b60026101005460ff1660028111156123ee576123ee6134a9565b0361240c576040516346ee9e3560e01b815260040160405180910390fd5b6000610104548211156124225761010454612424565b815b905060006124328284613530565b905081156124f15781610104600082825461244d9190613530565b9250508190555081610105600082825461246791906135f8565b909155505060fc5460405163119c137760e31b8152600481018490526001600160a01b0390911690638ce09bb890602401602060405180830381865afa1580156124b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d99190613547565b61010660008282546124eb91906135f8565b90915550505b8015611d9f5760fc54604051636ce5768960e11b815230600482018190526024820152604481018390526001600160a01b039091169063d9caed1290606401600060405180830381600087803b15801561254a57600080fd5b505af115801561255e573d6000803e3d6000fd5b50505050505050565b600054610100900460ff1661100a5760405162461bcd60e51b81526004016108739061365c565b600054610100900460ff166125b55760405162461bcd60e51b81526004016108739061365c565b61100a612bd9565b600054610100900460ff166125e45760405162461bcd60e51b81526004016108739061365c565b61100a612c09565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190613547565b90506118498463095ea7b360e01b8561267986866135f8565b6040516001600160a01b0390921660248301526044820152606401612226565b60006101005460ff1660028111156126b3576126b36134a9565b146126d157604051630e2f42c960e31b815260040160405180910390fd5b6101045482906000036127e05760fc546040805163e78a587560e01b815290516000926001600160a01b03169163e78a58759160048083019260209291908290030181865afa158015612728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274c9190613547565b905080156127de576000818311156127645781612766565b825b60fc546040516311f9fbc960e21b81526001600160a01b038981166004830152602482018490529293509116906347e7ef2490604401600060405180830381600087803b1580156127b657600080fd5b505af11580156127ca573d6000803e3d6000fd5b5050505080836127da9190613530565b9250505b505b80158015906127ec5750815b156128dc576127f9612356565b6001600160a01b03841660009081526101086020526040812054900361288e5761010780546001808201835560008390527f47c4908e245f386bfc1825973249847f4053a761ddb4880ad63c323a7b5a2a2590910180546001600160a01b0319166001600160a01b03881617905590546128739190613530565b6001600160a01b038516600090815261010860205260409020555b6001600160a01b03841660009081526101096020526040812080548392906128b79084906135f8565b925050819055508061010460008282546128d191906135f8565b909155506128f99050565b80156128f95760fb546128f9906001600160a01b031685836121fa565b6001600160a01b0384167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1561292e8386613530565b8461293a57600061293c565b835b6040805192835260208301919091520160405180910390a250505050565b612962612356565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586122923390565b60008183106129a65781611031565b5090919050565b6001600160a01b0381163b612a1a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610873565b6000805160206136f483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612a5283612c3c565b600082511180612a5f5750805b15611d9f576118498383612c7c565b600081815b8451811015612ab357612a9f82868381518110612a9257612a92613610565b6020026020010151612ca1565b915080612aab81613626565b915050612a73565b509392505050565b6000612b10826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612cd09092919063ffffffff16565b9050805160001480612b31575080806020019051810190612b3191906136a7565b611d9f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610873565b60c95460ff1661100a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610873565b600054610100900460ff16612c005760405162461bcd60e51b81526004016108739061365c565b61100a33612304565b600054610100900460ff16612c305760405162461bcd60e51b81526004016108739061365c565b60c9805460ff19169055565b612c45816129ad565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611031838360405180606001604052806027815260200161371460279139612cdf565b6000818310612cbd576000828152602084905260409020611031565b6000838152602083905260409020611031565b60606108238484600085612d57565b6060600080856001600160a01b031685604051612cfc91906136c4565b600060405180830381855af49150503d8060008114612d37576040519150601f19603f3d011682016040523d82523d6000602084013e612d3c565b606091505b5091509150612d4d86838387612e32565b9695505050505050565b606082471015612db85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610873565b600080866001600160a01b03168587604051612dd491906136c4565b60006040518083038185875af1925050503d8060008114612e11576040519150601f19603f3d011682016040523d82523d6000602084013e612e16565b606091505b5091509150612e2787838387612e32565b979650505050505050565b60608315612ea1578251600003612e9a576001600160a01b0385163b612e9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610873565b5081610823565b6108238383815115612eb65781518083602001fd5b8060405162461bcd60e51b815260040161087391906136e0565b80356001600160a01b0381168114612ee757600080fd5b919050565b60008060408385031215612eff57600080fd5b612f0883612ed0565b946020939093013593505050565b600060208284031215612f2857600080fd5b61103182612ed0565b60008083601f840112612f4357600080fd5b50813567ffffffffffffffff811115612f5b57600080fd5b602083019150836020828501011115610ff157600080fd5b60008060208385031215612f8657600080fd5b823567ffffffffffffffff811115612f9d57600080fd5b612fa985828601612f31565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612fde57600080fd5b612fe783612ed0565b9150602083013567ffffffffffffffff8082111561300457600080fd5b818501915085601f83011261301857600080fd5b81358181111561302a5761302a612fb5565b604051601f8201601f19908116603f0116810190838211818310171561305257613052612fb5565b8160405282815288602084870101111561306b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f84011261309f57600080fd5b50813567ffffffffffffffff8111156130b757600080fd5b6020830191508360208260051b8501011115610ff157600080fd5b600080600080606085870312156130e857600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561310d57600080fd5b6131198782880161308d565b95989497509550505050565b6000806040838503121561313857600080fd5b50508035926020909101359150565b6000806000806080858703121561315d57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561318b57600080fd5b81356003811061103157600080fd5b60005b838110156131b557818101518382015260200161319d565b838111156118495750506000910152565b600081518084526131de81602086016020860161319a565b601f01601f19169290920160200192915050565b821515815260406020820152600061082360408301846131c6565b600081518084526020808501945080840160005b838110156132465781516001600160a01b031687529582019590820190600101613221565b509495945050505050565b600081518084526020808501945080840160005b8381101561324657815187529582019590820190600101613265565b606081526000613294606083018661320d565b82810360208401526132a68186613251565b90508281036040840152612d4d8185613251565b801515811461091057600080fd5b60008060008060008060a087890312156132e157600080fd5b863595506020870135945060408701359350606087013567ffffffffffffffff81111561330d57600080fd5b61331989828a0161308d565b909450925050608087013561332d816132ba565b809150509295509295509295565b602081526000611031602083018461320d565b80356001600160801b0381168114612ee757600080fd5b600080600080600060a0868803121561337d57600080fd5b61338686612ed0565b945061339460208701612ed0565b93506133a260408701612ed0565b92506133b06060870161334e565b91506133be6080870161334e565b90509295509295909350565b600080604083850312156133dd57600080fd5b8235915060208301356133ef816132ba565b809150509250929050565b6000806000806060858703121561341057600080fd5b61341985612ed0565b935060208501359250604085013567ffffffffffffffff81111561343c57600080fd5b61311987828801612f31565b60008060008060006080868803121561346057600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561348c57600080fd5b6134988882890161308d565b969995985093965092949392505050565b634e487b7160e01b600052602160045260246000fd5b60208101600383106134e157634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156134fa57600080fd5b6135038361334e565b91506135116020840161334e565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000828210156135425761354261351a565b500390565b60006020828403121561355957600080fd5b5051919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000821982111561360b5761360b61351a565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016136385761363861351a565b5060010190565b60006020828403121561365157600080fd5b8135611031816132ba565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156136b957600080fd5b8151611031816132ba565b600082516136d681846020870161319a565b9190910192915050565b60208152600061103160208301846131c656fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208ef62590e2cecd0a737ee5ebae5695384440dc8fafd11d595465528dd31d0b5c64736f6c634300080f0033