250 txs
582 calls
constructor
constructor(address _initialRescuer, address _initialExecutor, address _circuitBreakerProxy, address _templeToken, address _daiToken, uint256 _maxLtvRatio, address _interestRateModel)
functions
accountData
viewfunction accountData(address account) view returns (tuple)
accountPosition
viewfunction accountPosition(address account) view returns (tuple position)
circuitBreakerProxy
viewfunction circuitBreakerProxy() view returns (address)
computeLiquidity
viewfunction computeLiquidity(address[] accounts) view returns (tuple[] status)
daiToken
viewfunction daiToken() view returns (address)
debtTokenDetails
viewfunction debtTokenDetails() view returns (tuple, tuple)
executor
viewfunction executor() view returns (address)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
getDebtTokenCache
viewfunction getDebtTokenCache() view returns (tuple)
inRescueMode
viewfunction inRescueMode() view returns (bool)
liquidationsPaused
viewfunction liquidationsPaused() view returns (bool)
minBorrowAmount
viewfunction minBorrowAmount() view returns (uint128)
rescuer
viewfunction rescuer() view returns (address)
templeToken
viewfunction templeToken() view returns (address)
tlcStrategy
viewfunction tlcStrategy() view returns (address)
totalCollateral
viewfunction totalCollateral() view returns (uint256)
totalDebtPosition
viewfunction totalDebtPosition() view returns (tuple position)
treasuryReservesVault
viewfunction treasuryReservesVault() view returns (address)
acceptExecutor
nonpayablefunction acceptExecutor()
acceptRescuer
nonpayablefunction acceptRescuer()
addCollateral
nonpayablefunction addCollateral(uint128 collateralAmount, address onBehalfOf)
batchLiquidate
nonpayablefunction batchLiquidate(address[] accounts) returns (uint128 totalCollateralClaimed, uint128 totalDebtWiped)
borrow
nonpayablefunction borrow(uint128 amount, address recipient)
proposeNewExecutor
nonpayablefunction proposeNewExecutor(address account)
proposeNewRescuer
nonpayablefunction proposeNewRescuer(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
refreshInterestRates
nonpayablefunction refreshInterestRates()
removeCollateral
nonpayablefunction removeCollateral(uint128 amount, address recipient)
repay
nonpayablefunction repay(uint128 repayAmount, address onBehalfOf)
repayAll
nonpayablefunction repayAll(address onBehalfOf)
setBorrowPaused
nonpayablefunction setBorrowPaused(bool isPaused)
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setInterestRateModel
nonpayablefunction setInterestRateModel(address interestRateModel)
setLiquidationsPaused
nonpayablefunction setLiquidationsPaused(bool isPaused)
setMaxLtvRatio
nonpayablefunction setMaxLtvRatio(uint256 maxLtvRatio)
setMinBorrowAmount
nonpayablefunction setMinBorrowAmount(uint128 amount)
setRescueMode
nonpayablefunction setRescueMode(bool value)
setTlcStrategy
nonpayablefunction setTlcStrategy(address newTlcStrategy)
events
Borrow
event Borrow(address indexed account, address indexed recipient, uint128 amount)
BorrowPausedSet
event BorrowPausedSet(bool isPaused)
CollateralAdded
event CollateralAdded(address indexed fundedBy, address indexed onBehalfOf, uint128 collateralAmount)
CollateralRemoved
event CollateralRemoved(address indexed account, address indexed recipient, uint128 collateralAmount)
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
InterestRateModelSet
event InterestRateModelSet(address indexed interestRateModel)
InterestRateUpdate
event InterestRateUpdate(uint96 newInterestRate)
Liquidated
event Liquidated(address indexed account, uint128 collateralSeized, uint256 collateralValue, uint128 daiDebtWiped)
LiquidationsPausedSet
event LiquidationsPausedSet(bool isPaused)
MaxLtvRatioSet
event MaxLtvRatioSet(uint256 maxLtvRatio)
MinBorrowAmountSet
event MinBorrowAmountSet(uint128 amount)
NewExecutorAccepted
event NewExecutorAccepted(address indexed oldExecutor, address indexed newExecutor)
NewExecutorProposed
event NewExecutorProposed(address indexed oldExecutor, address indexed oldProposedExecutor, address indexed newProposedExecutor)
NewRescuerAccepted
event NewRescuerAccepted(address indexed oldRescuer, address indexed newRescuer)
NewRescuerProposed
event NewRescuerProposed(address indexed oldRescuer, address indexed oldProposedRescuer, address indexed newProposedRescuer)
Repay
event Repay(address indexed fundedBy, address indexed onBehalfOf, uint128 repayAmount)
RescueModeSet
event RescueModeSet(bool indexed value)
TlcStrategySet
event TlcStrategySet(address indexed strategy, address indexed treasuryReservesVault)
errors
ExceededBorrowedAmount
error ExceededBorrowedAmount(uint256 totalDebtAmount, uint256 repayAmount)
ExceededMaxLtv
error ExceededMaxLtv(uint256 collateralAmount, uint256 collateralValue, uint256 currentDaiDebt)
ExpectedNonZero
error ExpectedNonZero()
InsufficientAmount
error InsufficientAmount(uint256 required, uint256 provided)
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount(address token, uint256 amount)
InvalidParam
error InvalidParam()
Overflow
error Overflow(uint256 amount)
Paused
error Paused()
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
PRBMath_MulDiv18_Overflow
error PRBMath_MulDiv18_Overflow(uint256 x, uint256 y)
PRBMath_UD60x18_Exp_InputTooBig
error PRBMath_UD60x18_Exp_InputTooBig(uint256 x)
PRBMath_UD60x18_Exp2_InputTooBig
error PRBMath_UD60x18_Exp2_InputTooBig(uint256 x)
creation bytecode
0x60e0604052600d8054610100600160881b031916693635c9adc5dea00000001790553480156200002e57600080fd5b50604051620054163803806200541683398101604081905262000051916200021a565b86866001600160a01b0382166200007b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000a35760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000d65760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b03948516179091556001805490911691831691909117905585811660c052848116608052831660a052670de0b6b3a76400008211156200014057604051633494a40d60e21b815260040160405180910390fd5b6001600160a01b0381166200016857604051631536c32360e21b815260040160405180910390fd5b60408051606080820183526001600160601b039094168082526001600160a01b03909316602080830182905260009284018390526c01000000000000000000000000909102909317600955600a805460ff19169055815160808101835263ffffffff4216808252938101829052918201526b033b2e3c9fd0803ce80000009201829052600b55600c5550620002a69350505050565b80516001600160a01b03811681146200021557600080fd5b919050565b600080600080600080600060e0888a0312156200023657600080fd5b6200024188620001fd565b96506200025160208901620001fd565b95506200026160408901620001fd565b94506200027160608901620001fd565b93506200028160808901620001fd565b925060a088015191506200029860c08901620001fd565b905092959891949750929550565b60805160a05160c0516150c96200034d60003960008181610540015281816116fc01526121b20152600081816107610152818161216c0152818161251e015281816126280152818161266a0152818161306f015281816130ec0152613a3201526000818161067a015281816113e60152818161146401528181611634015281816116b60152818161184401528181611c4201528181611cc40152611fe401526150c96000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c80638fb5053e11610160578063be415927116100d8578063d9a349c11161008c578063daeccc7911610071578063daeccc791461082f578063deb906e71461085d578063f46cf7f01461092c57600080fd5b8063d9a349c114610809578063d9a7ed5c1461081c57600080fd5b8063c34c08e5116100bd578063c34c08e5146107a9578063c3e7a9de146107c9578063d495f89f146107e957600080fd5b8063be41592714610783578063bfccf0ec1461079657600080fd5b8063a8cdda061161012f578063b3a3684711610114578063b3a368471461069c578063b74823bb146106af578063be22f5461461075c57600080fd5b8063a8cdda0614610662578063b1a9069c1461067557600080fd5b80638fb5053e146105ff578063939752bd14610612578063a356bad914610625578063a7229fd91461064f57600080fd5b806338a631831161020e5780638112c4af116101c2578063872ec463116101a7578063872ec463146105cc5780638bcd4016146105df5780638f6d0f11146105f257600080fd5b80638112c4af1461058857806381cf90711461059057600080fd5b80634b2adf17116101f35780634b2adf171461053b5780634ffd48f4146105625780637c27383b1461057557600080fd5b806338a63183146105045780634ac8eb5f1461052457600080fd5b80630a5db8a8116102655780631810fe7f1161024a5780631810fe7f146104cc5780631f211405146104e957806325e6b5e8146104f157600080fd5b80630a5db8a814610445578063101d16841461048757600080fd5b80630230192d14610297578063032ef9011461041557806307f184f11461042a578063089771b31461043d575b600080fd5b60408051606080820183526000808352602080840182905292840181905283516080808201865282825281850183905281860183905290830191909152835180830185526009546bffffffffffffffffffffffff80821683526c0100000000000000000000000090910473ffffffffffffffffffffffffffffffffffffffff1682860152600a5460ff1615158287015285519283018652600b5463ffffffff8116845264010000000081046fffffffffffffffffffffffffffffffff16958401959095527401000000000000000000000000000000000000000090940490931693810193909352600c5490830152906040805183516bffffffffffffffffffffffff908116825260208086015173ffffffffffffffffffffffffffffffffffffffff168184015294830151151582840152835163ffffffff16606080840191909152948401516fffffffffffffffffffffffffffffffff1660808301529183015190911660a082015291015160c082015260e0015b60405180910390f35b610428610423366004614a2e565b610992565b005b610428610438366004614a6d565b610a41565b610428610b79565b600d546104669061010090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff909116815260200161040c565b6005546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161040c565b6003546104d99060ff1681565b604051901515815260200161040c565b610428610b8b565b6104286104ff366004614aaf565b610caa565b6000546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b61052d60075481565b60405190815260200161040c565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b610428610570366004614ae6565b610e6b565b610428610583366004614a6d565b610f4c565b610428611078565b6105a361059e366004614b01565b6111b8565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520161040c565b6104286105da366004614aaf565b61153f565b6104286105ed366004614a6d565b61187d565b600d546104d99060ff1681565b61042861060d366004614b76565b611985565b610428610620366004614a2e565b611a9d565b61062d611b67565b604080518251815260208084015190820152918101519082015260600161040c565b61042861065d366004614b8f565b611bdc565b610428610670366004614aaf565b611e3b565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b6104286106aa366004614aaf565b61201e565b6106b76123fc565b60405161040c9190815180516bffffffffffffffffffffffff16825260208082015173ffffffffffffffffffffffffffffffffffffffff169083015260409081015115159082015261010081016fffffffffffffffffffffffffffffffff60208401511660608301526bffffffffffffffffffffffff6040840151166080830152606083015160a0830152608083015160c083015260a083015160e083015292915050565b6104a77f000000000000000000000000000000000000000000000000000000000000000081565b610428610791366004614a6d565b612451565b6104286107a4366004614bd0565b612716565b6001546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b6107dc6107d7366004614b01565b61291d565b60405161040c9190614c58565b6006546104a79073ffffffffffffffffffffffffffffffffffffffff1681565b610428610817366004614a6d565b612a68565b61042861082a366004614a2e565b612bad565b6104d961083d366004614d03565b600260209081526000928352604080842090915290825290205460ff1681565b6108f361086b366004614a6d565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff94909416845260088252928290208251938401835280546fffffffffffffffffffffffffffffffff80821686527001000000000000000000000000000000009091041691840191909152600101549082015290565b6040805182516fffffffffffffffffffffffffffffffff908116825260208085015190911690820152918101519082015260600161040c565b61093f61093a366004614a6d565b612c70565b6040805182516fffffffffffffffffffffffffffffffff9081168252602080850151821690830152838301511691810191909152606080830151908201526080918201519181019190915260a00161040c565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109e3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a92576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610adf576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610b89610b84612d97565b612e4a565b565b60045473ffffffffffffffffffffffffffffffffffffffff163314610bdc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610c2d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b60035460ff1615610ce7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff16600003610d33576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040812090610d61612d97565b90506000610d96828460000160109054906101000a90046fffffffffffffffffffffffffffffffff1685600101546001612f92565b9050806fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff161115610e17576040517f27c447850000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8083166004830152861660248201526044015b60405180910390fd5b82546fffffffffffffffffffffffffffffffff91869003828116700100000000000000000000000000000000029290911691909117835560608201516001840155610e6482863387612fe9565b5050505050565b610e99336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b610ecf576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffffffffff00000000000000000000000000000000ff166101006fffffffffffffffffffffffffffffffff8416908102919091179091556040519081527fb6082fede9c667d0939952970ae580680601d1fc2ec7fe1d8ddf5c1ab4927d5b906020015b60405180910390a150565b60035460ff1615610f89576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f93612d97565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040812080546001808301549495509193610ff892869270010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff169190612f92565b9050806fffffffffffffffffffffffffffffffff16600003611046576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546fffffffffffffffffffffffffffffffff1682556060830151600183015561107283823387612fe9565b50505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146110ce576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff16330361111f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600354600090819060ff16156111fa576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d5460ff1615611237576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526000808252602082018190529181018290526060810182905290611263612d97565b9050600085815b818110156113af5788888281811061128457611284614d38565b90506020020160208101906112999190614a6d565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604090209093506112cb9085613207565b80519095501561139f576020808601516040808801516060808a015183516fffffffffffffffffffffffffffffffff95861681529586019290925292169083015273ffffffffffffffffffffffffffffffffffffffff8516917fe8310e1de285c70a341b4aa33ea9850fc9e6a2f13d1e4833a99edbbf007a654b910160405180910390a2602085015161135e9088614d96565b96508460600151866113709190614d96565b73ffffffffffffffffffffffffffffffffffffffff841660009081526008602052604081208181556001015595505b6113a881614dc6565b905061126a565b506fffffffffffffffffffffffffffffffff861615611512576005546114219073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691166fffffffffffffffffffffffffffffffff89166132e2565b6005546006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff8a1660248301529182166044820152911690635ceae9c490606401600060405180830381600087803b1580156114d057600080fd5b505af11580156114e4573d6000803e3d6000fd5b50505050856fffffffffffffffffffffffffffffffff166007600082825461150c9190614dfe565b90915550505b6fffffffffffffffffffffffffffffffff851615611534576115348386613459565b505050509250929050565b60035460ff161561157c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff166000036115c8576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260086020526040902080546fffffffffffffffffffffffffffffffff908116908416811015611679576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201526fffffffffffffffffffffffffffffffff85166024820152604401610e0e565b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523360248301526fffffffffffffffffffffffffffffffff861660448301527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b15801561174057600080fd5b505af1158015611754573d6000803e3d6000fd5b5050505083816117649190614e11565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91821617835560078054918616916000906117b5908490614dfe565b90915550506040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84169033907f5bb115afc193c15025432a5b5d0608d8b6191666f532aa1b34172bee74c0c7049060200160405180910390a361182a8261182561350f565b613564565b61107273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016846fffffffffffffffffffffffffffffffff87166135df565b6118ab336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6118e1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f7902cd1307c545e3f5782172612372bf997a93698917ced12b2f83d86e347d0c90600090a2600061192c612d97565b805173ffffffffffffffffffffffffffffffffffffffff84166020909101819052600980546bffffffffffffffffffffffff166c01000000000000000000000000909202919091179055905061198181612e4a565b5050565b6119b3336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6119e9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b670de0b6b3a7640000811115611a2b576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518181527f97a2b3b447f10c044556f6bee068ba4907d386ce7a2f5ccf193b9e9beabba0c89060200160405180910390a1600980547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff92909216919091179055565b611acb336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b611b01576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405181151581527fa1f4a6e2dfc84e852c5dd5b715b3ed1834e8b6017e6bfb3a59d61dbce99574d29060200160405180910390a1600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b611b8b60405180606001604052806000815260200160008152602001600081525090565b6000611b9561350f565b9050611ba081613635565b82526040808201516bffffffffffffffffffffffff16602080850191909152909101516fffffffffffffffffffffffffffffffff169082015290565b611c0a336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b611c40576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d449190614e3a565b905060075481611d549190614dfe565b821115611dac576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101839052604401610e0e565b505b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611e0d91815260200190565b60405180910390a3611e3673ffffffffffffffffffffffffffffffffffffffff841683836135df565b505050565b60035460ff1615611e78576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff16600003611ec4576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516fffffffffffffffffffffffffffffffff8316815273ffffffffffffffffffffffffffffffffffffffff82169033907fa294b8c659c4fead0fea8156278762692bd09dced6313207eba83a4404d1365e9060200160405180910390a373ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081208054849290611f6a9084906fffffffffffffffffffffffffffffffff16614d96565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550816fffffffffffffffffffffffffffffffff1660076000828254611fc49190614e53565b90915550611981905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633306fffffffffffffffffffffffffffffffff861661367d565b60035460ff161561205b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546fffffffffffffffffffffffffffffffff610100909104811690831610156120d757600d546040517f6d400e380000000000000000000000000000000000000000000000000000000081526101009091046fffffffffffffffffffffffffffffffff908116600483015283166024820152604401610e0e565b336000908152600860205260408120906120ef612d97565b8051604001519091501561212f576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f57f597b700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523360248301526fffffffffffffffffffffffffffffffff861660448301527f000000000000000000000000000000000000000000000000000000000000000016906357f597b790606401600060405180830381600087803b1580156121f657600080fd5b505af115801561220a573d6000803e3d6000fd5b50505050600084612242838560000160109054906101000a90046fffffffffffffffffffffffffffffffff1686600101546000612f92565b61224c9190614d96565b83546fffffffffffffffffffffffffffffffff808316700100000000000000000000000000000000029116178455606083015160018501556020830151909150612297908690614d96565b6fffffffffffffffffffffffffffffffff1660208301819052600b80547fffffffffffffffffffffffff00000000000000000000000000000000ffffffff166401000000009092029190911790556122ee82612e4a565b506040516fffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84169033907f5fee80056e42d3f27fe8a849b24eac30fcc58726838c192dbda4bc4dc46a5d3e9060200160405180910390a36123588282613564565b6006546040517f2642e7ed0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8616600482015273ffffffffffffffffffffffffffffffffffffffff858116602483015290911690632642e7ed906044015b600060405180830381600087803b1580156123de57600080fd5b505af11580156123f2573d6000803e3d6000fd5b5050505050505050565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a081019190915261244c61350f565b905090565b61247f336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b6124b5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556005541680156125465761254673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168260006136db565b600654604080517f101d1684000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163101d16849160048083019260209291908290030181865afa1580156125b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125da9190614e66565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117909155909150612650907f0000000000000000000000000000000000000000000000000000000000000000168260006136db565b6126b173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132e2565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fa93dadf034ad1899d178bd48d8d0af412f02457dc5e74580e7217fcf1456cea160405160405180910390a3611e36610b84612d97565b612744336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b61277a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166127c7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015612915578484828181106127fa576127fa614d38565b9050604002018036038101906128109190614eb2565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905561290e81614dc6565b90506127e0565b505050505050565b6060818067ffffffffffffffff81111561293957612939614e83565b6040519080825280602002602001820160405280156129a957816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816129575790505b50915060006129b661350f565b905060005b82811015612a5f57612a31600860008888858181106129dc576129dc614d38565b90506020020160208101906129f19190614a6d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083613207565b848281518110612a4357612a43614d38565b602002602001018190525080612a5890614dc6565b90506129bb565b50505092915050565b612a96336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b612acc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612b19576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612bdb336000357fffffffff0000000000000000000000000000000000000000000000000000000016613143565b612c11576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f9620f507aec770d0d1dfc5054ec14baa7cc0fa4d49a042a5feb1e11aa1ccb16790602001610f41565b6040805160a08101825260008082526020808301829052828401829052606083018290526080830182905273ffffffffffffffffffffffffffffffffffffffff85168252600890529182209091612cc561350f565b82546fffffffffffffffffffffffffffffffff8082168652600180860154939450612d0a93859370010000000000000000000000000000000090049092169190612f92565b6fffffffffffffffffffffffffffffffff1660208401528251612d2e90829061385d565b6fffffffffffffffffffffffffffffffff908116604085015283516020850151612d5d928492811691166138b4565b606084015282516020840151612d8a9183916fffffffffffffffffffffffffffffffff9182169116613925565b6080840152509092915050565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a0810191909152612de881613951565b15612e4757600b805460208301516fffffffffffffffffffffffffffffffff16640100000000027fffffffffffffffffffffffff000000000000000000000000000000000000000090911663ffffffff4216171790556060810151600c555b90565b80516020015160009073ffffffffffffffffffffffffffffffffffffffff166390d3b379612e7784613635565b6040518263ffffffff1660e01b8152600401612e9591815260200190565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190614f36565b9050806bffffffffffffffffffffffff1682604001516bffffffffffffffffffffffff1614611981576040516bffffffffffffffffffffffff821681527f5bac5d73010c05db73a6f017d97786be2d011fdeeda45a3ad49ddfd4c4d836ee9060200160405180910390a16bffffffffffffffffffffffff16604091909101819052600b805473ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000909202919091179055565b60006fffffffffffffffffffffffffffffffff841615612fdb57612fd6612fd1856fffffffffffffffffffffffffffffffff1687606001518686613bc1565b613bfd565b612fde565b60005b90505b949350505050565b612ff38484613459565b6040516fffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff80831691908416907fb81daa514d39133aa6960d430d2f15f0c150cb0e4d51c8ff506080c34985f6009060200160405180910390a36130a973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683306fffffffffffffffffffffffffffffffff871661367d565b6005546006546040517f5ceae9c400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff871660248301529182166044820152911690635ceae9c4906064016123c4565b60035460009060ff1615613175575060005473ffffffffffffffffffffffffffffffffffffffff838116911614613201565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806131f0575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156131fd57506001613201565b5060005b92915050565b604080516080810182526000808252918101829052606081019190915282546fffffffffffffffffffffffffffffffff80821660208401526001808601546132679386937001000000000000000000000000000000009091041691612f92565b6fffffffffffffffffffffffffffffffff908116606083015260808301516020830151670de0b6b3a76400009261329f929116614f64565b6132a99190614faa565b604082015260208101516132be90839061385d565b60608201516fffffffffffffffffffffffffffffffff918216911611815292915050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c9190614e3a565b9050611072847f095ea7b300000000000000000000000000000000000000000000000000000000856133ae8686614e53565b60405173ffffffffffffffffffffffffffffffffffffffff909216602483015260448201526064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613c4c565b806fffffffffffffffffffffffffffffffff16600003613477575050565b600082602001516fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16116134b457818360200151036134b7565b60005b6fffffffffffffffffffffffffffffffff1660208401819052600b80547fffffffffffffffffffffffff00000000000000000000000000000000ffffffff166401000000009092029190911790555061198182612e4a565b6040805161012081018252600060c0820181815260e083018290526101008301829052825260208201819052918101829052606081018290526080810182905260a081019190915261356081613951565b5090565b60006135708383613207565b805190915015611e36576020810151604080830151606084015191517f049f16120000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9384166004820152602481019190915291166044820152606401610e0e565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611e369084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016133d7565b60008160a001516000146136755761367082602001516fffffffffffffffffffffffffffffffff16670de0b6b3a76400008460a00151613d5b565b613201565b600092915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110729085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016133d7565b80158061377b57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137799190614e3a565b155b613807576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610e0e565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611e369084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016133d7565b60006138ad612fd18460800151846fffffffffffffffffffffffffffffffff166138879190614f64565b8551516bffffffffffffffffffffffff166ec097ce7bc90715b34b9f1000000000613d5b565b9392505050565b600081156138fc576138f78460800151846138cf9190614f64565b8551516bffffffffffffffffffffffff166138f2670de0b6b3a764000086614f64565b613d5b565b612fe1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082156138fc576138f7826ec097ce7bc90715b34b9f10000000008660800151866138f29190614f64565b60408051606080820183526009546bffffffffffffffffffffffff808216845273ffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000009092048216602080860191909152600a5460ff16151585870152938652600c5492860192909252600b546fffffffffffffffffffffffffffffffff6401000000008204169386019390935274010000000000000000000000000000000000000000909204168383015260055460065492517fdd07270400000000000000000000000000000000000000000000000000000000815292821660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152600092911690819063dd07270490604401602060405180830381865afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa9190614e3a565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16639ed384f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b229190614f36565b6bffffffffffffffffffffffff16608084015250600b5463ffffffff908116420390811615613bbb57600191506000613b748263ffffffff1685604001518660600151613e669092919063ffffffff16565b9050613b9e612fd18286602001516fffffffffffffffffffffffffffffffff168760600151613d5b565b6fffffffffffffffffffffffffffffffff16602085015260608401525b50919050565b6000613bce858585613d5b565b9050818015613bed575060008380613be857613be8614f7b565b858709115b15612fe157612fde600182614e53565b60006fffffffffffffffffffffffffffffffff821115613560576040517fe0fb6a7c00000000000000000000000000000000000000000000000000000000815260048101839052602401610e0e565b6000613cae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613eb19092919063ffffffff16565b9050805160001480613ccf575080806020019051810190613ccf9190614fe5565b611e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e0e565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003613db357838281613da957613da9614f7b565b04925050506138ad565b838110613dfd576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610e0e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000806301e13380613e866bffffffffffffffffffffffff851686614f64565b613e909190614faa565b9050613ea8612e47613ea183613ec0565b8790613f27565b95945050505050565b6060612fe18484600085613f36565b600081680736ea4425c11ac630811115613f09576040517f1af63aca00000000000000000000000000000000000000000000000000000000815260048101849052602401610e0e565b6714057b7ef767814f8102612fe1670de0b6b3a7640000820461404f565b60006138ad612e4784846140be565b606082471015613fc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e0e565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ff19190615026565b60006040518083038185875af1925050503d806000811461402e576040519150601f19603f3d011682016040523d82523d6000602084013e614033565b606091505b5091509150614044878383876141c5565b979650505050505050565b600081680a688906bd8affffff811115614098576040517fb3b6ba1f00000000000000000000000000000000000000000000000000000000815260048101849052602401610e0e565b60006140b0670de0b6b3a7640000604084901b614faa565b9050612fe1612e4782614265565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050806000036141105750670de0b6b3a764000090049050613201565b670de0b6b3a7640000811061415b576040517f5173648d0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610e0e565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b6060831561425b5782516000036142545773ffffffffffffffffffffffffffffffffffffffff85163b614254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e0e565b5081612fe1565b612fe183836149d9565b7780000000000000000000000000000000000000000000000067ff00000000000000821615614386576780000000000000008216156142ad5768016a09e667f3bcc9090260401c5b6740000000000000008216156142cc576801306fe0a31b7152df0260401c5b6720000000000000008216156142eb576801172b83c7d517adce0260401c5b67100000000000000082161561430a5768010b5586cf9890f62a0260401c5b670800000000000000821615614329576801059b0d31585743ae0260401c5b67040000000000000082161561434857680102c9a3e778060ee70260401c5b6702000000000000008216156143675768010163da9fb33356d80260401c5b67010000000000000082161561438657680100b1afa5abcbed610260401c5b66ff0000000000008216156144855766800000000000008216156143b35768010058c86da1c09ea20260401c5b66400000000000008216156143d1576801002c605e2e8cec500260401c5b66200000000000008216156143ef57680100162f3904051fa10260401c5b661000000000000082161561440d576801000b175effdc76ba0260401c5b660800000000000082161561442b57680100058ba01fb9f96d0260401c5b66040000000000008216156144495768010002c5cc37da94920260401c5b6602000000000000821615614467576801000162e525ee05470260401c5b66010000000000008216156144855768010000b17255775c040260401c5b65ff000000000082161561457b57658000000000008216156144b0576801000058b91b5bc9ae0260401c5b654000000000008216156144cd57680100002c5c89d5ec6d0260401c5b652000000000008216156144ea5768010000162e43f4f8310260401c5b6510000000000082161561450757680100000b1721bcfc9a0260401c5b650800000000008216156145245768010000058b90cf1e6e0260401c5b65040000000000821615614541576801000002c5c863b73f0260401c5b6502000000000082161561455e57680100000162e430e5a20260401c5b6501000000000082161561457b576801000000b1721835510260401c5b64ff00000000821615614668576480000000008216156145a457680100000058b90c0b490260401c5b6440000000008216156145c05768010000002c5c8601cc0260401c5b6420000000008216156145dc576801000000162e42fff00260401c5b6410000000008216156145f85768010000000b17217fbb0260401c5b640800000000821615614614576801000000058b90bfce0260401c5b64040000000082161561463057680100000002c5c85fe30260401c5b64020000000082161561464c5768010000000162e42ff10260401c5b64010000000082161561466857680100000000b17217f80260401c5b63ff00000082161561474c57638000000082161561468f5768010000000058b90bfc0260401c5b63400000008216156146aa576801000000002c5c85fe0260401c5b63200000008216156146c557680100000000162e42ff0260401c5b63100000008216156146e0576801000000000b17217f0260401c5b63080000008216156146fb57680100000000058b90c00260401c5b63040000008216156147165768010000000002c5c8600260401c5b6302000000821615614731576801000000000162e4300260401c5b630100000082161561474c5768010000000000b172180260401c5b62ff00008216156148275762800000821615614771576801000000000058b90c0260401c5b6240000082161561478b57680100000000002c5c860260401c5b622000008216156147a55768010000000000162e430260401c5b621000008216156147bf57680100000000000b17210260401c5b620800008216156147d95768010000000000058b910260401c5b620400008216156147f3576801000000000002c5c80260401c5b6202000082161561480d57680100000000000162e40260401c5b62010000821615614827576801000000000000b1720260401c5b61ff008216156148f95761800082161561484a57680100000000000058b90260401c5b6140008216156148635768010000000000002c5d0260401c5b61200082161561487c576801000000000000162e0260401c5b6110008216156148955768010000000000000b170260401c5b6108008216156148ae576801000000000000058c0260401c5b6104008216156148c757680100000000000002c60260401c5b6102008216156148e057680100000000000001630260401c5b6101008216156148f957680100000000000000b10260401c5b60ff8216156149c257608082161561491a57680100000000000000590260401c5b6040821615614932576801000000000000002c0260401c5b602082161561494a57680100000000000000160260401c5b6010821615614962576801000000000000000b0260401c5b600882161561497a57680100000000000000060260401c5b600482161561499257680100000000000000030260401c5b60028216156149aa57680100000000000000010260401c5b60018216156149c257680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b8151156149e95781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e9190615042565b8015158114614a2b57600080fd5b50565b600060208284031215614a4057600080fd5b81356138ad81614a1d565b73ffffffffffffffffffffffffffffffffffffffff81168114614a2b57600080fd5b600060208284031215614a7f57600080fd5b81356138ad81614a4b565b80356fffffffffffffffffffffffffffffffff81168114614aaa57600080fd5b919050565b60008060408385031215614ac257600080fd5b614acb83614a8a565b91506020830135614adb81614a4b565b809150509250929050565b600060208284031215614af857600080fd5b6138ad82614a8a565b60008060208385031215614b1457600080fd5b823567ffffffffffffffff80821115614b2c57600080fd5b818501915085601f830112614b4057600080fd5b813581811115614b4f57600080fd5b8660208260051b8501011115614b6457600080fd5b60209290920196919550909350505050565b600060208284031215614b8857600080fd5b5035919050565b600080600060608486031215614ba457600080fd5b8335614baf81614a4b565b92506020840135614bbf81614a4b565b929592945050506040919091013590565b600080600060408486031215614be557600080fd5b8335614bf081614a4b565b9250602084013567ffffffffffffffff80821115614c0d57600080fd5b818601915086601f830112614c2157600080fd5b813581811115614c3057600080fd5b8760208260061b8501011115614c4557600080fd5b6020830194508093505050509250925092565b602080825282518282018190526000919060409081850190868401855b82811015614cc6578151805115158552868101516fffffffffffffffffffffffffffffffff908116888701528682015187870152606091820151169085015260809093019290850190600101614c75565b5091979650505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614aaa57600080fd5b60008060408385031215614d1657600080fd5b8235614d2181614a4b565b9150614d2f60208401614cd3565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff818116838216019080821115614dbf57614dbf614d67565b5092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614df757614df7614d67565b5060010190565b8181038181111561320157613201614d67565b6fffffffffffffffffffffffffffffffff828116828216039080821115614dbf57614dbf614d67565b600060208284031215614e4c57600080fd5b5051919050565b8082018082111561320157613201614d67565b600060208284031215614e7857600080fd5b81516138ad81614a4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060408284031215614ec457600080fd5b6040516040810181811067ffffffffffffffff82111715614f0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052614f1a83614cd3565b81526020830135614f2a81614a1d565b60208201529392505050565b600060208284031215614f4857600080fd5b81516bffffffffffffffffffffffff811681146138ad57600080fd5b808202811582820484141761320157613201614d67565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614fe0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215614ff757600080fd5b81516138ad81614a1d565b60005b8381101561501d578181015183820152602001615005565b50506000910152565b60008251615038818460208701615002565b9190910192915050565b6020815260008251806020840152615061816040850160208701615002565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212208839514266137ae35124e7fd5a779701e64e0b129ac9b43120bc98a16e91694d64736f6c634300081300330000000000000000000000009f90430179d9b67341bfa50559bc7b8e35629f1b000000000000000000000000b1e8ab0a81aadf632a653e46caeda1593d71d14300000000000000000000000087b8d213177fb132e508b5d7018f7b590e00a480000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000009498ab765beed8292938937079ac56080b8a179d