0 txs
9 calls
constructor
constructor(address _deployer, bytes args)
functions
borrower
viewfunction borrower() view returns (address)
config
viewfunction config() view returns (uint256)
factory
viewfunction factory() view returns (address)
getHookedMarket
viewfunction getHookedMarket(address marketAddress) view returns (tuple)
getHookedMarkets
viewfunction getHookedMarkets(address[] marketAddresses) view returns (tuple[] hookedMarkets)
getLenderStatus
viewfunction getLenderStatus(address accountAddress) view returns (tuple status)
getParameterConstraints
purefunction getParameterConstraints() pure returns (tuple constraints)
getPreviousLenderStatus
viewfunction getPreviousLenderStatus(address accountAddress) view returns (tuple status)
getPullProviders
viewfunction getPullProviders() view returns (uint256[])
getPushProviders
viewfunction getPushProviders() view returns (uint256[])
getRoleProvider
viewfunction getRoleProvider(address providerAddress) view returns (uint256)
isKnownLenderOnMarket
viewfunction isKnownLenderOnMarket(address lender, address market) view returns (bool)
name
viewfunction name() view returns (string)
temporaryExcessReserveRatio
viewfunction temporaryExcessReserveRatio(address) view returns (uint16 originalAnnualInterestBips, uint16 originalReserveRatioBips, uint32 expiry)
version
purefunction version() pure returns (string)
addRoleProvider
nonpayablefunction addRoleProvider(address providerAddress, uint32 timeToLive)
blockFromDeposits
nonpayablefunction blockFromDeposits(address account)
blockFromDeposits
nonpayablefunction blockFromDeposits(address[] accounts)
createRoleProvider
nonpayablefunction createRoleProvider(address providerFactory, uint32 timeToLive, bytes data)
grantRole
nonpayablefunction grantRole(address account, uint32 roleGrantedTimestamp)
grantRoles
nonpayablefunction grantRoles(address[] accounts, uint32[] roleGrantedTimestamps)
onBorrow
nonpayablefunction onBorrow(uint256, tuple, bytes)
onCloseMarket
nonpayablefunction onCloseMarket(tuple, bytes)
onCreateMarket
nonpayablefunction onCreateMarket(address deployer, address marketAddress, tuple parameters, bytes extraData) returns (uint256)
onDeposit
nonpayablefunction onDeposit(address lender, uint256 scaledAmount, tuple state, bytes hooksData)
onExecuteWithdrawal
nonpayablefunction onExecuteWithdrawal(address lender, uint128, tuple, bytes hooksData)
onNukeFromOrbit
nonpayablefunction onNukeFromOrbit(address, tuple, bytes)
onQueueWithdrawal
nonpayablefunction onQueueWithdrawal(address lender, uint32, uint256, tuple, bytes hooksData)
onRepay
nonpayablefunction onRepay(uint256 normalizedAmount, tuple state, bytes hooksData)
onSetAnnualInterestAndReserveRatioBips
nonpayablefunction onSetAnnualInterestAndReserveRatioBips(uint16 annualInterestBips, uint16 reserveRatioBips, tuple intermediateState, bytes hooksData) returns (uint16 updatedAnnualInterestBips, uint16 updatedReserveRatioBips)
onSetMaxTotalSupply
nonpayablefunction onSetMaxTotalSupply(uint256, tuple, bytes)
onSetProtocolFeeBips
nonpayablefunction onSetProtocolFeeBips(uint16, tuple, bytes)
onTransfer
nonpayablefunction onTransfer(address, address, address to, uint256, tuple, bytes extraData)
removeRoleProvider
nonpayablefunction removeRoleProvider(address providerAddress)
revokeRole
nonpayablefunction revokeRole(address account)
revokeRoles
nonpayablefunction revokeRoles(address[] accounts)
setMinimumDeposit
nonpayablefunction setMinimumDeposit(address market, uint128 newMinimumDeposit)
setName
nonpayablefunction setName(string _name)
unblockFromDeposits
nonpayablefunction unblockFromDeposits(address account)
events
AccountAccessGranted
event AccountAccessGranted(address indexed providerAddress, address indexed accountAddress, uint32 credentialTimestamp)
AccountAccessRevoked
event AccountAccessRevoked(address indexed accountAddress)
AccountBlockedFromDeposits
event AccountBlockedFromDeposits(address indexed accountAddress)
AccountMadeFirstDeposit
event AccountMadeFirstDeposit(address indexed market, address indexed accountAddress)
AccountUnblockedFromDeposits
event AccountUnblockedFromDeposits(address indexed accountAddress)
MinimumDepositUpdated
event MinimumDepositUpdated(address market, uint128 newMinimumDeposit)
NameUpdated
event NameUpdated(string name)
RoleProviderAdded
event RoleProviderAdded(address indexed providerAddress, uint32 timeToLive, uint24 pullProviderIndex, uint24 pushProviderIndex)
RoleProviderRemoved
event RoleProviderRemoved(address indexed providerAddress, uint24 pullProviderIndex, uint24 pushProviderIndex)
RoleProviderUpdated
event RoleProviderUpdated(address indexed providerAddress, uint32 timeToLive, uint24 pullProviderIndex, uint24 pushProviderIndex)
TemporaryExcessReserveRatioActivated
event TemporaryExcessReserveRatioActivated(address indexed market, uint256 originalReserveRatioBips, uint256 temporaryReserveRatioBips, uint256 temporaryReserveRatioExpiry)
TemporaryExcessReserveRatioCanceled
event TemporaryExcessReserveRatioCanceled(address indexed market)
TemporaryExcessReserveRatioExpired
event TemporaryExcessReserveRatioExpired(address indexed market)
TemporaryExcessReserveRatioUpdated
event TemporaryExcessReserveRatioUpdated(address indexed market, uint256 originalReserveRatioBips, uint256 temporaryReserveRatioBips, uint256 temporaryReserveRatioExpiry)
errors
AnnualInterestBipsOutOfBounds
error AnnualInterestBipsOutOfBounds()
CallerNotBorrower
error CallerNotBorrower()
CallerNotFactory
error CallerNotFactory()
CreateRoleProviderFailed
error CreateRoleProviderFailed()
DelinquencyFeeBipsOutOfBounds
error DelinquencyFeeBipsOutOfBounds()
DelinquencyGracePeriodOutOfBounds
error DelinquencyGracePeriodOutOfBounds()
DepositBelowMinimum
error DepositBelowMinimum()
GrantedCredentialExpired
error GrantedCredentialExpired()
InvalidArrayLength
error InvalidArrayLength()
InvalidCredentialReturned
error InvalidCredentialReturned()
NotApprovedLender
error NotApprovedLender()
NotHookedMarket
error NotHookedMarket()
ProviderCanNotReplaceCredential
error ProviderCanNotReplaceCredential()
ProviderCanNotRevokeCredential
error ProviderCanNotRevokeCredential()
ProviderNotFound
error ProviderNotFound()
ReserveRatioBipsOutOfBounds
error ReserveRatioBipsOutOfBounds()
TransfersDisabled
error TransfersDisabled()
WithdrawalBatchDurationOutOfBounds
error WithdrawalBatchDurationOutOfBounds()
creation bytecode
0x60e0604090808252346103b457614f1e803803809161001e82856105cb565b833981019082818303126103b457610035816105ee565b6020828101516001600160401b0394919391908581116103b4576100599201610647565b918160805261008f67ffffff0000000001600160e01b031983871b1760018060a01b038094165f526005835280875f205561068c565b3360a0526240d00060c052825180610118575b85516145b990816109258239608051818181610693015281816108cc01528181610f040152818161134f0152818161140c015281816115a701528181611c6c01528181611f01015281816122f70152612574015260a051818181611e810152612541015260c0518181816113bd015261265c0152f35b83018181019382818303126103b45782810151908682116103b45701936080858303126103b457865160808101818110888211176104f8578852838601518781116103b457860182603f820112156103b45782818a8761017b9401519101610602565b81526101888887016105ee565b9184820192835260609660608101518981116103b457810182603f820112156103b457868101516101b881610664565b996101c58d519b8c6105cb565b818b528c898c019260051b840101928584116103b4578c8e8201935b85851061054d575050505050508983019788526080810151908982116103b4570181603f820112156103b457858101519061021b82610664565b956102288c5197886105cb565b8287528b8888019360061b8301019384116103b45791908b01915b83831061050c5750505050606081019283525180519687116104f8575f54926001978885811c951680156104ee575b868610146104da578892601f95601f811161048b575b508690601f8311600114610425575f91908361041a575b50505f19600383901b1c191690831b175f55859291905b5f825b6103cf575b505050511692836102d0575b506100a2565b5f969594855b6102e4575b508596506102ca565b805180518910156103c957886102f9916106ec565b51978463ffffffff8a51169901518851906314f22bb960e11b8252868260049282848301528181518060248301528085604494018484015e5f8382840101528a601f1991011681010301815f8c5af19182156103bf575f92610384575b508482161561037657509061036e88999a8993610700565b0197966102d6565b895163228e729160e01b8152fd5b9091508681813d83116103b8575b61039c81836105cb565b810103126103b4576103ad906105ee565b905f610356565b5f80fd5b503d610392565b8a513d5f823e3d90fd5b506102db565b908092939450518781518310156104115750906104056103f08286946106ec565b5163ffffffff898b8351169201511690610700565b019082918794936102b9565b949392506102be565b015190505f8061029f565b90601f198316915f8052885f20925f5b8a828210610475575050908487959493921061045d575b505050811b015f55908592916102b6565b01515f1960f88460031b161c191690555f808061044c565b8385015186558e98909501949384019301610435565b90919293505f8052865f20601f840160051c8101918885106104d0575b90601f8c96959493920160051c01905b8181106104c55750610288565b5f81558b95016104b8565b90915081906104a8565b634e487b7160e01b5f52602260045260245ffd5b94607f1694610272565b634e487b7160e01b5f52604160045260245ffd5b8b8884830301126103b4578b8881938251610526816105b0565b61052f876105ee565b815261053c83880161067b565b838201528152019301929150610243565b84519182116103b4578f91830191601f19838d0301126103b4578f908f825190610576826105b0565b61058184860161067b565b8252868501519081116103b4578a8f959461059f9287960101610647565b838201528152019301928d906101e1565b604081019081106001600160401b038211176104f857604052565b601f909101601f19168101906001600160401b038211908210176104f857604052565b51906001600160a01b03821682036103b457565b9192916001600160401b0382116104f8576040519161062b601f8201601f1916602001846105cb565b8294818452818301116103b4578281602093845f96015e010152565b9080601f830112156103b457815161066192602001610602565b90565b6001600160401b0381116104f85760051b60200190565b519063ffffffff821682036103b457565b600454680100000000000000008110156104f85760018101806004558110156106d85760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b634e487b7160e01b5f52603260045260245ffd5b80518210156106d85760209160051b010190565b9060018060a01b03821690815f52602060058152604092835f205480155f146108675750835163256909f160e01b8152948286600481855afa95861561085d575f96610825575b5085156108155760035462ffffff908116915b8160101b8360281b1790871b8660e01b1717965f146107f05760035491680100000000000000008310156104f85760018301806003558310156106d8576005956107e45f80516020614ede833981519152938a879660035f52895f2001555b89519384938491604091949363ffffffff606085019616845262ffffff809216602085015216910152565b0390a25b5f52525f2055565b82916005956107e45f80516020614ede833981519152936108108b61068c565b6107b9565b62ffffff9081600454169061075a565b9095508281813d8311610856575b61083d81836105cb565b810103126103b4575180151581036103b457945f610747565b503d610833565b85513d5f823e3d90fd5b6001600160e01b031660e084901b179450602885901c62ffffff9081169390601087901c81169085146108f3576003548510156106d85760059483926108eb5f80516020614efe8339815191529360035f528a84895f20015589519384938491604091949363ffffffff606085019616845262ffffff809216602085015216910152565b0390a26107e8565b6004548110156106d85760059483926108eb5f80516020614efe8339815191529360045f528a81895f2001556107b956fe60806040526004361015610011575f80fd5b5f3560e01c806303473d8d1461027a578063064ed53b1461027557806306fdde03146102705780631c4b36941461026b57806322a4a19f1461026657806328fd0307146102615780632970403d1461025c5780632ccf4667146102575780633521cccc1461025257806336c892141461024d57806354fd4d50146102485780635aeb713f146102435780636b2b369b1461023e5780636d1587a61461023957806379502c55146102345780637df1f1b91461022f57806380e52e3f1461022a57806383d9e1eb146101ee578063849da129146101ee57806387927767146102255780638adfe0f8146102205780638b3ce9b31461021b5780638f8ef419146102165780639d2a76fe146102115780639ecc64e61461020c578063a018f90e14610207578063a11ef06714610202578063a9ff2dbf146101fd578063aa948689146101f8578063b037096d146101f3578063b1cfda0d146101ee578063bfd269be146101e9578063c45a0155146101e4578063c47f0027146101df578063c888fb15146101da578063cc452642146101d5578063e5ef8405146101d0578063ea5b13bd146101cb5763feb368e2146101c6575f80fd5b612326565b6122d2565b612297565b612223565b61213a565b611ea5565b611e55565b611e0c565b611455565b611d31565b611c37565b611bb7565b611b1d565b6118b8565b61187c565b6117cf565b6116d5565b61166c565b611572565b6114ee565b611430565b6113e0565b6113a6565b611329565b611287565b611063565b610ff3565b610e91565b610cc4565b610c0f565b610b6b565b610a53565b6109da565b61088f565b610794565b61065f565b610515565b61ffff81160361028b57565b5f80fd5b610144359061029d8261027f565b565b610164359061029d8261027f565b610184359061029d8261027f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761030457604052565b6102bb565b6080810190811067ffffffffffffffff82111761030457604052565b610140810190811067ffffffffffffffff82111761030457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761030457604052565b604051906101c0820182811067ffffffffffffffff82111761030457604052565b6040519061029d826102e8565b8015150361028b57565b6024359061029d826103b1565b610104359061029d826103b1565b604435906fffffffffffffffffffffffffffffffff8216820361028b57565b606435906fffffffffffffffffffffffffffffffff8216820361028b57565b608435906fffffffffffffffffffffffffffffffff8216820361028b57565b602435906fffffffffffffffffffffffffffffffff8216820361028b57565b60a435906cffffffffffffffffffffffffff8216820361028b57565b60c435906cffffffffffffffffffffffffff8216820361028b57565b63ffffffff81160361028b57565b60e4359061029d8261048a565b610124359061029d8261048a565b6101c4359061029d8261048a565b6dffffffffffffffffffffffffffff81160361028b57565b6101a4359061029d826104c1565b9181601f8401121561028b5782359167ffffffffffffffff831161028b576020838186019501011161028b57565b3461028b5761020060031936011261028b5761053260043561027f565b6101c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261028b57610565610383565b61056d6103bb565b81526105776103d6565b60208201526105846103f5565b6040820152610591610414565b606082015261059e610452565b60808201526105ab61046e565b60a08201526105b8610498565b60c08201526105c56103c8565b60e08201526105d26104a5565b6101008201526105e061028f565b6101208201526105ee61029f565b6101408201526105fc6102ad565b61016082015261060a6104d9565b6101808201526101a061061b6104b3565b9101526101e43567ffffffffffffffff811161028b5761063f9036906004016104e7565b005b73ffffffffffffffffffffffffffffffffffffffff81160361028b57565b3461028b57602060031936011261028b5760043561067c81610641565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036106c25761063f90612ab2565b60046040517f3c698d79000000000000000000000000000000000000000000000000000000008152fd5b90600182811c92168015610733575b602083101461070657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916106fb565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602061079192818152019061073d565b90565b3461028b575f60031936011261028b576040515f80546107b3816106ec565b8084529060209060019081811690811561084757506001146107f0575b6107ec856107e081870382610342565b60405191829182610780565b0390f35b5f80805293507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b838510610834575050505081016020016107e0826107ec6107d0565b8054868601840152938201938101610818565b8695506107ec969350602092506107e09491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010192936107d0565b3461028b57604060031936011261028b576004356108ac81610641565b6108b4610433565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001633036106c25782165f52600760205260405f209160ff835416156109b05782547fffffffffffffffffffffffffff00000000000000000000000000000000ffffff16601883901b72ffffffffffffffffffffffffffffffff00000016179092557f4e39f53293455dca8fe1725b2dfcbe6abd2f44d777b7f2a7279526e17d7ebede916040805173ffffffffffffffffffffffffffffffffffffffff90921682526fffffffffffffffffffffffffffffffff909216602082015290819081015b0390a1005b60046040517fb217907b000000000000000000000000000000000000000000000000000000008152fd5b3461028b57602060031936011261028b576107ec610a026004356109fd81610641565b612412565b60405191829182919091606063ffffffff81608084019580511515855273ffffffffffffffffffffffffffffffffffffffff6020820151166020860152604081015115156040860152015116910152565b3461028b5760031960808136011261028b5760043590610a7282610641565b60243591610a7f83610641565b6044359067ffffffffffffffff9283831161028b5761014090833603011261028b5760643592831161028b576107ec93610ac0610acb9436906004016104e7565b509260040191612526565b6040519081529081906020820190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc6101c091011261028b57604490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c6101c091011261028b57606490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c6101c091011261028b57608490565b3461028b5761022060031936011261028b57610b88600435610641565b610b90610433565b50610b9a36610adb565b506102043567ffffffffffffffff811161028b5761063f9036906004016104e7565b61029d9092919260a0810193608080918051151584526020810151151560208501526040810151151560408501526fffffffffffffffffffffffffffffffff606082015116606085015201511515910152565b3461028b57602060031936011261028b5773ffffffffffffffffffffffffffffffffffffffff600435610c4181610641565b610c496127bd565b50165f5260076020526107ec60405f20610cb860ff60405192610c6b846102e8565b5481811615158452600881901c821615156020850152601081901c821615156040850152601881901c6fffffffffffffffffffffffffffffffff16606085015260981c1615156080830152565b60405191829182610bbc565b3461028b5761024060031936011261028b57600435610ce281610641565b610ced60243561048a565b610cf636610b0b565b506102243567ffffffffffffffff811161028b57610d189036906004016104e7565b73ffffffffffffffffffffffffffffffffffffffff92918383165f52600160205263ffffffff60405f209460405195610d5087610309565b549060ff8216151587528160081c16602087015260ff8160a81c161515604087015260b01c166060850152610dda610dd6610dcf610dac8673ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2090565b3373ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5460ff1690565b1590565b9283610e16575b5050509050610dec57005b60046040517fe50a45ce000000000000000000000000000000000000000000000000000000008152fd5b610dd69350610e2494612ed1565b805f8080610de1565b92919267ffffffffffffffff82116103045760405191610e7560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610342565b82948184528183011161028b578281602093845f960137010152565b3461028b57606060031936011261028b57600435610eae81610641565b602435610eba8161048a565b60443567ffffffffffffffff811161028b573660238201121561028b57610eeb903690602481600401359101610e2d565b73ffffffffffffffffffffffffffffffffffffffff92837f00000000000000000000000000000000000000000000000000000000000000001633036106c257610f6f60209185935f6040519788809581947f29e45772000000000000000000000000000000000000000000000000000000008352886004840152602483019061073d565b0393165af1928315610fee575f93610fbd575b50821615610f935761063f91613dd3565b60046040517f228e7291000000000000000000000000000000000000000000000000000000008152fd5b610fe091935060203d602011610fe7575b610fd88183610342565b810190612fea565b915f610f82565b503d610fce565b612fff565b3461028b575f60031936011261028b57604051604081019080821067ffffffffffffffff831117610304576107ec91604052600d81527f4f70656e5465726d486f6f6b7300000000000000000000000000000000000000602082015260405191829160208352602083019061073d565b3461028b5761022060031936011261028b576004803561108281610641565b61108b36610adb565b906102043567ffffffffffffffff811161028b576110ac90369085016104e7565b9190926110df6110da3373ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b6127e7565b926110ed610dd68551151590565b6112395761112161111c8473ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b6123bd565b9161112c8351151590565b6112105761115661114361018061115e9301612842565b6dffffffffffffffffffffffffffff1690565b60243561300a565b6fffffffffffffffffffffffffffffffff61118c60608701516fffffffffffffffffffffffffffffffff1690565b16116111e7576111a36111ad91604096858561306b565b9590940151151590565b8315166111be5761063f94506131af565b846040517fe50a45ce000000000000000000000000000000000000000000000000000000008152fd5b856040517fc24b1b61000000000000000000000000000000000000000000000000000000008152fd5b866040517fe50a45ce000000000000000000000000000000000000000000000000000000008152fd5b856040517fb217907b000000000000000000000000000000000000000000000000000000008152fd5b600319604091011261028b5760043561127a81610641565b906024356107918161048a565b3461028b5761129536611262565b335f52600560205260405f20549182156112b25761063f92613338565b60046040517fb1cd0903000000000000000000000000000000000000000000000000000000008152fd5b90602060031983011261028b5760043567ffffffffffffffff9283821161028b578060238301121561028b57816004013593841161028b5760248460051b8301011161028b576024019190565b3461028b57611337366112dc565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036106c2575f5b82811061138057005b806113a06113916001938686612879565b3561139b81610641565b612ab2565b01611377565b3461028b575f60031936011261028b5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461028b575f60031936011261028b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461028b57602060031936011261028b5761063f60043561145081610641565b6134eb565b3461028b5761020060031936011261028b576101c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261028b576101e43567ffffffffffffffff811161028b5761063f9036906004016104e7565b60209060206040818301928281528551809452019301915f5b8281106114da575050505090565b8351855293810193928101926001016114cc565b3461028b575f60031936011261028b57604051806004549182815260208091019260045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b82821061155b576107ec8561154f81890382610342565b604051918291826114b3565b835486529485019460019384019390910190611538565b3461028b57602060031936011261028b5760043561158f81610641565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001633036106c2578116805f52600560205260405f20549182156112b25773ffffffffffffffffffffffffffffffffffffffff165f90815260056020908152604080832092909255815162ffffff602886901c811680835260109690961c8116928201839052919391927fd40af841b3d79ec50752ce038e1ee39d243ed894aacf7c3b8f9a87b09ec8fc9791a28214611662575061063f90613866565b61063f91506136e6565b3461028b5761020060031936011261028b57611689600435610641565b6101c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261028b576101e43567ffffffffffffffff811161028b5761063f9036906004016104e7565b3461028b575f60031936011261028b57604051806003549182815260208091019260035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b828210611736576107ec8561154f81890382610342565b83548652948501946001938401939091019061171f565b67ffffffffffffffff81116103045760051b60200190565b9080601f8301121561028b57602090823561177f8161174d565b9361178d6040519586610342565b81855260208086019260051b82010192831161028b57602001905b8282106117b6575050505090565b83809183356117c48161048a565b8152019101906117a8565b3461028b57604060031936011261028b5767ffffffffffffffff60043581811161028b573660238201121561028b57806004013561180c8161174d565b9161181a6040519384610342565b8183526020916024602085019160051b8301019136831161028b57602401905b828210611863576024358587821161028b5761185d61063f923690600401611765565b906128ac565b838091833561187181610641565b81520191019061183a565b3461028b5760031936016101e0811261028b576101c01361028b576101c43567ffffffffffffffff811161028b5761063f9036906004016104e7565b3461028b5761026060031936011261028b5760046118d68135610641565b6118e1602435610641565b6044356118ed81610641565b6118f636610b3b565b506102443567ffffffffffffffff811161028b5761191790369084016104e7565b90916119446110da3373ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b91611952610dd68451151590565b611a57576080830151611a2e576119b4610dd6610dcf336119918673ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b6119ba57005b6119e561111c8373ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b906119f08251151590565b611a05576111a36111ad91602096858561306b565b856040517fe50a45ce000000000000000000000000000000000000000000000000000000008152fd5b846040517f8574adcf000000000000000000000000000000000000000000000000000000008152fd5b846040517fb217907b000000000000000000000000000000000000000000000000000000008152fd5b815163ffffffff1681526101408101929161029d919060208181015163ffffffff169083015260408181015161ffff169083015260608181015161ffff169083015260808181015161ffff169083015260a08181015161ffff169083015260c08181015163ffffffff169083015260e08181015163ffffffff16908301526101008181015161ffff16908301526101209081015161ffff16910152565b3461028b575f60031936011261028b57604051611b3981610325565b5f60408281018290526080830182905260c0830182905261010083018290529082526276a70060208301526127106060830181905260a083018190526301e1338060e0840152610120830152519081906107ec9082611a80565b73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b3461028b57604060031936011261028b57602060ff611c2b600435611bdb81610641565b73ffffffffffffffffffffffffffffffffffffffff60243591611bfd83610641565b165f526002845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b3461028b57602060031936011261028b57600435611c5481610641565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001633036106c25780611d06611d0b92841693845f52600160205263ffffffff60405f209360405194611cbc86610309565b54908160081c16602086015260ff8160a81c161515604086015260b01c1660608401525f835273ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b612968565b7f7201a4017f7e2ac3b7164275daef1150d8fc64543b3f7196293722db50bc7fa05f80a2005b3461028b57602060031936011261028b576107ec600435611d5181610641565b611d5961238e565b5073ffffffffffffffffffffffffffffffffffffffff8091165f52600160205263ffffffff60405f209160405192611d9084610309565b549060ff8216151584528160081c16602084015260ff8160a81c161515604084015260b01c16606082015260405191829182919091606063ffffffff81608084019580511515855273ffffffffffffffffffffffffffffffffffffffff6020820151166020860152604081015115156040860152015116910152565b3461028b57602060031936011261028b5773ffffffffffffffffffffffffffffffffffffffff600435611e3e81610641565b165f526005602052602060405f2054604051908152f35b3461028b575f60031936011261028b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461028b5760208060031936011261028b5767ffffffffffffffff60043581811161028b573660238201121561028b57611ee9903690602481600401359101610e2d565b9173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036106c257825191821161030457611f4382611f3e5f546106ec565b612a46565b602090601f8311600114611fce575091611fb5826109ab937f9f7688a97f1ac51fe03bac18af18d6810f9f11f0db08c59b1938a9ac825ef744955f91611fc3575b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b5f5560405191829182610780565b90508301515f611f84565b5f8052907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083167f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563925f905b828210612098575050927f9f7688a97f1ac51fe03bac18af18d6810f9f11f0db08c59b1938a9ac825ef7449492600192826109ab9610612061575b5050811b015f556107e0565b8401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f80612055565b80600185968294968a0151815501950193019061201a565b60209060206040818301928281528551809452019301915f5b8281106120d7575050505090565b909192938260a08261212e6001948951608080918051151584526020810151151560208501526040810151151560408501526fffffffffffffffffffffffffffffffff606082015116606085015201511515910152565b019501939291016120c9565b3461028b57612148366112dc565b906121528261174d565b916121606040519384610342565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061218d8261174d565b015f5b81811061220c5750505f5b8181106121b057604051806107ec86826120b0565b806121f06110da6121cc6121c76001958789612879565b61288e565b73ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b6121fa8287612898565b526122058186612898565b500161219b565b6020906122176127bd565b82828801015201612190565b3461028b5761022060031936011261028b576004356122418161027f565b61224c60243561027f565b61225536610adb565b610204359067ffffffffffffffff821161028b5760409261227d6122849336906004016104e7565b5050613a04565b825161ffff928316815291166020820152f35b3461028b576122a5366112dc565b905f5b8281106122b157005b806122cc6122c26001938686612879565b3561145081610641565b016122a8565b3461028b576122e036611262565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036106c25761063f91613dd3565b3461028b57602060031936011261028b5773ffffffffffffffffffffffffffffffffffffffff60043561235881610641565b165f526006602052606060405f205463ffffffff61ffff916040519280821684528160101c16602084015260201c166040820152f35b6040519061239b82610309565b5f6060838281528260208201528260408201520152565b9063ffffffff169052565b906040516123ca81610309565b606063ffffffff82945460ff81161515845273ffffffffffffffffffffffffffffffffffffffff8160081c16602085015260ff8160a81c161515604085015260b01c16910152565b9061241b61238e565b5061244761111c8373ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61247f606086015163ffffffff1690565b16612495575b61248f9184612d69565b61029d57565b6124b9611b93602086015173ffffffffffffffffffffffffffffffffffffffff1690565b54806124e4575b5061248f916124dd8560205f918260408201528260608201520152565b9150612485565b6124ee8186612bb2565b612521576040850151156124c0579050612509828286612bfd565b61251d5760281c62ffffff1661248f6124c0565b5050565b505050565b92909273ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000163303612793576125708461406d565b50807f0000000000000000000000000000000000000000000000000000000000000000169116036106c2576126e46126bf610120610791940135926125b48161416f565b936126296125c06103a4565b6001815295605c83901c60011615156020880152605f83901c600116151560408801526fffffffffffffffffffffffffffffffff16606087019081526126136001602060808a0196013516859015159052565b516fffffffffffffffffffffffffffffffff1690565b916fffffffffffffffffffffffffffffffff831661270f575b5190915015155b6126fc575b600181605e1c166126e9575b7f00000000000000000000000000000000000000000000000000000000000000006bffff000000000000000000007fffffffffffffffffffffffffffffffffffffffff000000000000000000000000918060101c908460501c161760501b1691161790565b9373ffffffffffffffffffffffffffffffffffffffff165f52600760205260405f2090565b612dde565b6b9000000000000000000000001761265a565b6b1000000000000000000000001761264e565b7f4e39f53293455dca8fe1725b2dfcbe6abd2f44d777b7f2a7279526e17d7ebede6127886b8000000000000000000000006126499417946040519182918c839092916fffffffffffffffffffffffffffffffff60209173ffffffffffffffffffffffffffffffffffffffff604085019616845216910152565b0390a1829150612642565b60046040517fa84178ab000000000000000000000000000000000000000000000000000000008152fd5b604051906127ca826102e8565b5f6080838281528260208201528260408201528260608201520152565b906040516127f4816102e8565b608060ff82945481811615158452818160081c1615156020850152818160101c16151560408501526fffffffffffffffffffffffffffffffff8160181c16606085015260981c161515910152565b35610791816104c1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156128895760051b0190565b61284c565b3561079181610641565b80518210156128895760209160051b010190565b91906128d63373ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b549283156112b257805182510361293e575f5b8151811015612937578061293173ffffffffffffffffffffffffffffffffffffffff61291760019486612898565b511663ffffffff6129288488612898565b51169088613338565b016128e9565b5050509050565b60046040517f9d89020a000000000000000000000000000000000000000000000000000000008152fd5b63ffffffff606061029d936129ab81511515859060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b60208101518454604083015193909201517fffffffffffff00000000000000000000000000000000000000000000000000ff90921660089190911b74ffffffffffffffffffffffffffffffffffffffff00161791151560a81b75ff0000000000000000000000000000000000000000001691909117911660b01b79ffffffff0000000000000000000000000000000000000000000016179055565b601f8111612a52575050565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563906020601f840160051c83019310612aa8575b601f0160051c01905b818110612a9d575050565b5f8155600101612a92565b9091508190612a89565b612b4a73ffffffffffffffffffffffffffffffffffffffff611d0681841693845f52600160205263ffffffff60405f209360405194612af086610309565b549060ff8216151586528160081c16602086015260ff8160a81c161515604086015260b01c16806060850152612b70575b600183525b73ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b7f25b0d1830e0d487402e2c828de3ccbc9d16bd911aaec75fbba1bffd32657fad45f80a2565b612b888360205f918260408201528260608201520152565b847f47695aa96e09db0d106b9bd402979d6aff7e51ada06ec6fe014e5eeadd8c1dc05f80a2612b21565b9063ffffffff6060612bf7930151169060e01c0163ffffffff90817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000182019110020190565b42111590565b909291925f935f9063ccdad14b5f5260205260205f6024601c73ffffffffffffffffffffffffffffffffffffffff8660401c165afa601f3d1116612cf1575b63ffffffff169182158015612ce8575b612ce057612c8a838360e01c0163ffffffff90817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000182019110020190565b421115612c9657505050565b612cdb939450919063ffffffff60409216606084015273ffffffffffffffffffffffffffffffffffffffff81831c16602084015262ffffff809160281c161415910152565b600190565b505f93505050565b50428311612c4c565b505f5163ffffffff16612c3c565b6004548110156128895760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905f90565b6003548110156128895760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b9291905f9360038054935f5b858110612d8457505050505050565b818114612dd657825f52612dbc85827fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b015486612bfd565b612dca576001905b01612d75565b50600196505050505050565b600190612dc4565b90608090612e1a81511515849060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b60208101518354604083015160608401517fffffffffffffffffffffffffff000000000000000000000000000000000000ff90921692151560081b61ff00169290921791151560101b62ff0000169190911760189190911b72ffffffffffffffffffffffffffffffff00000016178355015181547fffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff1690151560981b73ff0000000000000000000000000000000000000016179055565b9392612edf9192838661306b565b8181959295612f49575b50612f15610dac8473ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2090565b50612f1e575050565b611d0661029d9273ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b15612faa5773ffffffffffffffffffffffffffffffffffffffff806020840151167fa04eb478c9c6a13a6de14b7eb31b1b629511e804c3cfef31bd549accd4b15524602063ffffffff60608701511693604051948552871693a35b5f612ee9565b73ffffffffffffffffffffffffffffffffffffffff83167f47695aa96e09db0d106b9bd402979d6aff7e51ada06ec6fe014e5eeadd8c1dc05f80a2612fa4565b9081602091031261028b575161079181610641565b6040513d5f823e3d90fd5b817ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff0481111582151715613059576b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b634e487b715f5260116020526024601cfd5b90929391935f945f94606084019163ffffffff938484511615155f146131a8576130af611b93602088015173ffffffffffffffffffffffffffffffffffffffff1690565b54905b811515928380613198575b61318757906130cd91858961418d565b613178577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918061316b575b61313c575b506131099185612d69565b6131305751166131165750565b612cdb91925060205f918260408201528260608201520152565b50600194508493505050565b9050613149828287612bfd565b61315d5760281c62ffffff166131096130fe565b506001965086955050505050565b50604086015115156130f9565b50600197508796505050505050565b50600199505f985050505050505050565b506131a38389612bb2565b6130bd565b5f906130b2565b91600190849294613296575b6131ec610dd6610dcf610dac8873ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2090565b16166131fb575b612f1e575050565b61325561322a336119918673ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b73ffffffffffffffffffffffffffffffffffffffff8316337f19c0c79c8d3a2c3300023a426c471dbf37ef4602c3c143fe049cc9e9f989165d5f80a36131f3565b80156132f857602084810151606086015160405163ffffffff909116815273ffffffffffffffffffffffffffffffffffffffff888116939216917fa04eb478c9c6a13a6de14b7eb31b1b629511e804c3cfef31bd549accd4b1552491a36131bb565b73ffffffffffffffffffffffffffffffffffffffff85167f47695aa96e09db0d106b9bd402979d6aff7e51ada06ec6fe014e5eeadd8c1dc05f80a26131bb565b919061336561111c8273ffffffffffffffffffffffffffffffffffffffff165f52600160205260405f2090565b9263ffffffff6133a78185168360e01c0163ffffffff90817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000182019110020190565b904282106134c15760608601908151166133c7575b505061029d936141f9565b60208601906133ed611b93835173ffffffffffffffffffffffffffffffffffffffff1690565b5490816133fc575b50506133bc565b61346e9161341d613414613453935163ffffffff1690565b63ffffffff1690565b9060e01c0163ffffffff90817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000182019110020190565b915173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16331491111715613497575f8080806133f5565b60046040517fc03faa56000000000000000000000000000000000000000000000000000000008152fd5b60046040517f5a922a2f000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff9081811691825f52600160205260405f209063ffffffff6040519261352484610309565b549160ff8316151584528260081c169182602085015260ff8160a81c161515604085015260b01c166060830152330361359c57611d0661357692612b268360205f918260408201528260608201520152565b7f47695aa96e09db0d106b9bd402979d6aff7e51ada06ec6fe014e5eeadd8c1dc05f80a2565b60046040517f3a364f3d000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6004548015613656577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019080821015612889577f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19a5f91600483520155600455565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b6003548015613656577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019080821015612889577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85a5f91600383520155600355565b6004547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818111613861578062ffffff841614613856576004541115612889577f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19a7f77f7914b3d5f909ba079a3cfd67cdff25863760515f339affe0f2313d35638629160045f5201547fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff8360101b911617916137dd836137a783612cff565b9091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83549160031b92831b921b1916179055565b6137e56135f3565b73ffffffffffffffffffffffffffffffffffffffff8360401c1692806138298573ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b556040805160e09290921c825262ffffff602083018190529092169181019190915280606081015b0390a2565b50505061029d6135f3565b6135c6565b6003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818111613861578062ffffff84161461399c576003541115612889577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85a7f77f7914b3d5f909ba079a3cfd67cdff25863760515f339affe0f2313d35638629160035f5201547fffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff8360281b91161791613927836137a783612d34565b61392f613683565b73ffffffffffffffffffffffffffffffffffffffff8360401c1692806139738573ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b556040805160e09290921c825262ffffff92831660208301528101919091528060608101613851565b50505061029d613683565b356107918161027f565b906040516060810181811067ffffffffffffffff82111761030457604052604063ffffffff82945461ffff80821685528160101c16602085015260201c16910152565b9062127500820180921161386157565b91610160820190613a14826139a7565b918461ffff9485821692613a2784614399565b613a57613a523373ffffffffffffffffffffffffffffffffffffffff165f52600660205260405f2090565b6139b1565b92604084019163ffffffff9182613a72855163ffffffff1690565b1680613c74575b5050613a8c613414845163ffffffff1690565b613c5e57613aa6613aa061014086016139a7565b916139a7565b915b898216998a8810613ac1575b5050505050505050909150565b613b6696979950613bd3989a613ada918516908b614408565b98613ae7613414426139f4565b95613af6865163ffffffff1690565b928316613be15750506040805161ffff85811682528b16602082015263ffffffff8716918101919091526123b29392613b5b92509033907f16f9a191ecd86fd97f0ddc3dbed8fdc4d1e0d0644b93db99f8a577f52b0dec4390606090a261ffff168752565b61ffff166020860152565b335f90815260066020908152604091829020835181548584015195909401517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941661ffff919091161760109490941b63ffff0000169390931791901b67ffffffff0000000016179055565b815f80808080808080613ab4565b613bfc91929350610140613bf591016139a7565b61ffff1690565b1115613c56575b506040805161ffff9283168152918816602083015263ffffffff84169082015233907ff813e17e21ecee3918b028c4e02f15f1fdd045f9f63183b6ab4f42c23c97b32190606090a29063ffffffff169052565b92505f613c03565b50835161ffff16602085015161ffff1691613aa8565b613c84613bf561014088016139a7565b8810159042101516613c9b613bf5885161ffff1690565b881015811715613a7957959650995050505050602092945061079193505f14613cfc57337f145c143a918203cecb36063a1d70980ebb42b5b00490c5510d79c9d7717b77bb5f80a25b335f90815260066020526040812055015161ffff1690565b337f2045c970b5c1a8f9b69dd33e70a1f9d07b9021e408716d5b8daeb83a776ea05f5f80a2613ce4565b9081602091031261028b5751610791816103b1565b600454680100000000000000008110156103045760018101806004558110156128895760045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b600354680100000000000000008110156103045760018101806003558110156128895760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b613dfb8173ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b5480613f8857506040517f256909f10000000000000000000000000000000000000000000000000000000081529073ffffffffffffffffffffffffffffffffffffffff8116602083600481845afa928315610fee575f93613f33575b507f3c4db27692774915639231cf12808d8ee5f42ca0bd208df85fdcd82e5f2ebe05613f0c9394855f14613f1d5760035462ffffff1690613ee562ffffff5b8060101b8460281b178760401b8460e01b1717985f14613f0f57613eb989613d87565b6040519384938491604091949363ffffffff606085019616845262ffffff809216602085015216910152565b0390a273ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b55565b613f1889613d3b565b613eb9565b60045462ffffff1690613ee562ffffff92613e96565b613f0c9350613f7a7f3c4db27692774915639231cf12808d8ee5f42ca0bd208df85fdcd82e5f2ebe059160203d602011613f81575b613f728183610342565b810190613d26565b9350613e57565b503d613f68565b90613f0c917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460e01b911617927f77f7914b3d5f909ba079a3cfd67cdff25863760515f339affe0f2313d356386262ffffff808660281c16818760101c16918114155f1461405b57613ffa876137a783612d34565b6040805163ffffffff95909516855262ffffff918216602086015291169083015273ffffffffffffffffffffffffffffffffffffffff831691606090a273ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b614068876137a784612cff565b613ffa565b905f9160808101359061407f8261027f565b60a081013561408d8161027f565b60c08201359161409c8361048a565b61010060e0820135916140ae8361027f565b0135916140ba8361048a565b612710908161ffff809716116141475785161161411f576301e1338063ffffffff809416116140f75761029d936140f191166143a3565b166143d5565b7f772de361000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcfd2223a000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f74e6ce76000000000000000000000000000000000000000000000000000000005f5260045ffd5b356fffffffffffffffffffffffffffffffff81168091036130595790565b5f949391929091601481036141dd57503560601c5f52600560205260405f205490811515806141cb575b6141c057505050565b610791939450612bfd565b5062ffffff808360281c1614156141b7565b929091601484116141ee5750505050565b6107919495506144b4565b63ffffffff84166060820152604082811c73ffffffffffffffffffffffffffffffffffffffff166020830152602883901c62ffffff90811614159082015292917fa04eb478c9c6a13a6de14b7eb31b1b629511e804c3cfef31bd549accd4b155249161438173ffffffffffffffffffffffffffffffffffffffff80931695865f526001602052614337606060405f20926142c181511515859060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b602081015184547fffffffffffffffffffff000000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0075ff0000000000000000000000000000000000000000006040860151151560a81b169360081b16911617178455015163ffffffff1690565b7fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff79ffffffff0000000000000000000000000000000000000000000083549260b01b169116179055565b6040805163ffffffff9590951685521c1691602090a3565b6127101061414757565b612710106143ad57565b7fc7f3bbb9000000000000000000000000000000000000000000000000000000005f5260045ffd5b6276a700106143e057565b7f21366737000000000000000000000000000000000000000000000000000000005f5260045ffd5b810391908083116138615761271092807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118102158202156144a757830204916109c4831161445d575061ffff91501690565b908260011b927f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116036138615782828161079195613bf595039110020190818103908210020190565b63ad251c275f526004601cfd5b823560601c5f818152600560205260408120909695939190549384156145a157915f9182601c6050602096839a604051966354560cb288528988015260408088015260147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec8301918260608a0152016080880137019301915af1614579575b82158015612ce857612ce057612c8a838360e01c0163ffffffff90817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000182019110020190565b915060203d106001146145945763ffffffff5f511691614533565b63c177c7005f526004601cfd5b505f9650505050505056fea164736f6c6343000819000a3c4db27692774915639231cf12808d8ee5f42ca0bd208df85fdcd82e5f2ebe0577f7914b3d5f909ba079a3cfd67cdff25863760515f339affe0f2313d3563862000000000000000000000000b602facd3da8626b6a39e340ae13e6a3309944e60000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001148797065726974686d205072697661746500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000