7 txs
7.3k calls
constructor
constructor(uint32 _periodLength, uint32 _periodOffset)
functions
balanceOf
viewfunction balanceOf(address vault, address user) view returns (uint256)
currentOverwritePeriodStartedAt
viewfunction currentOverwritePeriodStartedAt() view returns (uint256)
delegateBalanceOf
viewfunction delegateBalanceOf(address vault, address user) view returns (uint256)
delegateOf
viewfunction delegateOf(address vault, address user) view returns (address)
getAccount
viewfunction getAccount(address vault, address user) view returns (tuple)
getBalanceAt
viewfunction getBalanceAt(address vault, address user, uint256 periodEndOnOrAfterTime) view returns (uint256)
getNewestObservation
viewfunction getNewestObservation(address vault, address user) view returns (uint16, tuple)
getNewestTotalSupplyObservation
viewfunction getNewestTotalSupplyObservation(address vault) view returns (uint16, tuple)
getOldestObservation
viewfunction getOldestObservation(address vault, address user) view returns (uint16, tuple)
getOldestTotalSupplyObservation
viewfunction getOldestTotalSupplyObservation(address vault) view returns (uint16, tuple)
getTimestampPeriod
viewfunction getTimestampPeriod(uint256 time) view returns (uint256)
getTotalSupplyAccount
viewfunction getTotalSupplyAccount(address vault) view returns (tuple)
getTotalSupplyAt
viewfunction getTotalSupplyAt(address vault, uint256 periodEndOnOrAfterTime) view returns (uint256)
getTotalSupplyTwabBetween
viewfunction getTotalSupplyTwabBetween(address vault, uint256 startTime, uint256 endTime) view returns (uint256)
getTwabBetween
viewfunction getTwabBetween(address vault, address user, uint256 startTime, uint256 endTime) view returns (uint256)
hasFinalized
viewfunction hasFinalized(uint256 time) view returns (bool)
isShutdownAt
viewfunction isShutdownAt(uint256 timestamp) view returns (bool)
lastObservationAt
viewfunction lastObservationAt() view returns (uint256)
PERIOD_LENGTH
viewfunction PERIOD_LENGTH() view returns (uint32)
PERIOD_OFFSET
viewfunction PERIOD_OFFSET() view returns (uint32)
periodEndOnOrAfter
viewfunction periodEndOnOrAfter(uint256 _timestamp) view returns (uint256)
totalSupply
viewfunction totalSupply(address vault) view returns (uint256)
totalSupplyDelegateBalance
viewfunction totalSupplyDelegateBalance(address vault) view returns (uint256)
burn
nonpayablefunction burn(address _from, uint96 _amount)
delegate
nonpayablefunction delegate(address _vault, address _to)
mint
nonpayablefunction mint(address _to, uint96 _amount)
sponsor
nonpayablefunction sponsor(address _from)
transfer
nonpayablefunction transfer(address _from, address _to, uint96 _amount)
events
DecreasedBalance
event DecreasedBalance(address indexed vault, address indexed user, uint96 amount, uint96 delegateAmount)
DecreasedTotalSupply
event DecreasedTotalSupply(address indexed vault, uint96 amount, uint96 delegateAmount)
Delegated
event Delegated(address indexed vault, address indexed delegator, address indexed delegate)
IncreasedBalance
event IncreasedBalance(address indexed vault, address indexed user, uint96 amount, uint96 delegateAmount)
IncreasedTotalSupply
event IncreasedTotalSupply(address indexed vault, uint96 amount, uint96 delegateAmount)
ObservationRecorded
event ObservationRecorded(address indexed vault, address indexed user, uint96 balance, uint96 delegateBalance, bool isNew, (uint128 cumulativeBalance, uint96 balance, uint32 timestamp) observation)
TotalSupplyObservationRecorded
event TotalSupplyObservationRecorded(address indexed vault, uint96 balance, uint96 delegateBalance, bool isNew, (uint128 cumulativeBalance, uint96 balance, uint32 timestamp) observation)
errors
BalanceLTAmount
error BalanceLTAmount(uint96 balance, uint96 amount, string message)
CannotTransferToSponsorshipAddress
error CannotTransferToSponsorshipAddress()
DelegateBalanceLTAmount
error DelegateBalanceLTAmount(uint96 delegateBalance, uint96 delegateAmount, string message)
InsufficientHistory
error InsufficientHistory(uint32 requestedTimestamp, uint32 oldestTimestamp)
InvalidTimeRange
error InvalidTimeRange(uint256 start, uint256 end)
PeriodLengthTooShort
error PeriodLengthTooShort()
PeriodOffsetInFuture
error PeriodOffsetInFuture(uint32 periodOffset)
SameDelegateAlreadySet
error SameDelegateAlreadySet(address delegate)
TimestampNotFinalized
error TimestampNotFinalized(uint256 timestamp, uint256 currentOverwritePeriodStartedAt)
TransferToZeroAddress
error TransferToZeroAddress()
creation bytecode
0x60c06040523480156200001157600080fd5b5060405162003064380380620030648339810160408190526200003491620000c0565b610e1063ffffffff831610156200005d576040516238782760e91b815260040160405180910390fd5b428163ffffffff161115620000915760405163f2bcecad60e01b815263ffffffff8216600482015260240160405180910390fd5b63ffffffff9182166080521660a052620000f8565b805163ffffffff81168114620000bb57600080fd5b919050565b60008060408385031215620000d457600080fd5b620000df83620000a6565b9150620000ef60208401620000a6565b90509250929050565b60805160a051612e586200020c60003960008181610346015281816105c6015281816106510152818161070f01528181610776015281816109ec01528181610abc01528181610b1901528181610bfa01528181610d9e0152818161123f01528181611274015281816112c00152818161132d0152818161137a015281816118b701528181611a3a01528181611ba40152611c8b01526000818161047f015281816105a501528181610630015281816106ed01528181610755015281816109cb01528181610a9a01528181610af801528181610bd801528181610d7c015281816112990152818161130c015281816113590152818161189601528181611a1901528181611b830152611c6a0152612e586000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063766c4f37116100f9578063be00792911610097578063e7a891b911610071578063e7a891b91461047a578063e7d7b225146104a1578063f7888aec146104b4578063fd590847146104f457600080fd5b8063be00792914610422578063c661667d14610435578063e4dc2aa41461044857600080fd5b80638ab65686116100d35780638ab65686146103be5780638df2c8e6146103d1578063b5f783a8146103e4578063bb35799a1461040f57600080fd5b8063766c4f37146103905780637b2037cd146103a3578063805965f9146103b657600080fd5b80633aaa523211610166578063495b774611610140578063495b7746146102f15780634a5958ba146102f95780634c08d8e81461034157806372a142d01461037d57600080fd5b80633aaa5232146102855780633d594151146102be57806347c6394a146102de57600080fd5b80631fa57c25116101a25780631fa57c2514610229578063224b5c341461024c5780632d9d91f41461025f5780633621b5a91461027257600080fd5b80630b6511f2146101c957806310d14438146101f35780631b025a4014610214575b600080fd5b6101dc6101d736600461294b565b610507565b6040516101ea929190612997565b60405180910390f35b6102066102013660046129af565b61059e565b6040519081526020016101ea565b6102276102223660046129df565b6105f1565b005b61023c6102373660046129af565b610629565b60405190151581526020016101ea565b61020661025a366004612a12565b610676565b61023c61026d3660046129af565b61074d565b6101dc61028036600461294b565b61079a565b61020661029336600461294b565b6001600160a01b0316600090815260016020526040902054600160601b90046001600160601b031690565b6102d16102cc36600461294b565b610827565b6040516101ea9190612a4e565b6101dc6102ec366004612ace565b61091e565b6102066109c4565b610206610307366004612ace565b6001600160a01b0382811660009081526020818152604080832093851683529290522054600160601b90046001600160601b031692915050565b6103687f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101ea565b61020661038b3660046129af565b610a15565b61022761039e36600461294b565b610a20565b6102066103b1366004612af8565b610a2f565b610206610af1565b6102276103cc366004612ace565b610b3d565b6102276103df3660046129df565b610b48565b6103f76103f2366004612ace565b610b55565b6040516001600160a01b0390911681526020016101ea565b61020661041d366004612b22565b610b61565b6101dc610430366004612ace565b610c40565b610227610443366004612b64565b610cd9565b61020661045636600461294b565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b6103687f000000000000000000000000000000000000000000000000000000000000000081565b6102066104af366004612ba7565b610d11565b6102066104c2366004612ace565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546001600160601b031690565b6102d1610502366004612ace565b610dcb565b604080516060810182526000808252602082018190529181018290526001600160a01b038316600090815260016020818152604092839020835160808101855281546001600160601b038082168352600160601b8204169382019390935261ffff600160c01b8404811695820195909552600160d01b909204909316606082015261059491830190610ecf565b9250925050915091565b60006105eb7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084610f66565b92915050565b6001600160a01b03821661061857604051633a954ecd60e21b815260040160405180910390fd5b6106253360008484610fa0565b5050565b60006105eb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008461122e565b6001600160a01b038084166000908152602081815260408083209386168352928152828220835160808101855281546001600160601b038082168352600160601b8204169382019390935261ffff600160c01b8404811695820195909552600160d01b9092049093166060820152909190610742907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600185019061073d8861123b565b61139f565b9150505b9392505050565b60006105eb827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061144c565b604080516060810182526000808252602082018190529181018290526001600160a01b038316600090815260016020818152604092839020835160808101855281546001600160601b038082168352600160601b8204169382019390935261ffff600160c01b8404811695820195909552600160d01b909204909316606082015261059491830190611462565b61082f6128b1565b6001600160a01b0382166000908152600160208181526040808420815160c08101835281546001600160601b03808216838601908152600160601b8304909116606084015261ffff600160c01b830481166080850152600160d01b90920490911660a08301528152825162088e0081019093529490939285019284019061447090835b828210156109105760408051606081018252858401546001600160801b0381168252600160801b81046001600160601b0316602080840191909152600160e01b90910463ffffffff16928201929092528252600190920191016108b2565b505050915250909392505050565b604080516060810182526000808252602082018190529181018290526001600160a01b03808516600090815260208181526040808320938716835292815290829020825160808101845281546001600160601b038082168352600160601b8204169382019390935261ffff600160c01b8404811694820194909452600160d01b90920490921660608201526109b7906001830190610ecf565b92509250505b9250929050565b6000610a107f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006114fd565b905090565b60006105eb8261123b565b610a2c3382600161152f565b50565b6001600160a01b0382166000908152600160208181526040808420815160808101835281546001600160601b038082168352600160601b8204169482019490945261ffff600160c01b8504811693820193909352600160d01b909304909116606083015291610ae9917f0000000000000000000000000000000000000000000000000000000000000000917f0000000000000000000000000000000000000000000000000000000000000000919085019061073d8861123b565b949350505050565b6000610a107f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611659565b61062582338361152f565b6106253383600084610fa0565b60006107468383611665565b6001600160a01b038085166000908152602081815260408083209387168352928152828220835160808101855281546001600160601b038082168352600160601b8204169382019390935261ffff600160c01b8404811695820195909552600160d01b9092049093166060820152909190610c36907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001850190610c288961123b565b610c318961123b565b6116ad565b9695505050505050565b604080516060810182526000808252602082018190529181018290526001600160a01b03808516600090815260208181526040808320938716835292815290829020825160808101845281546001600160601b038082168352600160601b8204169382019390935261ffff600160c01b8404811694820194909452600160d01b90920490921660608201526109b7906001830190611462565b6001600160a01b038216610d0057604051633a954ecd60e21b815260040160405180910390fd5b610d0c33848484610fa0565b505050565b6001600160a01b0383166000908152600160208181526040808420815160808101835281546001600160601b038082168352600160601b8204169482019490945261ffff600160c01b8504811693820193909352600160d01b909304909116606083015291610742917f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009190850190610c288961123b565b610dd36128b1565b6001600160a01b038084166000908152602081815260408083209386168352928152828220835160c08101855281546001600160601b03808216838801908152600160601b8304909116606084015261ffff600160c01b830481166080850152600160d01b90920490911660a08301528152845162088e00810190955293909291840191600184019061447090835b82821015610ec05760408051606081018252858401546001600160801b0381168252600160801b81046001600160601b0316602080840191909152600160e01b90910463ffffffff1692820192909252825260019092019101610e62565b50505091525090949350505050565b604080516060810182526000808252602082018190529181018290526040830151610f009061ffff1661447061180f565b9150838261ffff166144708110610f1957610f19612bda565b6040805160608101825292909101546001600160801b03811683526001600160601b03600160801b820416602084015263ffffffff600160e01b9091041690820152919491935090915050565b60008263ffffffff168211610f7d57506000610746565b8363ffffffff168363ffffffff1683610f969190612c06565b610ae99190612c2f565b6000196001600160a01b03831601610fcb57604051635bb7132160e11b815260040160405180910390fd5b816001600160a01b0316836001600160a01b03160315611228576000610ff18585611665565b90506000610fff8685611665565b90506001600160a01b03851615611113576001600160a01b038281169086161461103787878684611031576000611840565b87611840565b8015801561104f57506001600160a01b038316600114155b15611061576110618784600087611840565b6001600160a01b038516158061109557506001600160a01b038216600114801561109557506001600160a01b038316600114155b1561111157611111876001600160a01b038716156110b45760006110b6565b855b6001600160a01b0388161580156110d757506001600160a01b038616600114155b8061110057506001600160a01b038516600114801561110057506001600160a01b038616600114155b61110b5760006119e5565b866119e5565b505b6001600160a01b03841615611225576001600160a01b038181169085161461114987868684611143576000611b55565b87611b55565b8015801561116157506001600160a01b038216600114155b15611173576111738783600087611b55565b6001600160a01b03861615806111a757506001600160a01b03831660011480156111a757506001600160a01b038216600114155b1561122357611223876001600160a01b038816156111c65760006111c8565b855b6001600160a01b0389161580156111e957506001600160a01b038516600114155b8061121257506001600160a01b038616600114801561121257506001600160a01b038516600114155b61121d576000611c49565b86611c49565b505b50505b50505050565b6000610ae9848484611d2b565b60007f000000000000000000000000000000000000000000000000000000000000000063ffffffff1682101561129757505063ffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16836112f09190612c06565b6112fa9190612c43565b600003611305575090565b60006113527f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000085610f66565b90506107467f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083611d42565b600085858360006113b08484611d6e565b9050808211156113e25760405163947ad91360e01b815260048101839052602481018290526044015b60405180910390fd5b8863ffffffff168610156113f9576000945061143f565b611404868b8b61144c565b15611412576000945061143f565b600061142e898961142963ffffffff8e168b612c06565b611d89565b602001516001600160601b03169550505b5050505095945050505050565b600061145883836114fd565b9093119392505050565b6040805160608101825260008082526020820181905291810182905261447061ffff16836060015161ffff1610156114df5750506040805160608101825283546001600160801b0381168252600160801b81046001600160601b03166020830152600160e01b900463ffffffff16918101919091526000906109bd565b82604001519150838261ffff166144708110610f1957610f19612bda565b60008261150e8163ffffffff612c57565b6115189190612c7a565b63ffffffff168263ffffffff166107469190612ca2565b600061153b8484611665565b905060006001600160a01b038316156115545782611557565b60015b9050816001600160a01b0316816001600160a01b03160361159657604051634929aa6560e01b81526001600160a01b03821660048201526024016113d9565b6001600160a01b03858116600081815260026020908152604080832089861680855290835281842080546001600160a01b031916968816969096179095559282528181528282209382529290925290205461160890869084908690611603906001600160601b0316611f1f565b611f8b565b806001600160a01b0316846001600160a01b0316866001600160a01b03167f2190b8902ea4a5dbea665e1965f2b2c0b04788c8831da4d881b56ddc9ead4fe860405160405180910390a45050505050565b60006107468383611d6e565b6000806001600160a01b0383161561074657506001600160a01b0380841660009081526002602090815260408083208685168452909152902054168061074657509092915050565b600086868360006116be8484611d6e565b9050808211156116eb5760405163947ad91360e01b815260048101839052602481018290526044016113d9565b8686101561171657604051630e781b2360e31b815260048101889052602481018790526044016113d9565b611721868c8c61144c565b1561172f5760009450611801565b600061174163ffffffff8c1689612c06565b9050600061175563ffffffff8d1689612c06565b905060006117648c8c84611d89565b905081830361178457602001516001600160601b03169650611801915050565b60006117918d8d86611d89565b905083816040015163ffffffff16146117b1576117ae8185612053565b90505b82826040015163ffffffff16146117cf576117cc8284612053565b91505b6117d98484612c06565b815183516117e79190612cb5565b6001600160801b03166117fa9190612c2f565b9850505050505b505050509695505050505050565b600081600003611821575060006105eb565b61074660016118308486612ca2565b61183a9190612c06565b836120e2565b6000806000866001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002090506000806000806118f77f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000878a8a604051806060016040528060278152602001612dd1602791396120ee565b9350935093509350866001600160601b0316600014158061192057506001600160601b03861615155b1561197a57604080516001600160601b03808a168252881660208201526001600160a01b03808b1692908c16917f739a1b631a38e2bc7ad3fa010c42fb36d61d698dff0f3cdc286c9af4e112651691015b60405180910390a35b81156119da57876001600160a01b0316896001600160a01b03167fa409cf694f828c617da9e6087db63f1d4fa98a83b5729247c40deeb74223f3768360000151846020015187896040516119d19493929190612cdc565b60405180910390a35b505050505050505050565b600060016000856001600160a01b03166001600160a01b031681526020019081526020016000209050600080600080611a7a7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000878a8a6040518060600160405280602b8152602001612df8602b91396120ee565b9350935093509350866001600160601b03166000141580611aa357506001600160601b03861615155b15611af857604080516001600160601b03808a168252881660208201526001600160a01b038a16917f91e2068cc3d2b858a7ac528b7d397c4af810c8de2bec8fb2323b1d3129b6070891015b60405180910390a25b8115611b4b57805160208201516040516001600160a01b038b16927f148a37ac83ecbcaa86f7c2d2e3cdff965fde6aa551bd16cca71c699fcf8b15a792611b429288908a90612cdc565b60405180910390a25b5050505050505050565b6001600160a01b03808516600090815260208181526040808320938716835292905290812090808080611bcb7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000878a8a6122be565b9350935093509350866001600160601b03166000141580611bf457506001600160601b03861615155b1561197a57604080516001600160601b03808a168252881660208201526001600160a01b03808b1692908c16917fd060d8ac6e1d35a3b85f6213429868001fc54dc6df96f7bec00142bca55bb9779101611971565b6001600160a01b038316600090815260016020526040812090808080611cb27f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000878a8a6122be565b9350935093509350866001600160601b03166000141580611cdb57506001600160601b03861615155b15611af857604080516001600160601b03808a168252881660208201526001600160a01b038a16917f3d57595af04c7f20dc620f8ca177326306383045b1a1049016dfda692144102d9101611aef565b6000611d378484611d6e565b909111159392505050565b600063ffffffff808416908516611d5a846001612ca2565b611d649190612d12565b610ae99190612ca2565b600080611d7c848442610f66565b9050610ae9848483612438565b6040805160608101825260008082526020820181905291810191909152826060015161ffff16600003611dd957506040805160608101825260008082526020820181905291810191909152610746565b6000611de58585611462565b8093508192505050816040015163ffffffff168363ffffffff161015611e735761447061ffff16846060015161ffff161015611e44575050604080516060810182526000808252602082015263ffffffff831691810191909152610746565b60408083015190516394a310c560e01b815263ffffffff808616600483015290911660248201526044016113d9565b836060015161ffff16600103611e895750610746565b600080611e968787610ecf565b91509150806040015163ffffffff168563ffffffff1610611ebb579250610746915050565b856060015161ffff16600203611ed357505050610746565b611eec878361ffff168561ffff16888a60600151612453565b6040820151939750919550909350915063ffffffff808716911603611f15579250610746915050565b5050509392505050565b60006001600160601b03821115611f875760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016113d9565b5090565b6001600160a01b03831615801590611fad57506001600160a01b038316600114155b15611fef57611fbf8484600084611840565b6001600160a01b0382161580611fde57506001600160a01b0382166001145b15611fef57611fef846000836119e5565b6001600160a01b0382161580159061201157506001600160a01b038216600114155b15611228576120238483600084611b55565b6001600160a01b038316158061204257506001600160a01b0383166001145b156112285761122884600083611c49565b604080516060810182526000808252602082018190529181019190915260405180606001604052806120af85856040820151602083015192516001600160801b03166001600160601b0390931663ffffffff9190920316020190565b6001600160801b0316815260200184602001516001600160601b031681526020018363ffffffff16815250905092915050565b60006107468284612c43565b604080516060810182526000808252602082018190529181019190915260408051608081018252600080825260208201819052918101829052606081018290528190506040805160808101825288546001600160601b03808216808452600160601b83048216602085015261ffff600160c01b8404811695850195909552600160d01b90920490931660608301529091881611156121a657805160405163e7283f1360e01b81526113d9919089908890600401612d29565b856001600160601b031681602001516001600160601b031610156121e75780602001518686604051630aa41cb360e21b81526004016113d993929190612d29565b6001600160601b0386161580159061220857506122048a8a6114fd565b4211155b81516001600160601b0390899003811683526020830180518990039091169052915081156122445761223c8a8a838b61262f565b919550935090505b805188546020830151604084015160608501516001600160601b039485166001600160c01b031990941693909317600160601b94909216939093021763ffffffff60c01b1916600160c01b61ffff9384160261ffff60d01b191617600160d01b929091169190910217909755919890975090955092505050565b604080516060810182526000808252602082018190529181019190915260408051608081018252600080825260208201819052918101829052606081018290528190506040805160808101825287546001600160601b038082168352600160601b82048116602084015261ffff600160c01b8304811694840194909452600160d01b909104909216606082015290851615801590612365575061236189896114fd565b4211155b915085816000018181516123799190612d95565b6001600160601b0316905250602081018051869190612399908390612d95565b6001600160601b031690525081156123bf576123b78989838a61262f565b919550935090505b805187546020830151604084015160608501516001600160601b039485166001600160c01b031990941693909317600160601b94909216939093021763ffffffff60c01b1916600160c01b61ffff9384160261ffff60d01b191617600160d01b9290911691909102179096559197909650909450915050565b60008263ffffffff168463ffffffff1683611d649190612d12565b6040805160608101825260008082526020820181905291810191909152604080516060810182526000808252602082018190529181018290526000808762ffffff1690506000818a62ffffff16106124b0578962ffffff166124ca565b60016124c061ffff891684612ca2565b6124ca9190612c06565b905060005b60026124db8385612ca2565b6124e59190612c2f565b90506124f5818961ffff166120e2565b95508b8661ffff16614470811061250e5761250e612bda565b6040805160608101825291909201546001600160801b0381168252600160801b81046001600160601b03166020830152600160e01b900463ffffffff1691810182905297506125618261ffff8b166127fa565b94508c8561ffff16614470811061257a5761257a612bda565b6040805160608101825291909201546001600160801b0381168252600160801b81046001600160601b03166020830152600160e01b900463ffffffff9081169282019290925296508a81169082161180159081906125e85750866040015163ffffffff168b63ffffffff1611155b156125f4575050612620565b8061260b57612604600184612c06565b9350612619565b612616836001612ca2565b94505b50506124cf565b50505095509550955095915050565b60408051606081018252600080825260208201819052918101919091526040805160808101825260008082526020820181905291810182905260608101829052600061268163ffffffff881642612c06565b60408051606081018252600080825260208201819052918101829052919250906126b08a8a896001018b61280a565b965090925090508415612709576126cd61ffff83166144706127fa565b61ffff90811660408a015260608901516144709116106126ef576144706126ff565b60608801516126ff906001612db5565b61ffff1660608901525b604051806060016040528061274883866040820151602083015192516001600160801b03166001600160601b0390931663ffffffff9190920316020190565b6001600160801b0316815260200189602001516001600160601b031681526020018463ffffffff16815250955085876001018361ffff16614470811061279057612790612bda565b825191018054602084015160409094015163ffffffff16600160e01b026001600160e01b036001600160601b03909516600160801b026001600160e01b03199092166001600160801b03909416939093171792909216179055509398929750949550909350505050565b600061074661183a846001612ca2565b604080516060810182526000808252602082018190529181018290526000806128338686610ecf565b935090506000612844898942610f66565b9050600061286e8a8a876040015163ffffffff168c63ffffffff166128699190612ca2565b610f66565b9050866060015161ffff166000148061288657508082115b1561289d57505050506040830151915060016128a7565b5090935060009150505b9450945094915050565b6040805160c0810182526000918101828152606082018390526080820183905260a0820192909252908152602081016128e86128ed565b905290565b6040518062088e000160405280614470905b60408051606081018252600080825260208083018290529282015282526000199092019101816128ff5790505090565b80356001600160a01b038116811461294657600080fd5b919050565b60006020828403121561295d57600080fd5b6107468261292f565b80516001600160801b031682526020808201516001600160601b03169083015260409081015163ffffffff16910152565b61ffff83168152608081016107466020830184612966565b6000602082840312156129c157600080fd5b5035919050565b80356001600160601b038116811461294657600080fd5b600080604083850312156129f257600080fd5b6129fb8361292f565b9150612a09602084016129c8565b90509250929050565b600080600060608486031215612a2757600080fd5b612a308461292f565b9250612a3e6020850161292f565b9150604084013590509250925092565b815180516001600160601b0390811683526020808301519091168184015260408083015161ffff908116918501919091526060928301511682840152808401516219aa8084019290916080850160005b614470811015612ac357612ab3828651612966565b9382019390830190600101612a9e565b505050505092915050565b60008060408385031215612ae157600080fd5b612aea8361292f565b9150612a096020840161292f565b60008060408385031215612b0b57600080fd5b612b148361292f565b946020939093013593505050565b60008060008060808587031215612b3857600080fd5b612b418561292f565b9350612b4f6020860161292f565b93969395505050506040820135916060013590565b600080600060608486031215612b7957600080fd5b612b828461292f565b9250612b906020850161292f565b9150612b9e604085016129c8565b90509250925092565b600080600060608486031215612bbc57600080fd5b612bc58461292f565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156105eb576105eb612bf0565b634e487b7160e01b600052601260045260246000fd5b600082612c3e57612c3e612c19565b500490565b600082612c5257612c52612c19565b500690565b600063ffffffff80841680612c6e57612c6e612c19565b92169190910492915050565b63ffffffff818116838216028082169190828114612c9a57612c9a612bf0565b505092915050565b808201808211156105eb576105eb612bf0565b6001600160801b03828116828216039080821115612cd557612cd5612bf0565b5092915050565b6001600160601b03858116825284166020820152821515604082015260c08101612d096060830184612966565b95945050505050565b80820281158282048414176105eb576105eb612bf0565b60006001600160601b03808616835260208186166020850152606060408501528451915081606085015260005b82811015612d7257858101820151858201608001528101612d56565b50506000608082850101526080601f19601f830116840101915050949350505050565b6001600160601b03818116838216019080821115612cd557612cd5612bf0565b61ffff818116838216019080821115612cd557612cd5612bf056fe54432f6f62736572766174696f6e2d6275726e2d6c742d64656c65676174652d62616c616e636554432f6275726e2d616d6f756e742d657863656564732d746f74616c2d737570706c792d62616c616e6365a26469706673582212207f8084a95053076eba53f8ad95df5d3a30f0177e4d21a64c2b77cc469b51273164736f6c634300081800330000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000000000066c39630