8 txs
45.6k calls
constructor
constructor(address _addyRegistry, address _ethAddr, uint256 _minStaleTime, uint256 _maxStaleTime, uint256 _minOracleChangeDelay, uint256 _maxOracleChangeDelay)
functions
areValidPriorityOraclePartnerIds
viewfunction areValidPriorityOraclePartnerIds(uint256[] _priorityIds) view returns (bool)
canGovern
viewfunction canGovern(address _address) view returns (bool)
ETH
viewfunction ETH() view returns (address)
getAssetAmount
viewfunction getAssetAmount(address _asset, uint256 _usdValue, bool _shouldRaise) view returns (uint256)
getAssetAmount
viewfunction getAssetAmount(address _asset, uint256 _usdValue) view returns (uint256)
getEthAmount
viewfunction getEthAmount(uint256 _usdValue, bool _shouldRaise) view returns (uint256)
getEthAmount
viewfunction getEthAmount(uint256 _usdValue) view returns (uint256)
getEthUsdValue
viewfunction getEthUsdValue(uint256 _amount, bool _shouldRaise) view returns (uint256)
getEthUsdValue
viewfunction getEthUsdValue(uint256 _amount) view returns (uint256)
getLastOraclePartnerAddr
viewfunction getLastOraclePartnerAddr() view returns (address)
getLastOraclePartnerId
viewfunction getLastOraclePartnerId() view returns (uint256)
getNumOraclePartners
viewfunction getNumOraclePartners() view returns (uint256)
getOraclePartnerAddr
viewfunction getOraclePartnerAddr(uint256 _oracleId) view returns (address)
getOraclePartnerDescription
viewfunction getOraclePartnerDescription(uint256 _oracleId) view returns (string)
getOraclePartnerId
viewfunction getOraclePartnerId(address _addr) view returns (uint256)
getOraclePartnerInfo
viewfunction getOraclePartnerInfo(uint256 _oracleId) view returns (tuple)
getPrice
viewfunction getPrice(address _asset, bool _shouldRaise) view returns (uint256)
getPrice
viewfunction getPrice(address _asset) view returns (uint256)
getPriorityOraclePartnerIds
viewfunction getPriorityOraclePartnerIds() view returns (uint256[])
getUsdValue
viewfunction getUsdValue(address _asset, uint256 _amount, bool _shouldRaise) view returns (uint256)
getUsdValue
viewfunction getUsdValue(address _asset, uint256 _amount) view returns (uint256)
govChangeDelay
viewfunction govChangeDelay() view returns (uint256)
governance
viewfunction governance() view returns (address)
hasPendingGovChange
viewfunction hasPendingGovChange() view returns (bool)
hasPriceFeed
viewfunction hasPriceFeed(address _asset) view returns (bool)
isValidNewOraclePartnerAddr
viewfunction isValidNewOraclePartnerAddr(address _addr) view returns (bool)
isValidOraclePartnerAddr
viewfunction isValidOraclePartnerAddr(address _addr) view returns (bool)
isValidOraclePartnerDisable
viewfunction isValidOraclePartnerDisable(uint256 _oracleId) view returns (bool)
isValidOraclePartnerId
viewfunction isValidOraclePartnerId(uint256 _oracleId) view returns (bool)
isValidOraclePartnerUpdate
viewfunction isValidOraclePartnerUpdate(uint256 _oracleId, address _newAddr) view returns (bool)
isValidStaleTime
viewfunction isValidStaleTime(uint256 _staleTime) view returns (bool)
MAX_GOV_CHANGE_DELAY
viewfunction MAX_GOV_CHANGE_DELAY() view returns (uint256)
MAX_STALE_TIME
viewfunction MAX_STALE_TIME() view returns (uint256)
MIN_GOV_CHANGE_DELAY
viewfunction MIN_GOV_CHANGE_DELAY() view returns (uint256)
MIN_STALE_TIME
viewfunction MIN_STALE_TIME() view returns (uint256)
numOraclePartnersRaw
viewfunction numOraclePartnersRaw() view returns (uint256)
oracleChangeDelay
viewfunction oracleChangeDelay() view returns (uint256)
pendingGov
viewfunction pendingGov() view returns (tuple)
priorityOraclePartnerIds
viewfunction priorityOraclePartnerIds(uint256 arg0) view returns (uint256)
staleTime
viewfunction staleTime() view returns (uint256)
cancelGovernanceChange
nonpayablefunction cancelGovernanceChange()
cancelPendingNewOraclePartner
nonpayablefunction cancelPendingNewOraclePartner(address _addr) returns (bool)
cancelPendingOraclePartnerDisable
nonpayablefunction cancelPendingOraclePartnerDisable(uint256 _oracleId) returns (bool)
cancelPendingOraclePartnerUpdate
nonpayablefunction cancelPendingOraclePartnerUpdate(uint256 _oracleId) returns (bool)
changeGovernance
nonpayablefunction changeGovernance(address _newGov)
confirmGovernanceChange
nonpayablefunction confirmGovernanceChange()
confirmNewOraclePartnerRegistration
nonpayablefunction confirmNewOraclePartnerRegistration(address _addr) returns (uint256)
confirmOraclePartnerDisable
nonpayablefunction confirmOraclePartnerDisable(uint256 _oracleId) returns (bool)
confirmOraclePartnerUpdate
nonpayablefunction confirmOraclePartnerUpdate(uint256 _oracleId) returns (bool)
disableOraclePartnerAddr
nonpayablefunction disableOraclePartnerAddr(uint256 _oracleId) returns (bool)
registerNewOraclePartner
nonpayablefunction registerNewOraclePartner(address _addr, string _description) returns (bool)
setGovernanceChangeDelay
nonpayablefunction setGovernanceChangeDelay(uint256 _numBlocks)
setOraclePartnerChangeDelay
nonpayablefunction setOraclePartnerChangeDelay(uint256 _numBlocks) returns (bool)
setOraclePartnerChangeDelayToMin
nonpayablefunction setOraclePartnerChangeDelayToMin() returns (bool)
setPriorityOraclePartnerIds
nonpayablefunction setPriorityOraclePartnerIds(uint256[] _priorityIds) returns (bool)
setStaleTime
nonpayablefunction setStaleTime(uint256 _staleTime) returns (bool)
updateOraclePartnerAddr
nonpayablefunction updateOraclePartnerAddr(uint256 _oracleId, address _newAddr) returns (bool)
events
AddyChangeDelaySet
event AddyChangeDelaySet(uint256 delayBlocks, string registry)
AddyDisableCancelled
event AddyDisableCancelled(uint256 addyId, string description, address indexed addr, uint256 initiatedBlock, uint256 confirmBlock, string registry)
AddyDisableConfirmed
event AddyDisableConfirmed(uint256 addyId, string description, address indexed addr, uint256 version, string registry)
AddyDisablePending
event AddyDisablePending(uint256 addyId, string description, address indexed addr, uint256 version, uint256 confirmBlock, string registry)
AddyUpdateCancelled
event AddyUpdateCancelled(uint256 addyId, string description, address indexed newAddr, address indexed prevAddr, uint256 initiatedBlock, uint256 confirmBlock, string registry)
AddyUpdateConfirmed
event AddyUpdateConfirmed(uint256 addyId, string description, address indexed newAddr, address indexed prevAddr, uint256 version, string registry)
AddyUpdatePending
event AddyUpdatePending(uint256 addyId, string description, address indexed newAddr, address indexed prevAddr, uint256 version, uint256 confirmBlock, string registry)
GovChangeCancelled
event GovChangeCancelled(address indexed cancelledGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeConfirmed
event GovChangeConfirmed(address indexed prevGov, address indexed newGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeDelaySet
event GovChangeDelaySet(uint256 delayBlocks)
GovChangeInitiated
event GovChangeInitiated(address indexed prevGov, address indexed newGov, uint256 confirmBlock)
NewAddyConfirmed
event NewAddyConfirmed(address indexed addr, uint256 addyId, string description, string registry)
NewAddyPending
event NewAddyPending(address indexed addr, string description, uint256 confirmBlock, string registry)
NewPendingAddyCancelled
event NewPendingAddyCancelled(string description, address indexed addr, uint256 initiatedBlock, uint256 confirmBlock, string registry)
PriorityOraclePartnerIdsModified
event PriorityOraclePartnerIdsModified(uint256 numIds)
StaleTimeSet
event StaleTimeSet(uint256 staleTime)
errors
No errors.
creation bytecode
0x612dc051503461020a576020612f075f395f518060a01c61020a57610140526020612f275f395f518060a01c61020a5761016052610140511561004757610160511515610049565b5f5b1561020a575f604052610140516060526040366080376100676100e5565b6040612f876040396011610180527f4f7261636c6552656769737472792e76790000000000000000000000000000006101a0526101806020815101808260805e50506100b16101db565b61016051612d80526020612f475f395f51612da0526020612f675f395f51612dc052612cc061020e61000039612de0610000f35b604051156100f45760016100fa565b60605115155b1561020a576040511561010d576040515f555b6060511561011c576060516005555b6040608060c05e60c051610131576001610136565b60e051155b156101b0576060511561020a5760605163ed860576610100526020610100600461011c845afa610168573d5f5f3e3d5ffd5b60203d1061020a5761010090505160c05260605163c55728b0610100526020610100600461011c845afa61019e573d5f5f3e3d5ffd5b60203d1061020a5761010090505160e0525b60e05160c051101561020a5760c051612cc05260e051612ce052606051156101d95760c0516004555b565b606051604051101561020a57604051612d0052606051612d2052608051612d405260a051612d60526001600855565b5f80fd5f3560e01c60026033820660011b612c5a01601e395f51565b6353aa4307811861155c57602436103417612c56576004358060a01c612c56576102605260206102605161016052610051610280611630565b610280f35b633f561eff81186100745734612c5657600354151560405260206040f35b63e97d344b811861155c57602436103417612c565760208060405260066004356020525f5260405f208160400160808254825260018301546020830152600283015460408301528060608301526003830181830160208254015f81601f0160051c60038111612c565780156100fb57905b808501548160051b8501526001018181186100e5575b5050508051806020830101601f825f03163682375050601f19601f82516020010116905090508101905090509050810190506040f35b6399572d6f811861029957602436103417612c56576004358060a01c612c5657610160526101606101e0611560565b6101e0805160208160051b0180836101805e505050335f6101e0525f6101805160028111612c565780156101b557905b8060051b6101a0015183186101aa5760016101e0526101b5565b600101818118610190575b50506101e051905015612c56576101605160016101e0525f6101805160028111612c5657801561020557905b8060051b6101a0015183186101fa575f6101e052610205565b6001018181186101e1575b50506101e051905015612c5657610160513b15612c56576102276101e061168f565b6101e0511561023a576101605115612c56575b43600454808201828110612c5657905090506101e05261016051600155436002556101e051600355610160515f547fa8e5a115434955f3c91f53089861da9b575399fbfbc1fc8b345ae6a18b0f193e6101e051610200526020610200a3005b6385040f5b811861034d57604436103417612c56576024358060011c612c56576105e0525b6004356102d4575f61060052602061060061034b565b6020612d806101a0396105e0516101c0526102f0610620611745565b61062051610600526106005161030f575f61062052602061062061034b565b600435670de0b6b3a7640000810281670de0b6b3a7640000820418612c56579050610600518015612c5657808204905090506106205260206106205bf35b63ddf10f7b811861155c57602436103417612c565733610160526103726102c0611630565b6102c05115612c5657602060043560405261038e6102c0612350565b6102c0f35b636e4fd9c8811861155c5734612c565760015460405260025460605260035460805260405115612c5657608051156103d0576080514310156103d2565b5f5b15612c56576040513318612c56575f5460a0526040515f555f6001555f6002555f60035560405160a0517fb5dfe18540f75a87f8c7963e7f4942e9392be572b787d486d7868ac53a5bdf5b6040606060c05e604060c0a3005b63366836cc81186104b45734612c5657336101605261044b610260611630565b6102605115612c565760015461026052600254610280526003546102a0526102a05115612c56575f6001555f6002555f600355610260517f4301277e72c59c5071608882749a82a210817721ba94066744cea89211d3838060406102806102c05e60406102c0a2005b63729c19df811861155c57602436103417612c565733610160526104d96102a0611630565b6102a05115612c565760206004356040526104f56102a06128bd565b6102a0f35b63a908dc80811861059157602436103417612c5657600354612c56573361016052610526610260611630565b6102605115612c56576020612cc05f395f516004351015610547575f610556565b6020612ce05f395f5160043511155b15612c56576004356004557fb8d7f2c6802e04bfd3abb436c2b7b52bd4b37872b53bd1150146816d66ac7de2600435610260526020610260a1005b632c7ddded81186105b057604436103417612c56575f61060052610b7e565b639d2aa370811861155c57602436103417612c5657600435600401600a813511612c5657803560208160051b018083610380375050506103805160208160051b018061038060605e5050610605610640612abe565b610640805160208160051b0180836104e05e50505060206104e05160208160051b01806104e060405e505061063b610640612ba5565b610640f35b635aa6e675811861065b5734612c56575f5460405260206040f35b6338b88052811861155c5734612c565760185460405260206040f35b6325240810811861069f5734612c565760015460405260025460605260035460805260606040f35b634f075baf811861155c57602436103417612c565760208060405260066004356020525f5260405f206003810190508160400160208254015f81601f0160051c60038111612c5657801561070557905b808501548160051b8501526001018181186106ef575b5050508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506040f35b63f40b1697811861074f5734612c565760045460405260206040f35b638113354a811861155c5734612c5657602061076b6040612c41565b6040f35b63ed860576811861078d5734612c56576020612cc060403960206040f35b63459dc54781186107ea57604436103417612c56576024358060a01c612c56576103405233610160526107c1610360611630565b6103605115612c5657602060043560e05261034051610100526107e5610360611f32565b610360f35b63714a0430811861155c57602436103417612c565760206004356040526108116060611698565b6060f35b63c55728b081186108335734612c56576020612ce060403960206040f35b63468d4ca2811861084f5734612c5657600c5460405260206040f35b63c1b45f20811861155c5734612c5657602061086b6060612c1a565b6060f35b6341976e09811861155c57602436103417612c56575f610600526108b3565b6376d6976081186108f557604436103417612c56576024358060011c612c5657610600525b6004358060a01c612c56576105e0526105e0516108d9575f6106205260206106206108f3565b602060406105e06101a05e6108ef610620611745565b6106205bf35b63d7671e81811861155c57602436103417612c5657336101605261091a610300611630565b6103005115612c5657602060043560c0526109366103006124e9565b610300f35b63c660d112811861155c57604436103417612c56575f6106005261097f565b63eda199bc8118610a8857606436103417612c56576044358060011c612c5657610600525b6004358060a01c612c56576105e05260243561099c5760016109a2565b6105e051155b156109b6575f610620526020610620610a86565b60406105e06101a05e6109ca610640611745565b6106405161062052610620516109e9575f610640526020610640610a86565b6105e05163313ce567610660526020610660600461067c845afa610a0f573d5f5f3e3d5ffd5b3d602081183d6020100218806106600161068011612c5657610660518060081c612c56576106a052506106a09050516106405261062051602435808202811583838304141715612c56579050905061064051604d8111612c565780600a0a90508015612c5657808204905090506106605260206106605bf35b63eebec8a28118610b1357604436103417612c56576024358060011c612c56576105e0525b600435610ac3575f610600526020610600610b11565b6020612d806101a0396105e0516101c052610adf610600611745565b61060051600435808202811583838304141715612c565790509050670de0b6b3a7640000810490506106205260206106205bf35b63ed864c8b811861155c57602436103417612c56573361016052610b38610260611630565b6102605115612c56576020600435604052610b54610260612a19565b610260f35b636ee80199811861155c57606436103417612c56576044358060011c612c5657610600525b6004358060a01c612c56576105e052602435610b9b576001610ba1565b6105e051155b15610bb5575f610620526020610620610c85565b60406105e06101a05e610bc9610640611745565b610640516106205261062051610be8575f610640526020610640610c85565b6105e05163313ce567610660526020610660600461067c845afa610c0e573d5f5f3e3d5ffd5b3d602081183d6020100218806106600161068011612c5657610660518060081c612c56576106a052506106a09050516106405260243561064051604d8111612c565780600a0a9050808202811583838304141715612c565790509050610620518015612c5657808204905090506106605260206106605bf35b630b7983a2811861155c57602436103417612c56576004358060a01c612c5657606052600854608052600160805180600111612c56576001810390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111612c56578015610d8e578101905b8060a05260a051604052610d0860e0611698565b60e05160c05260c05115610d835760c051630b7983a260e05260605161010052602060e0602460fc845afa610d3f573d5f5f3e3d5ffd5b3d602081183d60201002188060e00161010011612c565760e0518060011c612c5657610120525061012090505115610d835750506001610140526020610140610d99565b600101818118610cf4575b50505f60a052602060a05bf35b634d02fef78118610dba57602436103417612c56575f6105e052610aad565b63ccce7cfa8118610df357602436103417612c56576004358060a01c612c56576060526020606051604052610def6080612bf1565b6080f35b635022a52e811861155c5734612c56576020612dc060403960206040f35b638fc7a25d8118610e3057602436103417612c56575f6105e0526102be565b63f1525fb3811861155c57602436103417612c56576020600435604052610e576060611ec9565b6060f35b631f88cb7a811861155c57602436103417612c56576004358060a01c612c56576060526020606051604052610e906080611a08565b6080f35b63bb25af498118610f1757604436103417612c56576004358060a01c612c565761026052602435600401803560408111612c565750602081350180826102803750503361016052610ee66102e0611630565b6102e05115612c5657602061026051606052602061028051018061028060805e50610f126102e0611a40565b6102e0f35b63bfbe5c32811861155c57602436103417612c56576004358060a01c612c56576060526020606051604052610f4c6080612bdb565b6080f35b630423e1f9811861155c57602436103417612c56576004358060a01c612c5657610260523361016052610f84610280611630565b6102805115612c565761026051606052610f9f6102a0611b80565b6102a0516102805261028051156110145761026051630d29c0a16102a052610280516102c05260206102a060246102bc5f855af1610fdf573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c011612c56576102a0518060011c612c56576102e052506102e090505115612c56575b6020610280f35b631857c7b1811861155c57602436103417612c56576004358060a01c612c565761026052336101605261104f610280611630565b6102805115612c565760206102605160405261106c610280611d97565b610280f35b632e1e4a19811861155c57604436103417612c56576024358060a01c612c565760e052602060043560605260e05160805260066004356020525f5260405f205460a0526110bf610100611ee4565b610100f35b6385b0eab7811861119157602436103417612c565733610160526110e9610360611630565b6103605115612c565760043560e0526111036103806120c0565b6103805161036052610360511561118a5760066004356020525f5260405f20546103805261038051630d29c0a16103a0526004356103c05260206103a060246103bc5f855af1611155573d5f5f3e3d5ffd5b3d602081183d6020100218806103a0016103c011612c56576103a0518060011c612c56576103e052506103e090505115612c56575b6020610360f35b63cfd26f93811861155c5734612c565760206111ad6040612c05565b6040f35b6375f79352811861155c57602436103417612c5657602060043560605260066004356020525f5260405f20546080526111ea60c06124be565b60c0f35b63899138e3811861155c57602436103417612c56573361016052611213610320611630565b6103205115612c5657602060043560c05261122f610320612668565b610320f35b638d30c54f81186112775734612c56573361016052611254610260611630565b6102605115612c565760206020612d00604039611272610260612a19565b610260f35b634166662b811861155c57602436103417612c5657600435600401600a813511612c5657803560208160051b0180836103803750505033610160526112bd6104e0611630565b6104e05115612c56576103805160208160051b018061038060605e50506112e5610640612abe565b610640805160208160051b0180836104e05e5050506104e05160208160051b01806104e060405e5050611319610640612ba5565b61064051611330575f6106605260206106606113ab565b6104e05160208160051b015f81601f0160051c600b8111612c5657801561136c57905b8060051b6104e0015181600d0155600101818118611353575b505050507f71611f8aaeef08a78f53dc921886a5c12c5758e94176f1e96fdc87fd6a85fa5c6104e051610640526020610640a160016106405260206106405bf35b6346b66b8a811861155c5734612c5657602080604052806040015f600d548083528060051b5f82600a8111612c565780156113fe57905b80600e01548160051b6020880101526001018181186113e4575b505082016020019150509050810190506040f35b63b07d0d89811861143d57602436103417612c565760206004356040526114396060612baf565b6060f35b63ceb76b06811861155c5734612c565760085460405260206040f35b637d14c8df811861155c57602436103417612c5657336101605261147e610260611630565b6102605115612c5657600435604052611498610260612baf565b610260516114af575f6102805260206102806114ef565b6004356018557f21541db696b4b1b3b2baf9e88a708376043257ab877b1c7e79979b8cd2de3b7c600435610260526020610260a160016102605260206102605bf35b63e4bd744f811861155c57602436103417612c5657600435600d54811015612c5657600e015460405260206040f35b638322fff2811861155c5734612c56576020612d8060403960206040f35b6373dfab71811861155c5734612c56576020612da060403960206040f35b5f5ffd5b5f6040525f5460a05260a051156115905760405160018111612c565760a0518160051b6060015260018101604052505b60055460c05260c0511561161c5760c051635aa6e675610100526020610100600461011c845afa6115c3573d5f5f3e3d5ffd5b3d602081183d6020100218806101000161012011612c5657610100518060a01c612c5657610140525061014090505160e05260e0511561161c5760405160018111612c565760e0518160051b6060015260018101604052505b60405160208160051b01806040845e505050565b6101605161163f6101e0611560565b6101e05f610240525f815160028111612c5657801561168057905b8060051b602084010151841861167557600161024052611680565b60010181811861165a575b50506102405190509050815250565b60055415815250565b60066040516020525f5260405f2054815250565b6060516040526116bc60e0611698565b60e05160c05260c0516116d8575f81525f602082015250611743565b60c05163abe4ffb460e052604060806101005e3061014052604060e0606460fc845afa611707573d5f5f3e3d5ffd5b3d604081183d60401002188060e00161012011612c565760e05161016052610100518060011c612c565761018052506101609050604081835e50505b565b6060366101e03760185461038052600d5460208160051b015f81601f0160051c600b8111612c5657801561178e57905b80600d01548160051b6103a00152600101818118611775575b505050505f6103a051600a8111612c5657801561184c57905b8061050052610500516103a051811015612c565760051b6103c00151610520525f61054052610520516060526101a0516080526103805160a0526117ec6105606116ac565b6105606040816105a05e506105a0516101e0526105c051610540526101e05161184c57610540511561181f576001610200525b6102205160098111612c5657610520518160051b61024001526001810161022052506001018181186117a7575b50506101e05161195c576008546105005260016105005180600111612c56576001810390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111612c56578015611959578101905b8061052052610520515f610540525f61022051600a8111612c565780156118ea57905b8060051b610240015183186118df576001610540526118ea565b6001018181186118c5575b505061054051905061194e575f61054052610520516060526101a0516080526103805160a05261191b6105606116ac565b6105606040816105a05e506105a0516101e0526105c051610540526101e05161195957610540511561194e576001610200525b6001018181186118a2575b50505b6101e05161197b5761020051611972575f61197d565b6101c05161197d565b5f5b156119ff5760208061056052601a610500527f68617320707269636520636f6e6669672c206e6f20707269636500000000000061052052610500816105600160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610540528060040161055cfd5b6101e051815250565b604051611a16576001611a1c565b6040513b155b15611a2a575f815250611a3e565b60076040516020525f5260405f2054158152505b565b606051604052611a5060e0611a08565b60e051611a60575f815250611b7e565b43600c54808201828110612c56579050905060e05260096060516020525f5260405f206020608051015f81601f0160051c60038111612c56578015611ab857905b8060051b6080015181850155600101818118611aa1575b50505043600382015560e0516004820155506060517f2cce98f9c9904c7e1863a6535ef065dae64ce06bf933752a09438ad7fd4ce4a4606080610100528061010001602060805101806080835e508051806020830101601f825f03163682375050601f19601f8251602001011690508101905060e051610120528061014052806101000160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610100a260018152505b565b60096060516020525f5260405f2060208154015f81601f0160051c60038111612c56578015611bc257905b808401548160051b60800152600101818118611bab575b505050600381015460e052600481015461010052506101005115611bec5761010051431015611bee565b5f5b15612c5657606051604052611c04610120611a08565b61012051611c335760096060516020525f5260405f205f81555f60038201555f6004820155505f815250611d95565b600854610120526101205160076060516020525f5260405f20556101205160018101818110612c565790506008556006610120516020525f5260405f20606051815560016001820155426002820155602060805101600382015f82601f0160051c60038111612c56578015611cbb57905b8060051b6080015181840155600101818118611ca4575b505050505060096060516020525f5260405f205f81555f60038201555f6004820155506060517fd08720847a45acb8fbc34f751fa443fdc7b097e5359476aeb647326b43d89b276060610120516101405280610160528061014001602060805101806080835e508051806020830101601f825f03163682375050601f19601f825160200101169050810190508061018052806101400160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610140a2610120518152505b565b60096040516020525f5260405f2060208154015f81601f0160051c60038111612c56578015611dd957905b808401548160051b60600152600101818118611dc2575b505050600381015460c052600481015460e0525060e05115612c565760096040516020525f5260405f205f81555f60038201555f6004820155506040517f71d05dac0ee786bf4c6b1d316eff79e7ff3b33384f47b02ac98d1ba995580965608080610100528061010001602060605101806060835e508051806020830101601f825f03163682375050601f19601f82516020010116905081019050604060c06101205e8061016052806101000160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610100a26001815250565b60405115611edd5760085460405110611edf565b5f5b815250565b606051604052611ef460c0611ec9565b60c051611f04575f815250611f30565b608051604052611f1460c0611a08565b60c051611f24575f815250611f30565b60a05160805114158152505b565b600660e0516020525f5260405f208054610120526001810154610140526002810154610160526003810160208154015f81601f0160051c60038111612c56578015611f9157905b808401548160051b6101800152600101818118611f79575b5050505050606060e060605e611fa86101e0611ee4565b6101e051611fb9575f8152506120be565b43600c54808201828110612c5657905090506101e052600a60e0516020525f5260405f206101005181554360018201556101e05160028201555061012051610100517f01687d75e9102d37dfe9ffcccf95cdc57a49c67846f81c92d8b0b74061b06fc060a060e05161020052806102205280610200016020610180510180610180835e508051806020830101601f825f03163682375050601f19601f8251602001011690508101905061014051610240526101e051610260528061028052806102000160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610200a360018152505b565b600a60e0516020525f5260405f208054610100526001810154610120526002810154610140525061014051156120fc57610140514310156120fe565b5f5b15612c5657600660e0516020525f5260405f2080546101605260018101546101805260028101546101a0526003810160208154015f81601f0160051c60038111612c5657801561216257905b808401548160051b6101c0015260010181811861214a575b50505050506101605161022052604060e060605e6102205160a052612188610240611ee4565b610240516121b757600a60e0516020525f5260405f205f81555f60018201555f6002820155505f81525061234e565b6101005161016052426101a0526101805160018101818110612c5657905061018052600660e0516020525f5260405f206101605181556101805160018201556101a051600282015560206101c05101600382015f82601f0160051c60038111612c5657801561223a57905b8060051b6101c0015181840155600101818118612222575b505050505060e0516007610100516020525f5260405f2055610220511561226d575f6007610220516020525f5260405f20555b600a60e0516020525f5260405f205f81555f60018201555f60028201555061022051610100517f3b06050dfa824eea1510109363ea3d85ac2aa57cf69efe155938f36f568031a3608060e051610240528061026052806102400160206101c05101806101c0835e508051806020830101601f825f03163682375050601f19601f825160200101169050810190506101805161028052806102a052806102400160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610240a360018152505b565b600a6040516020525f5260405f2080546060526001810154608052600281015460a0525060a05115612c5657600a6040516020525f5260405f205f81555f60018201555f60028201555060066040516020525f5260405f20805460c052600181015460e0526002810154610100526003810160208154015f81601f0160051c60038111612c565780156123f757905b808401548160051b61012001526001018181186123df575b505050505060c0516060517f9e493b9eb1d5c566844859068a1f063d64bccdc3dbc607cae2e175e7d6f03fed60a060405161018052806101a05280610180016020610120510180610120835e508051806020830101601f825f03163682375050601f19601f82516020010116905081019050604060806101c05e8061020052806101800160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610180a36001815250565b6060516040526124ce60a0611ec9565b60a0516124de575f8152506124e7565b60805115158152505b565b600660c0516020525f5260405f20805460e0526001810154610100526002810154610120526003810160208154015f81601f0160051c60038111612c5657801561254757905b808401548160051b610140015260010181811861252f575b5050505050604060c060605e61255e6101a06124be565b6101a05161256f575f815250612666565b43600c54808201828110612c5657905090506101a052600b60c0516020525f5260405f204381556101a05160018201555060e0517ff03f36efd9a6745b1f2a7418f713b5aa4fc17724373629c416a4a9ee39646c9c60a060c0516101c052806101e052806101c0016020610140510180610140835e508051806020830101601f825f03163682375050601f19601f8251602001011690508101905061010051610200526101a051610220528061024052806101c00160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f825160200101169050810190506101c0a260018152505b565b600b60c0516020525f5260405f20805460e05260018101546101005250610100511561269a576101005143101561269c565b5f5b15612c5657600660c0516020525f5260405f208054610120526001810154610140526002810154610160526003810160208154015f81601f0160051c60038111612c5657801561270057905b808401548160051b61018001526001018181186126e8575b5050505050610120516101e05260c0516060526101e0516080526127256102006124be565b6102005161274e57600b60c0516020525f5260405f205f81555f6001820155505f8152506128bb565b5f6101205242610160526101405160018101818110612c5657905061014052600660c0516020525f5260405f2061012051815561014051600182015561016051600282015560206101805101600382015f82601f0160051c60038111612c565780156127ce57905b8060051b6101800151818401556001018181186127b6575b50505050505f60076101e0516020525f5260405f2055600b60c0516020525f5260405f205f81555f6001820155506101e0517fc1e035d73fc8ccfe4a812e6f8953a5913518853f233017fe0adfa30e7aabe9fe608060c05161020052806102205280610200016020610180510180610180835e508051806020830101601f825f03163682375050601f19601f8251602001011690508101905061014051610240528061026052806102000160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610200a260018152505b565b600b6040516020525f5260405f20805460605260018101546080525060805115612c5657600b6040516020525f5260405f205f81555f60018201555060066040516020525f5260405f20805460a052600181015460c052600281015460e0526003810160208154015f81601f0160051c60038111612c5657801561295557905b808401548160051b610100015260010181811861293d575b505050505060a0517fea449691307f19701c426c5b541c78f5ede5249371868167c096b1ac033cef2560a060405161016052806101805280610160016020610100510180610100835e508051806020830101601f825f03163682375050601f19601f82516020010116905081019050604060606101a05e806101e052806101600160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610160a26001815250565b6020612d005f395f516040511015612a31575f612a40565b6020612d205f395f5160405111155b15612c5657604051600c557f034a5a1ad3f8d4bd6ef82e48bf4b6b7fe8ece7216d39c9f258c13b5fe2e4ecfb6040604051606052806080528060600160206020612d405f395f510180612d408339508051806020830101601f825f03163682375050601f19601f825160200101169050810190506060a16001815250565b5f6101c0525f606051600a8111612c56578015612b8d57905b806103205261032051606051811015612c565760051b608001516103405261034051604052612b07610360611ec9565b6103605115612b8257610340515f610360525f6101c051600a8111612c56578015612b5357905b8060051b6101e001518318612b4857600161036052612b53565b600101818118612b2e575b5050610360519050612b82576101c05160098111612c5657610340518160051b6101e00152600181016101c052505b600101818118612ad7575b50506101c05160208160051b01806101c0845e505050565b6040511515815250565b6020612da05f395f516040511015612bc7575f612bd6565b6020612dc05f395f5160405111155b815250565b60076040516020525f5260405f20541515815250565b60076040516020525f5260405f2054815250565b60085460018103818111612c56579050815250565b60085460018103818111612c5657905060405260066040516020525f5260405f2054815250565b60085460018103818111612c56579050815250565b5f80fd14f1155c155c0f5011ee155c12341459042b155c153e093b10c40e94155c04fa155c0c87088e0d9b073300181071155c155c095a0056155c101b086f155c155c11b10e5b155c076f0e110b5913ad0131155c081506401412155c03930677155c155c155c1520855820ea25f55df290ba3bdcfb02162b102534a447839f2eca35a83ddd9abd4acccd9d192cc0811866190120a16576797065728300040100390000000000000000000000007bcd6d471d1a068012a79347c7a944d1df01a1ae000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000000000000000000000000000000000000000054600000000000000000000000000000000000000000000000000000000000049d40