ETH Price: $2,254.55 (-4.13%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
1587987322026-10-28 14:04:0130 hrs ago1793196241  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading
Source Code Verified Exact Match

Contract Name

PriceFeedLib

Compiler Version
v0.8.34+commit.80d5c536
Optimization Enabled
Yes with 200 runs
Other Settings
cancun EvmVersion
License
-NA-
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API
[{"inputs":[{"internalType":"address","name":"adapter","type":"address"},{"internalType":"uint256","name":"stipend","type":"uint256"},{"internalType":"uint256","name":"consumed","type":"uint256"}],"name":"AdapterGasExhausted","type":"error"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"}],"name":"AdapterNotRegistered","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"AssetNotFound","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"CannotRemoveLastFeed","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"},{"internalType":"address","name":"feedAsset","type":"address"}],"name":"CustomFeedAssetMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"CustomFeedBaseCircular","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"CustomFeedBaseUnreadable","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"DivergenceToleranceRequired","type":"error"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"}],"name":"DuplicateAdapterInSlice","type":"error"},{"inputs":[],"name":"EmptyAdapterSlice","type":"error"},{"inputs":[{"internalType":"uint256","name":"heartbeat","type":"uint256"}],"name":"HeartbeatNotBelowStaleCap","type":"error"},{"inputs":[],"name":"InvalidAssetDecimals","type":"error"},{"inputs":[],"name":"InvalidDecimalExponent","type":"error"},{"inputs":[],"name":"InvalidPriceOracle","type":"error"},{"inputs":[],"name":"InvalidPriceOracleType","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"MonitorFeedAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint8","name":"expectedDecimals","type":"uint8"},{"internalType":"uint8","name":"actualDecimals","type":"uint8"}],"name":"MonitorFeedDecimalsMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"MonitorFeedNotFound","type":"error"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"NotAContract","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"PriceFeedAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint8","name":"existingDecimals","type":"uint8"},{"internalType":"uint8","name":"newDecimals","type":"uint8"}],"name":"PriceFeedDecimalsMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"PriceFeedIndexOutOfBounds","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"PriceFeedNotFound","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"PriceFeedNotSet","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"PriceFeedTypeImmutable","type":"error"},{"inputs":[{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"QuoteAssetUnpriceable","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"},{"indexed":false,"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"MonitorFeedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldHeartbeat","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newHeartbeat","type":"uint256"}],"name":"MonitorFeedHeartbeatUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toIndex","type":"uint256"}],"name":"MonitorFeedIndexChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"MonitorFeedRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"},{"indexed":false,"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"PriceFeedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldHeartbeat","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newHeartbeat","type":"uint256"}],"name":"PriceFeedHeartbeatUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toIndex","type":"uint256"}],"name":"PriceFeedIndexChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"PriceFeedRemoved","type":"event"},{"inputs":[{"internalType":"address[]","name":"adapters","type":"address[]"},{"internalType":"address","name":"registry","type":"address"}],"name":"adapterDisplayInfo","outputs":[{"internalType":"string[]","name":"names","type":"string[]"},{"internalType":"string[][]","name":"labels","type":"string[][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"uptimeFeed","type":"address"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"}],"name":"checkSequencerUptime","outputs":[{"internalType":"bool","name":"stale","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"balanceAsset","type":"tuple"},{"internalType":"address","name":"balanceAdapter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDebt","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"int256","name":"value","type":"int256"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"internalType":"bytes32","name":"protocolBrand","type":"bytes32"},{"internalType":"bytes32","name":"protocolId","type":"bytes32"},{"internalType":"bytes32","name":"protocolSubId","type":"bytes32"},{"internalType":"bytes","name":"positionId","type":"bytes"},{"internalType":"enum PositionKind","name":"positionKind","type":"PositionKind"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"bytes32","name":"positionInstanceId","type":"bytes32"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.Position[]","name":"pos","type":"tuple[]"},{"internalType":"address","name":"registry","type":"address"}],"name":"toVerbose","outputs":[{"components":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"balanceAsset","type":"tuple"},{"internalType":"address","name":"balanceAdapter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDebt","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"int256","name":"value","type":"int256"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"internalType":"bytes32","name":"protocolBrand","type":"bytes32"},{"internalType":"bytes32","name":"protocolId","type":"bytes32"},{"internalType":"bytes32","name":"protocolSubId","type":"bytes32"},{"internalType":"bytes","name":"positionId","type":"bytes"},{"internalType":"enum PositionKind","name":"positionKind","type":"PositionKind"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"bytes32","name":"positionInstanceId","type":"bytes32"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.Position","name":"position","type":"tuple"},{"internalType":"string","name":"protocolName","type":"string"},{"internalType":"string[]","name":"labels","type":"string[]"}],"internalType":"struct INAVCalculator.VerbosePosition[]","name":"verbose","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"allAdapters","type":"address[]"},{"internalType":"address[]","name":"adapters","type":"address[]"}],"name":"validateAdapterSlice","outputs":[{"internalType":"address[]","name":"covered","type":"address[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"IPrices.PriceType"}],"name":"validateFeedSupport","outputs":[],"stateMutability":"view","type":"function"}]
60808060405234601b57615bfa90816100208239308160070152f35b5f80fdfe6080604052307f0000000000000000000000000000000000000000000000000000000000000000146004361015610034575f80fd5b5f3560e01c9081630793b0aa146101b25781630a91eda2146101ad5781631355d380146101a857816329a07aa7146101a357816348e9ff741461019e578163524b3ba814610199578163573c424d14610194578163596ef0481461018f5781635f47eaa91461018657816361ae71061461017d5781636a6f420b146101785781636bee1c0e146101735781636f067e9b1461016a578163ad3227ef14610161578163be14b7881461015c578163cab33e7b14610157578163ceaf249c14610152578163da5990cd1461014d578163eb4abdd814610144578163ebfd71661461013f578163f5eb38b714610135575063fe4da07014610130575f80fd5b611898565b15611886575b5f80fd5b6117ee565b156117cb575f80fd5b61177c565b611693565b61164b565b61157a565b1561147e575f80fd5b1561143d575f80fd5b611426565b6112ab565b1561110c575f80fd5b156110a5575f80fd5b611049565b61101d565b610f7c565b610ef6565b610e75565b6109f2565b6108ee565b6106bb565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176101e657604052565b6101b7565b60a081019081106001600160401b038211176101e657604052565b61016081019081106001600160401b038211176101e657604052565b90601f801991011681019081106001600160401b038211176101e657604052565b6040519061025361026083610222565b565b60405190610253608083610222565b60405190610253606083610222565b6040519061025360c083610222565b6040519061025361016083610222565b6001600160401b0381116101e65760051b60200190565b6001600160a01b0381160361013b57565b60243590610253826102a9565b60a43590610253826102a9565b60e43590610253826102a9565b6101043590610253826102a9565b6101243590610253826102a9565b3590610253826102a9565b6001600160401b0381116101e657601f01601f191660200190565b81601f8201121561013b5760208135910161033d82610308565b9261034b6040519485610222565b8284528282011161013b57815f92602092838601378301015290565b60ff81160361013b57565b359061025382610367565b91909160608184031261013b5760405190610397826101cb565b819381356103a4816102a9565b83526020820135916001600160401b03831161013b576103ca6040939284938301610323565b60208501520135916103db83610367565b0152565b8015150361013b57565b6101443590610253826103df565b3590610253826103df565b6007111561013b57565b359061025382610402565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060018060a01b038251168152604060ff816104666020860151606060208701526060860190610417565b9401511691015290565b634e487b7160e01b5f52602160045260245ffd5b6007111561048e57565b610470565b90600782101561048e5752565b906105cc90610240806105806105066104c48751610260875261026087019061043b565b6020888101516001600160a01b031690870152604088015160408701526104f46060890151606088019015159052565b6080880151868203608088015261043b565b60a087015160a086015260c087015160c086015261052e60e088015160e087019060ff169052565b61010087810151151590860152610120878101511515908601526101408701516101408601526101608701516101608601526101808701516101808601526101a08701518582036101a0870152610417565b946105956101c08201516101c0860190610493565b6101e0818101511515908501526102008101516102008501526105c361022082015161022086019015159052565b01511515910152565b90565b9080602083519182815201916020808360051b8301019401925f915b8383106105fa57505050505090565b9091929394602080610618600193601f198682030187528951610417565b970193019301919392906105eb565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061065957505050505090565b90919293946020806106ac600193603f19868203018752895190604061069b61068b84516060855260608501906104a0565b8685015184820388860152610417565b9201519060408184039101526105cf565b9701930193019193929061064a565b604036600319011261013b576004356001600160401b03811161013b573660238201121561013b5780600401356106f181610292565b916106ff6040519384610222565b8183526024602084019260051b8201019036821161013b5760248101925b82841061074957610745610739866107336102ba565b90611a45565b60405191829182610627565b0390f35b83356001600160401b03811161013b57820190610260602319833603011261013b57610773610243565b9060248301356001600160401b03811161013b57610797906024369186010161037d565b82526107a5604484016102fd565b6020830152606483013560408301526107c0608484016103f7565b606083015260a48301356001600160401b03811161013b576107e8906024369186010161037d565b608083015260c483013560a083015260e483013560c083015261080e6101048401610372565b60e083015261082061012484016103f7565b61010083015261083361014484016103f7565b6101208301526101648301356101408301526101848301356101608301526101a48301356101808301526101c4830135916001600160401b03831161013b576108dd61026460209561088c879660243691840101610323565b6101a085015261089f6101e4820161040c565b6101c08501526108b261020482016103f7565b6101e08501526102248101356102008501526108d161024482016103f7565b610220850152016103f7565b61024082015281520193019261071d565b606036600319011261013b57600435610906816102a9565b602435610912816102a9565b60443590600482101561013b576109289261341e565b005b6004111561048e57565b90600482101561048e5752565b81516001600160a01b031681526101808101929161016090819061096d60208201516020860190610934565b6040810151604085015261098b6060820151606086019060ff169052565b6080810151608085015260a081015160a08501526109b260c082015160c086019015159052565b60e0818101511515908501526101008101516101008501526109df61012082015161012086019015159052565b6101408101516101408501520151910152565b60c036600319011261013b57610745600435606435604435602435610a16836102a9565b610a216084356103df565b610a2c60a4356103df565b610a34611b84565b936004610a73610a448684613636565b929593949196908a5f1982145f14610c78576001600160a01b03165f9081526020929092525060408120611c14565b508054906003908b90600190610ac5896060610aa86001600160a01b0389166001600160a01b03811688529860a81c60ff1690565b95610ab68760208301611c2d565b8b6040820152019060ff169052565b01549360808d019485528c898a15610c6f575b60c0610ae692019015159052565b6101008d0152610af58161092a565b03610bf057604090610b17906001600160a01b03165b6001600160a01b031690565b815163c78cf9cb60e01b815293849182905afa91825f915f94610bbd575b50610baf575b5050505b608435151560e088015260a43580610b9e575b610b63575b60405180898982610941565b610b8795610b74956084359561386c565b5090151561012088015294909350915050565b6101408301526101608201525f8080808080610b57565b50610baa86868661381a565b610b52565b60a08a0152525f8080610b3b565b909350610be2915060403d604011610be9575b610bda8183610222565b810190611c8d565b925f610b35565b503d610bd0565b60a09150610c06906001600160a01b0316610b0b565b604051633fabe5a360e21b815292839182905afa5f9181610c39575b50610c2e575b50610b3f565b60a08801525f610c28565b610c5c91925060a03d60a011610c68575b610c548183610222565b810190611c50565b5092505050905f610c22565b503d610c4a565b50608435610ad8565b6001600160a01b03165f9081526020929092526040909120611c14565b9080601f8301121561013b578135610cac81610292565b92610cba6040519485610222565b81845260208085019260051b82010192831161013b57602001905b828210610ce25750505090565b602080918335610cf1816102a9565b815201910190610cd5565b61016060031982011261013b57600435916024359160443591606435916084359160a4356001600160401b03811161013b5782610d3b91600401610c95565b9160c4359160e435610d4c816102a9565b91610d586101046102fd565b91610d646101246103f7565b9161014435906001600160401b03821161013b576105cc91600401610323565b9080602083519182815201916020808360051b8301019401925f915b838310610daf57505050505090565b9091929394602080610dcd600193601f19868203018752895161043b565b97019301930191939290610da0565b6105cc9181518152610100610e57610e2d610e086020860151610120602087015261012086019061043b565b6040868101516001600160401b03169086015260608601518582036060870152610d84565b60808581015115159085015260a08581015115159085015260c085015184820360c0860152610d84565b60e08085015115159084015292015190610100818403910152610d84565b610745610e95610e8436610cfc565b999098919792969350949394611d86565b604051918291602083526020830190610ddc565b90602080835192838152019201905f5b818110610ec65750505090565b82516001600160a01b0316845260209384019390920191600101610eb9565b9060206105cc928181520190610ea9565b604036600319011261013b576004356001600160401b03811161013b57610f21903690600401610c95565b6024356001600160401b03811161013b573660238201121561013b5780600401356001600160401b03811161013b573660248260051b8401011161013b57610745926024610f70930190611f49565b60405191829182610ee5565b60a036600319011261013b57610745610fab608435606435604435602435600435610fa6856103df565b61209f565b610fcc60409492945194859415158552606060208601526060850190610ea9565b908382036040850152610ea9565b60a060031982011261013b57600435906001600160401b03821161013b5761100491600401610c95565b906024359060443590606435906084356105cc816102a9565b61074561103561102c36610fda565b939092506121b7565b604051918291602083526020830190610ea9565b60e036600319011261013b57602061109b60043560243560443561106c816102a9565b6064356084359161107c83610367565b60a43593611089856103df565b60c43595611096876103df565b6121dd565b6040519015158152f35b60c036600319011261013b576004356024356044356110c3816102a9565b6064356110cf816102a9565b6084359160a43593600485101561013b576109289561231f565b606090600319011261013b5760043590602435611105816102a9565b9060443590565b611135611118366110e9565b6001600160a01b0382165f90815260209390935260409092209092565b80548210156111d157602061116b837fe572f68200f6bc20ad255832477966d4e6fb6a7adc1c3a50bf9e2dd2b4857ba09361463d565b611189575b50506040519384526001600160a01b03908116941692a3005b60408051918252602082018790526001600160a01b03928316928816917fbcb5a740bee4eee1d9889306d3cbe3af87ef933acf7b66b8b1428051c683bc989190a35f80611170565b506359b171b960e11b5f9081526001600160a01b03909216600452602452604490fd5b604081016040825282518091526060820190602060608260051b8501019401915f905b82821061128057505050506020818303910152815180825260208201916020808360051b8301019401925f915b83831061125357505050505090565b9091929394602080611271600193601f1986820301875289516105cf565b97019301930191939290611244565b9091929460208061129d600193605f198982030186528951610417565b970192019201909291611217565b604036600319011261013b576004356001600160401b03811161013b576112d6903690600401610c95565b602435906112e3826102a9565b80516112ee81612612565b916112f882612612565b936113436040519263e567e86960e01b60208501526004845261131c602485610222565b611351611327612211565b60405163867430a560e01b602082015293849160248301611a34565b03601f198101845283610222565b5f5b85811061136957604051806107458a8a836111f4565b806113d061138961137c60019486611a20565b516001600160a01b031690565b6113948882896130d3565b61139e848c611a20565b526113a9838b611a20565b506113b48682613290565b6113be848d611a20565b526113c9838c611a20565b5086613147565b805115611420576113e1828b611a20565b515115611402576113fc906113f6838c611a20565b51613396565b01611353565b61140b9061471d565b611415828b611a20565b52611420818a611a20565b506113fc565b602061109b61143436610fda565b93909250612647565b60a036600319011261013b57600435602435611458816102a9565b604435611464816102a9565b6064359060843592600484101561013b5761092894612691565b61148a611118366110e9565b8054808310156115575760011461153b576114ee6114c9837f2bcc9edbb8384ae7819f8ee368a27c914ff42c8c622057d7d4ad707a55dd72bc9361463d565b6114f3575b50506040519384526001600160a01b039081169416929081906020820190565b0390a3005b60408051918252602082018790526001600160a01b03928316928816917fe849e3b4490715fccf568d783ae86f296aba0a97365f3e014811b451a647b9009190a35f806114ce565b62de56a760e11b5f526001600160a01b03831660045260245b5ffd5b6359b171b960e11b5f9081526001600160a01b0385166004526024849052604490fd5b60a036600319011261013b5760e06115c26004356064356024356044356115a0836102a9565b6115b683608435956115b1876103df565b613636565b5050949192909361386c565b949360409391935196875260208701526040860152151560608501526080840152151560a0830152151560c0820152f35b9080602083519182815201916020808360051b8301019401925f915b83831061161e57505050505090565b909192939460208061163c600193601f1986820301875289516104a0565b9701930193019193929061160f565b61168561074561166e61165d36610cfc565b999098919792969350949394612907565b604092919251938493604085526040850190610ddc565b9083820360208501526115f3565b60e036600319011261013b576024356004356044356064356001600160401b03811161013b576116c7903690600401610c95565b608435906001600160401b03821161013b573660238301121561013b578160040135916116f383610292565b926117016040519485610222565b8084526024602085019160051b8301019136831161013b57602401905b82821061176c575050506117306102c7565b9260c435956001600160401b03871161013b5761175461175a973690600401610323565b95612a68565b60408051928352901515602083015290f35b813581526020918201910161171e565b604036600319011261013b57602061109b600435611799816102a9565b60243590612bf1565b606090600319011261013b57600435906024356117be816102a9565b906044356105cc816102a9565b6109286117d7366117a2565b91612ca6565b9060206105cc9281815201906115f3565b61018036600319011261013b5760243560443560043560643560843560a4356001600160401b03811161013b57611829903690600401610c95565b6118316102d4565b6118396102e1565b916118426102ef565b9361184b6103e9565b9561016435986001600160401b038a1161013b576107459a61187461187a9b3690600401610323565b99612dba565b604051918291826117dd565b610928611892366117a2565b91612fa4565b604036600319011261013b5760a060ff6118ba6024356004356115b1826102a9565b939490926040519586521660208501521515604084015260608301526080820152f35b604051906118ea826101cb565b5f604083828152606060208201520152565b611904610243565b9061190d6118dd565b82525f60208301525f60408301525f60608301526119296118dd565b60808301525f60a08301525f60c08301525f60e08301525f6101008301525f6101208301525f6101408301525f6101608301525f61018083015260606101a08301525f6101c08301525f6101e08301525f6102008301525f6102208301525f610240830152565b9061199a82610292565b6119a76040519182610222565b82815280926119b8601f1991610292565b01905f5b8281106119c857505050565b6020906040516119d7816101cb565b6119df6118fc565b815260608382015260606040820152828285010152016119bc565b634e487b7160e01b5f52603260045260245ffd5b805115611a1b5760200190565b6119fa565b8051821015611a1b5760209160051b010190565b9060206105cc928181520190610417565b919091805190611a5482611990565b936040519163e567e86960e01b602084015260048352611a75602484610222565b5f916060906060945f5b878110611a90575050505050505050565b89611aaf6020611aa08489611a20565b5101516001600160a01b031690565b82158015611b6e575b611b48575b886040611b3a858095611b2f611343611b4297611b2a8f8f878260019f92611aeb611b0c946101a096611a20565b51611af6848c611a20565b51526020611b04848c611a20565b510152611a20565b510151885163867430a560e01b602082015293849160248301611a34565b613290565b84611b048484611a20565b510151613396565b01611a7f565b91975095509250611b5a8184846130d3565b92611b658184613147565b96909586611abd565b506001600160a01b038181169089161415611ab8565b6040519061018082018281106001600160401b038211176101e6576040525f610160838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201520152565b9060018060a01b03165f5260205260405f2090565b805415611a1b575f5260205f20905f90565b8054821015611a1b575f5260205f209060011b01905f90565b600482101561048e5752565b519069ffffffffffffffffffff8216820361013b57565b908160a091031261013b57611c6481611c39565b916020820151916040810151916105cc608060608401519301611c39565b6040513d5f823e3d90fd5b919082604091031261013b576020825192015190565b6040519061012082018281106001600160401b038211176101e6576040526060610100835f8152611cd26118dd565b60208201525f604082015282808201525f60808201525f60a08201528260c08201525f60e08201520152565b60405190611d0d602083610222565b5f80835282815b828110611d2057505050565b602090611d2b6118dd565b82828501015201611d14565b90611d4182610292565b611d4e6040519182610222565b8281528092611d5f601f1991610292565b01905f5b828110611d6f57505050565b602090611d7a6118dd565b82828501015201611d63565b92959094999799611db1611d98611ca3565b426001600160401b031660408201529a89878a88613b56565b97885160208c015260808901611dd48c60a0611dcd8451151590565b1515910152565b8c6001600160a01b038316611e8d57505050611df45f5b151560e08c0152565b845415611e7b579086611e0692613dbf565b89151560808a015293845115611e475791611e4397989991611e3193611e2b8761400b565b926140e7565b92611e3e8483838b6142b2565b6143a9565b8252565b505050505050509150611e58611cfe565b6060820152611e65611cfe565b60c0820152611e72611cfe565b61010082015290565b50505050505050509150611e58611cfe565b611df492611ebb928c611eb3611eac6040602084015193015160ff1690565b9251151590565b92898d6121dd565b611deb565b60405190611ecf602083610222565b5f808352366020840137565b60408051909190611eec8382610222565b6001815291601f1901366020840137565b90611f0782610292565b611f146040519182610222565b8281528092611f25601f1991610292565b0190602036910137565b9190811015611a1b5760051b0190565b356105cc816102a9565b90929192831561205057611f5c84611efd565b935f5b818110611f6c5750505050565b611f7f611f7a828486611f2f565b611f3f565b6001600160a01b0381165f5b838110612016575085515f91825b828110611fea575b50505015611fcf5790611fc9600192611fba838a611a20565b6001600160a01b039091169052565b01611f5f565b63fc6da03f60e01b5f526001600160a01b031660045260245ffd5b81611ffb610b0b61137c848d611a20565b1461200857600101611f99565b5050505060015f8080611fa1565b81612027610b0b61137c848d611a20565b1461203457600101611f8b565b633b28a62160e21b5f526001600160a01b03831660045260245ffd5b639e5d018960e01b5f5260045ffd5b8054821015611a1b575f52600360205f20910201905f90565b634e487b7160e01b5f52601160045260245ffd5b5f19811461209a5760010190565b612078565b949291825480156121a0576120b381611efd565b916120bd82611efd565b975f945f965f5b8581106120eb575050505050506120e592916120df9161446f565b9461446f565b91929190565b8b6120f6828461205f565b50546001600160a01b03168c8a828b61210f828b613636565b505094859492939194612183575b505061212a908c8b61381a565b61213d575b5050505050506001016120c4565b9061214c939291858c8b61386c565b50509350505050612161575b8c81808061212f565b6121798b612173600195949d9161208c565b9c611a20565b5290508b5f612158565b9f61218d9061208c565b9f61219791611a20565b52848d8f61211d565b5050505091506121ae611ec0565b916120e5611ec0565b91929092156121d2576105cc926121cd92613dbf565b61400b565b5050506105cc611ec0565b9594939291906121ee82828961381a565b15612206576121fc9661386c565b5050935050505090565b505050505050505f90565b60405190612220602083610222565b5f8252565b60405190612234604083610222565b60098252681c1c9a58d95199595960ba1b6020830152565b634e487b7160e01b5f525f60045260245ffd5b90600481101561048e57815460ff60a81b191660a89190911b60ff60a81b16179055565b8054680100000000000000008110156101e6576122a591600182018155611c14565b919091612300578051825460208301516001600160a01b039092166001600160a81b03199091161760a09190911b60ff60a01b161782556040810151600481101561048e576001916122f96060928561225f565b0151910155565b61224c565b6103db604092959493606083019683526020830190610934565b6001600160a01b038416959390861580156125c5575b6125b65761234a612344612225565b836144b1565b85156125b65761235a85836144f8565b90600860ff83160361258e576001600160a01b0385165f90815260209190915260409020908154935f5b85811061246f57506123b86123ae8763ffffffff939060018060a01b03165f5260205260405f2090565b5463ffffffff1690565b1615612453578285949261241d612435936123f98a61244e987f66f41fd52fd5d57c4568faf2fe371b57e5f4b9a39fdde7ed4169209083a102629c9b61341e565b612413612404610255565b6001600160a01b039095168552565b60ff166020840152565b61242a8760408401611c2d565b886060830152612283565b6040516001600160a01b03909316959293849384612305565b0390a3565b63ddddd1a360e01b5f526001600160a01b03851660045260245ffd5b94919089612495610b0b6124878988999d9c98611c14565b50546001600160a01b031690565b0361257d575050506124b56124aa8484611c14565b505460a81c60ff1690565b6124be8261092a565b6124c78161092a565b0361255b5760016124d88383611c14565b5001549484861461253a57509260016125148294937ffe76d0927fc90eeeb2972087840c45a6613dc5c9eeafd4b8042442cff49e6a8b96611c14565b5001556040805194855260208501929092526001600160a01b031692908190810161244e565b6357cc819b60e01b5f526001600160a01b038085166004521660245260445ffd5b630e5906cf60e01b5f526001600160a01b03808416600452851660245260445ffd5b909194600190989493979801612384565b6387d3284f60e01b5f526001600160a01b038516600452600860245260ff821660445260645ffd5b636077d21b60e01b5f5260045ffd5b506001600160a01b03841615612335565b5f5b8281106125e457505050565b6060828201526020016125d8565b60405190612601602083610222565b5f80835261025390602084016125d6565b9061025361261f83610292565b61262c6040519182610222565b8381526020819461263f601f1991610292565b0191016125d6565b92911561268a5761265792613dbf565b5f5b815181101561268457604061266e8284611a20565b51015161267d57600101612659565b5050600190565b50505f90565b5050505f90565b939092919282156125b65762093a8083101580612874575b612860576001600160a01b038416948515801561284f575b6125b657816126db91611bed6126d5612225565b886144b1565b8054906126e884876144f8565b82151580612834575b6127f0575f5b83811061273957508661244e939261241d612435936123f9897ff5d56f5f022e91df0e1d6ac8a215cc8178430f9319b2403f6484ae50583264ad9b9c8a61341e565b93949192908861274f610b0b6124878888611c14565b036127e35750506127636124aa8484611c14565b61276c8261092a565b6127758161092a565b0361255b5760016127868383611c14565b500154948486146127c257509260016125148294937f2080f27056457a1afcd666523e6c71c2a4080bc4b23289ac23261604f0b72d9a96611c14565b630b123e5d60e31b5f526001600160a01b038085166004521660245260445ffd5b90929194936001016126f7565b8361280b61280061155494611c02565b505460a01c60ff1690565b63039ce40560e61b5f526001600160a01b0390911660045260ff90811660245216604452606490565b5061284161280083611c02565b60ff808316911614156126f1565b506001600160a01b038216156126c1565b6364d8435760e01b5f52600483905260245ffd5b505f198314156126a9565b6040519061288e602083610222565b5f80835282815b8281106128a157505050565b6020906128ac6118fc565b82828501015201612895565b906128c282610292565b6128cf6040519182610222565b82815280926128e0601f1991610292565b01905f5b8281106128f057505050565b6020906128fb6118fc565b828285010152016128e4565b92959460e09561293b9b9a959899929399612920611ca3565b426001600160401b031660408201529c8d97828c8c8a613b56565b96879182516020830152858d608085016129616129588251151590565b151560a0870152565b6001600160a01b038416612a19575050505061298591505f9889915b019015159052565b885415612a07578761299692613dbf565b81151560808c0152928351156129ce576129c9986129b793611e2b8661400b565b906129c48287878c6142b2565b614793565b835290565b5050505050505050506129df611cfe565b60608301526129ec611cfe565b60c08301526129f9611cfe565b6101008301526105cc61287f565b505050505050505050506129df611cfe565b85612a4594612a3e612a37604060206129859b015194015160ff1690565b9351151590565b938c6121dd565b98899161297d565b9190915f838201938412911290801582169115161761209a57565b969490919293958451875103612bb8576001600160a01b038216151580612b99575b612b7257612a9e9184848a99979899613b56565b93612aac6080860151151590565b945f915f9560208301976060604085019401945b8351891015612b8b57612ad38984611a20565b518015612b8157612ae761137c8b87611a20565b6001600160a01b0381165f90815260208a9052604090209092905415612b7257612b63612b538f898f95612b69968f938f8f95612b448c612b3e604060019f612b3690612b5b9660ff9861488d565b015160ff1690565b94613636565b50505098909451965160ff1690565b965160ff1690565b961692614a68565b90612a4d565b985b0197612ac0565b63470cbf4760e01b5f5260045ffd5b5097600190612b6b565b9a5098975050505050505050565b506001600160a01b0382165f9081526020849052604090205415612a8a565b63512509d360e11b5f5260045ffd5b5f1981019190821161209a57565b60071981019190821161209a57565b9190820391821161209a57565b5f9291906001600160a01b03168015612c9f5760a060049160405192838092633fabe5a360e21b82525afa90815f915f93612c77575b50612c355750600193505050565b15612c4257506001925050565b80612c4f57506001925050565b42811115612c6e5750612c63425b42612be4565b116102535760019150565b612c6390612c5d565b909250612c93915060a03d60a011610c6857610c548183610222565b5050915090915f612c27565b505f925050565b6001600160a01b0382165f908152602091909152604081208054915b828110612ceb5763286f45f560e21b5f526001600160a01b03808516600452851660245260445ffd5b612cf86124878284611c14565b6001600160a01b0386811691168114612d145750600101612cc2565b9450927fe572f68200f6bc20ad255832477966d4e6fb6a7adc1c3a50bf9e2dd2b4857ba09250612d478461244e9361463d565b90919250612d6c575b50506040519384526001600160a01b0316929081906020820190565b60408051918252602082018790526001600160a01b03928316928416917fbcb5a740bee4eee1d9889306d3cbe3af87ef933acf7b66b8b1428051c683bc9891819081015b0390a35f80612d50565b958499949895849c9b939894929460018060a01b038116155f14612f4f575098828887612def8a958998978e9f9e9d9e613dbf565b9c612df98e61400b565b90612e0d98612e07946140e7565b99613b56565b936001600160a01b038416612f2257505050505f92935b845194612e30866128b8565b975f926020850190604086019260608701948c60808901975b8c8110612e5f5750505050505050505050505050565b612f1a8c610240612f11848f968f8f8f998f928f928f9c8f958f9560019f612ed5612ecd612ec1612edc93612ebb8f9d612e9f612ef69f612eb39f611a20565b51805151909e6001600160a01b0390911690565b92839161488d565b9a614bcb565b97519351945160ff1690565b945160ff1690565b9451151590565b946020612eed604089015160ff1690565b97015197614c2c565b612f008383611a20565b52612f0b8282611a20565b50611a20565b51019015159052565b018d90612e49565b60208501516040860151612f48959060ff1692612f426080890151151590565b946121dd565b9293612e24565b995090612f60928a92999899613eef565b96875115612f91579084898c612e0787612e0d968b898e612f8c612f82611edb565b94611fba86611a0e565b6140e7565b50505050505050505090506105cc61287f565b6001600160a01b0382165f908152602091909152604081208054915b828110612fe957635ff200f560e01b5f526001600160a01b03808516600452851660245260445ffd5b612ff66124878284611c14565b6001600160a01b03868116911681146130125750600101612fc0565b945092916001146130b8577f2bcc9edbb8384ae7819f8ee368a27c914ff42c8c622057d7d4ad707a55dd72bc9161304c8461244e9361463d565b909192506130705750506040519384526001600160a01b0316929081906020820190565b60408051918252602082018790526001600160a01b03928316928416917fe849e3b4490715fccf568d783ae86f296aba0a97365f3e014811b451a647b9009181908101612db0565b62de56a760e11b5f526001600160a01b03821660045260245ffd5b9091906001600160a01b0381166130ef575b506105cc91614dab565b60405163180d00ff60e01b60208201526001600160a01b038416602480830191909152815261312891613123604483610222565b614dab565b91825161313557916130e5565b505090565b9190820180921161209a57565b906001600160a01b038216156131915760405163fcaed79960e01b60208201526001600160a01b0390911660248083019190915281526105cc9161318c604483610222565b61332a565b50506040516131a1602082610222565b5f8082526105cc90602083016125d6565b81601f8201121561013b576020815191016131cc82610308565b926131da6040519485610222565b8284528282011161013b57815f926020928386015e8301015290565b60208183031261013b578051906001600160401b03821161013b57019080601f8301121561013b57815161322981610292565b926132376040519485610222565b81845260208085019260051b8201019183831161013b5760208201905b83821061326357505050505090565b81516001600160401b03811161013b57602091613285878480948801016131b2565b815201910190613254565b620f42406132a19261100092614e9f565b9015801561331f575b613316575f6132d49160405180938192632fcb619b60e11b83526020600484018181520190610417565b038130620f4240fa5f91816132f2575b506105cc57506105cc6125f2565b61330f9192503d805f833e6133078183610222565b8101906131f6565b905f6132e4565b506105cc6125f2565b5060408151106132aa565b620186a061333b9261038092614e9f565b9015801561338b575b613316575f61336e9160405180938192632fcb619b60e11b83526020600484018181520190610417565b038130620186a0fa5f91816132f257506105cc57506105cc6125f2565b506040815110613344565b90815181518082105f146133f65750915b5f5b8381106133b65750505050565b806133c360019285611a20565b51516133d0575b016133a9565b6133da8185611a20565b516133e58285611a20565b526133f08184611a20565b506133ca565b9050916133a7565b5190610253826102a9565b9081602091031261013b57516105cc816102a9565b92916001600160a01b03821690811580156135fb575b6125b657613449613443612225565b846144b1565b6134528161092a565b6003810361350f575061346b61346783614ecf565b1590565b6125b65760206004916040519283809263e768d0ff60e01b82525afa90811561350a575f916134db575b506001600160a01b03848116908216036134b457506102539192614f5c565b631e0f351360e31b5f526001600160a01b038085166004529182166024521660445260645ffd5b6134fd915060203d602011613503575b6134f58183610222565b810190613409565b5f613495565b503d6134eb565b611c82565b9092935061351c8161092a565b80159081156135e6575b81156135d2575b50156135c35761353c90614ecf565b6125b65760a060049160405192838092633fabe5a360e21b82525afa801561350a575f5f925f9261359a575b505f12801590613592575b6125b6574210908115613588575b506125b657565b905042105f613581565b508015613573565b90505f92506135b8915060a03d60a011610c6857610c548183610222565b509093909250613568565b6384014a8160e01b5f5260045ffd5b600291506135df8161092a565b145f61352d565b90506135f18161092a565b6001811490613526565b506001600160a01b03851615613434565b60405190613619826101eb565b5f6080838281528260208201528260408201528260608201520152565b6001600160a01b0382165f90815260209190915260408120909291909283549182156137ff575061366561360c565b935f19925f5b8181106136c45750505f1983146136a6575083519261369e6134676080613696604089015160ff1690565b970151151590565b939493929190565b90506136b89293506128009150611c02565b5f916001905f19908490565b6136ce8184611c14565b50936136d985615046565b6136e96134676080830151151590565b6137f4578860208201966136fe885142612be4565b9361370f6134676060860151151590565b94856137e6575b85156137b357506137269061208c565b975b5f198a1480156137a2575b613747575b50505050506001905b0161366b565b6137969599509261377d613784936040613775819561378d98865185525160208501525460ff9060a01c1690565b60ff16910152565b0151151590565b151560608a0152565b15156080880152565b8360015f888180613738565b506137ae858585615244565b613733565b604085015191999115159081156137d8575b5015613728575050505050600190613741565b62093a80915010155f6137c5565b600183015481109550613716565b509350600190613741565b638a7a791d60e01b5f526001600160a01b031660045260245ffd5b6001600160a01b0383165f908152602091909152604090205415801592919061384257505090565b6001600160a01b039091165f9081526020919091526040902063ffffffff91505460201c16151590565b96949593959290928015613afd575b958415613aee5750505f915b82965f945f945f945f946138ac825f969060018060a01b03165f5260205260405f2090565b918254916138b983611efd565b925f945f5b828110613ab2575050506001600160a01b039091165f908152602091909152604090209180151580613aaa575b80613aa1575b61398a575b50505460201c63ffffffff169163ffffffff831615159081613981575b5080613978575b613928575b50509091929394565b61394a6139549161393e6305f5e1008092615300565b5f811261396a576157b2565b9163ffffffff1690565b10613961575b5f8061391f565b6001925061395a565b613973906149c9565b6157b2565b505f811361391a565b9050155f613913565b9450965096509250819261399e838761571a565b600183811603613a49576139bb6139b58460011c90565b87611a20565b51965b878213935f975f5b828110613a1757505050866139df825463ffffffff1690565b9063ffffffff821615159182613a07575b50506139fe575b5f806138f6565b600195506139f7565b63ffffffff161090505f806139f0565b613a2f8561393e613a288486611a20565b5182615300565b8a8111613a40575b506001016139c6565b99506001613a37565b613a9b86612b63613a94613a5d8760011c90565b613a8d613a87613a8083613a79613a7382612bc7565b89611a20565b5197611a20565b5192612bc7565b8c611a20565b5190615300565b6002900590565b966139be565b505f84136138f1565b5084156138eb565b80613ac8613ac260019385611c14565b506156ac565b15613ae857613ae0613ad98a61208c565b9989611a20565b525b016138be565b50613ae2565b613af79161527d565b91613887565b508361387b565b60405190613b11826101eb565b5f608083613b1d6118dd565b81528260208201528260408201528260608201520152565b60405190613b44604083610222565b60038252621554d160ea1b6020830152565b929194939094613b64613b04565b956001600160a01b0384169485613bb557505050505050613b83610264565b5f8152613b8e613b35565b60208201526008604082015282525f60208301525f60408301526102536060830160089052565b613bd3613bdd613bc6875f94613636565b5050151560808d01529092565b60ff1660408b0152565b8060208a01521315613c6c579173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee613c1285613c519694610253989661488d565b9303613c5b576040613c4891935b0192613c2d845160ff1690565b90613c39612404610264565b602084015260ff166040830152565b85525160ff1690565b60ff166060840152565b50613c486040602084015193613c20565b63a25758e360e01b5f526001600160a01b03841660045260245ffd5b613c915f610292565b90613c9f6040519283610222565b5f825281601f19613caf5f610292565b01905f5b828110613cbf57505050565b602090604051613cce81610206565b613cd66118dd565b81525f838201525f60408201525f60608201525f60808201525f60a08201525f60c0820152606060e08201525f6101008201525f6101208201525f61014082015282828501015201613cb3565b90613d2d82610292565b613d3a6040519182610222565b8281528092613d4b601f1991610292565b01905f5b828110613d5b57505050565b602090604051613d6a81610206565b613d726118dd565b81525f838201525f60408201525f60608201525f60808201525f60a08201525f60c0820152606060e08201525f6101008201525f6101208201525f61014082015282828501015201613d4f565b92915f613dce91855195615318565b905f5f5b858110613e8b5750613de390613d23565b935f5f915b808310613df6575050505050565b909294613e068386989496611a20565b51915f5b8351811015613e775780613e3c5f613e36613e2760019589611a20565b5151516001600160a01b031690565b8b6153a1565b613e47575b01613e0a565b613e71613e548287611a20565b5197613e5f8161208c565b98613e6a828a611a20565b5287611a20565b50613e41565b509392969150949360010191909392613de8565b93909294613e998587611a20565b51915f5b8351811015613ede57613ebd5f613eb7613e278488611a20565b876153a1565b613eca575b600101613e9d565b94613ed660019161208c565b959050613ec2565b509095909490939150600101613dd2565b9392909181613f0091865196615318565b915f5f5b868110613fae5750613f1590613d23565b945f905f925b818410613f2a57505050505050565b90919395613f3b8487999597611a20565b51925f5b8451811015613f975780613f5c8a613eb7613e276001958a611a20565b613f67575b01613f3f565b613f91613f748288611a20565b5198613f7f8161208c565b99613f8a828b611a20565b5288611a20565b50613f61565b509493979192509594600101929194939094613f1b565b94613fbc8686989396611a20565b51915f5b8351811015613ffb57613fda86613eb7613e278488611a20565b613fe7575b600101613fc0565b95613ff360019161208c565b969050613fdf565b5096909590949150600101613f04565b90815161401781611efd565b905f5b81811061402e5750506105cc9192506153f8565b6001906001600160a01b036140438288611a20565b515151166140518286611a20565b520161401a565b6040519060c082018281106001600160401b038211176101e6576040525f60a0838281528260208201528260408201528260608201528260808201520152565b906140a282610292565b6140af6040519182610222565b82815280926140c0601f1991610292565b01905f5b8281106140d057505050565b6020906140db614058565b828285010152016140c4565b9492948551926140f684614098565b955f5b85811061410b57505050505050909150565b8061411b61137c6001938c611a20565b6001600160a01b0381165f908152602087905260409020541561425d576141b46141458288613636565b50505f905f928c878b8d61415a83828661381a565b6141d1575b50505050906141996141a2926141ab959661418a61417b610273565b6001600160a01b03909b168b52565b60208a015260ff166040890152565b15156060870152565b15156080850152565b151560a0830152565b6141be828b611a20565b526141c9818a611a20565b505b016140f9565b6141ab9750839650829186868b6141a29998966141f1956141999961386c565b5095949a93509150509786159384614254575b5083614248575b5082614223575b50509550919250508c878b8d61415f565b61423d92509060018060a01b03165f5260205260405f2090565b5415158f8a90614212565b5f91935013915f61420b565b1593505f614204565b614277614268610273565b6001600160a01b039092168252565b5f602082015260086040820152600160608201525f60808201525f60a08201526142a1828b611a20565b526142ac818a611a20565b506141cb565b92919082516142c081611efd565b5f915f5b81811061434e575050906142d79161446f565b80516142e281611d37565b915f5b828110614318575050509161010093916143139360608701526143098383836154a7565b60c0870152615566565b910152565b8061433261432b61137c60019486611a20565b888861488d565b61433c8287611a20565b526143478186611a20565b50016142e5565b8061436860606143606001948b611a20565b510151151590565b614373575b016142c4565b6143a4614391614383838b611a20565b51516001600160a01b031690565b611fba61439d8861208c565b9787611a20565b61436d565b94939291925f958451935f955b8587106143c65750505050505050565b90919293949597614462600191612b6388888861440e8f612b368b6143ed6040938d611a20565b51805151909790614408906001600160a01b03168093614bcb565b9561488d565b9261442160606040830151920151151590565b916144356040602083015192015160ff1690565b9460208501519360ff61445a606061445160408a015160ff1690565b98015160ff1690565b971693614b59565b98019594939291906143b6565b919061447a81611efd565b925f5b82811061448957505050565b6001906001600160a01b0361449e8285611a20565b51166144aa8288611a20565b520161447d565b3b156144ba5750565b604051630dd2788360e41b8152602060048201529081906144df906024830190610417565b0390fd5b9081602091031261013b57516105cc81610367565b6020906004926145078161092a565b60038103614568575060405163313ce56760e01b815292839182906001600160a01b03165afa90811561350a575f9161453f575b5090565b6105cc915060203d602011614561575b6145598183610222565b8101906144e3565b503d61454f565b8061457460029261092a565b036145d55760405163313ce56760e01b815292839182906001600160a01b03165afa90811561350a5760129160ff915f916145b6575b5016036125b657600890565b6145cf915060203d602011614561576145598183610222565b5f6145aa565b60405163313ce56760e01b815292839182906001600160a01b03165afa90811561350a575f9161453f575090565b80548015614629575f1901906146198282611c14565b612300576001815f809355015555565b634e487b7160e01b5f52603160045260245ffd5b805491925f925f19810192849291841161209a578361465c8783611c14565b50546001600160a01b03169681810361467b575b505061025390614603565b91935094506146aa6146a26146908786611c14565b50546001600160a01b03169685611c14565b509184611c14565b919091612300578082036146c8575b5050610253600192905f614670565b805482546001600160a01b0319166001600160a01b039190911617825560019081908054845460ff60a01b191660ff60a01b90911617845561471160ff825460a81c168561225f565b01549101555f806146b9565b905f5b825181108061477f575b1561473d576147389061208c565b614720565b61474681612612565b925f5b82811061475557505050565b8061476260019284611a20565b5161476d8288611a20565b526147788187611a20565b5001614749565b5061478a8184611a20565b5151151561472a565b9495929093955f948651936147a7856128b8565b985f985b8a878b106147c0575050505050505050909150565b859697989960a06148748d61487d946148488a9b899a9b6148166148018b9c6147eb8860019e611a20565b518051519095906001600160a01b03169161488d565b8351519092906001600160a01b031690614bcb565b8d8051602082015161482c604084015160ff1690565b91612edc6080614840606087015160ff1690565b950151151590565b6148528383611a20565b5261485d8282611a20565b5061486f8d610240612f118585611a20565b611a20565b51015190612a4d565b99019897969594939291906147ab565b916148b1919261489b6118dd565b509060018060a01b03165f5260205260405f2090565b548015612b72575f19810190811161209a576148cc9161205f565b50604051906148da826101cb565b80546001600160a01b03168252604051600182810180545f9281811c929082169182156149bf575b6020841083146149ab5783865260208601929081156149905750600114614954575b5050506105cc928261493d61494a946002940382610222565b6020860152015460ff1690565b60ff166040830152565b614964919293505f5260205f2090565b915f925b81841061497c57505001828261493d614924565b805484840152602090930192600101614968565b60ff19168352505090151560051b019050828261493d614924565b634e487b7160e01b5f52602260045260245ffd5b92607f1692614902565b600160ff1b811461209a575f0390565b81810292915f8212600160ff1b82141661209a57818405149015171561209a57565b604d811161209a57600a0a90565b634e487b7160e01b5f52601260045260245ffd5b8015614a2f576001600160ff1b030590565b614a09565b8015614a2f5760015f1982141661209a57600160ff1b0590565b8115614a2f57600160ff1b81145f1983141661209a570590565b93949391929060ff166008614a7d838361313a565b10614b4a57614a9491614a8f9161313a565b612bd5565b9060ff82118015614b40575b614b2257614ac5614abf614ad094614aba614aca9461560b565b6149d9565b926149fb565b61560b565b90614a4e565b925f831315614b3a5760ff80614ae89316911661313a565b9160ff83118015614b30575b614b2257614b14614aca91614b0e614ac56105cc966149fb565b906149d9565b91614b0e6305f5e10061560b565b622ee51760e41b5f5260045ffd5b50604c8311614af4565b50505090565b50604c8211614aa0565b63e236476560e01b5f5260045ffd5b949594909390929160ff166008614b70838361313a565b10614b4a57614b8291614a8f9161313a565b9160ff83118015614bc1575b614b2257614abf614aca92614ac592614ad0965f14614bb857614bb3614aba9161560b565b6149c9565b614aba9061560b565b50604c8311614b8e565b90614bd4614058565b508151915f5b838110614bf05763470cbf4760e01b5f5260045ffd5b614bfa8183611a20565b5180516001600160a01b03858116911614614c185750600101614bda565b935050505090565b600782101561048e5752565b9095969493859394999899614c3f6118fc565b9a604084019182519060608601948551614c5890151590565b9960208d019a8d8c51906040019d8e51614c729060ff1690565b60ff1692614c7f97614b59565b8451519096906001600160a01b031691614c97610264565b6001600160a01b039093168352602083015260ff1660408201528b5260208301516001600160a01b03166001600160a01b031660208c01525160408b0152511515151560608a015260808101516101408a015260a08101516101608a015260c08101516101808a015260e08101516101a08a0152610100810151614d1a81610484565b614d28906101c08b01614c20565b610120810151151515156101e08a01526101400151610200890152608088015260a08701525160c08601525160ff1660ff1660e085015260608101511515151561010085015260800151151515156102208401521515610120830152565b9060208282031261013b5781516001600160401b03811161013b576105cc92016131b2565b90614db591614e57565b90158015614e24575b614e0f5760208101805160206040840151911490811591614df9575b50614def576020826105cc9351010190614d86565b50506105cc612211565b8351603f1981019250821161209a57115f614dda565b50604051614e1e602082610222565b5f815290565b506040815110614dbe565b90614e3982610308565b614e466040519182610222565b8281528092611f25601f1991610308565b5f91829160208251920190620186a0fa903d906101408211614e95575b8215614e8c57614e8382614e2f565b915f602084013e565b5f925060609150565b6101409150614e74565b905f92839260208351930191fa913d91808311614ec7575b508215614e8c57614e8382614e2f565b91505f614eb7565b614ed88161562e565b9081614ee2575090565b6301ffc9a760e01b5f908152631858abab60e21b60045260209250906024908290617530fa5f511515601f3d111681614f19575090565b905090565b3d15614f48573d90614f2f82610308565b91614f3d6040519384610222565b82523d5f602084013e565b606090565b9081602091031261013b575190565b5f8060405160208101906362af688760e11b825260048152614f7f602482610222565b5190855afa614f8c614f1e565b90158015615013575b614ff15780602080614fac93518301019101614f4d565b6001600160a01b038111614ff1576001600160a01b03828116911614614fd0575050565b6314aa857960e21b5f526001600160a01b039081166004521660245260445ffd5b6317f5c1bf60e01b5f526001600160a01b03808316600452831660245260445ffd5b50602081511415614f95565b5190610253826103df565b919082604091031261013b57602082519201516105cc816103df565b9061504f61360c565b915460a881901c60ff166150628161092a565b600381036151a5575061507f90610b0b906001600160a01b031681565b60408051638e15f47360e01b81529081600481855afa90815f915f93615172575b506150aa57505050565b901515606085015280158015615162575b61515e578352600460a05f9260405192838092633fabe5a360e21b82525afa5f9181615138575b50615130575b508015604084018190521561512b575042156151255761510742612bc7565b428111156151205750425b602083015260016080830152565b615112565b5f615107565b615107565b90505f6150e8565b61515291925060a03d60a011610c6857610c548183610222565b5092505050905f6150e2565b5050565b506001600160ff1b0381116150bb565b909250615197915060403d60401161519e575b61518f8183610222565b81019061502a565b915f6150a0565b503d615185565b60049160a0906151bf90610b0b906001600160a01b031681565b604051633fabe5a360e21b815293849182905afa91825f915f9461521c575b506151e857505050565b5f8113156152175784526002906151fe8161092a565b036151075782516402540be40090058084526151075750565b505050565b909350615238915060a03d60a011610c6857610c548183610222565b5092505090925f6151de565b91608083015115158115150361527757506060820151151560408201511515810361527757506020809101519101511090565b91505090565b9060ff166008811461453b57600881116152d5576008036008811161209a576152a5906149fb565b6152ae81614a1d565b821380156152c4575b612684576105cc916149d9565b506152ce81614a34565b82126152b7565b60071981019190821161209a57604c821161268457614aca6105cc926149fb565b8115614a2f570490565b81810392915f13801582851316918412161761209a57565b92919083519161532783610292565b916153356040519384610222565b838352615351601f1961534786610292565b01602085016125d6565b82955f5b85811061536457505050505050565b60019061538585856001600160a01b0361537e8588611a20565b5116615a16565b61538f8288611a20565b5261539a8187611a20565b5001615355565b6001600160a01b0382165f908152602091909152604090209091905415612684576001600160a01b031680151591826153e4575b50506153e057600190565b5f90565b6001600160a01b0316141590505f806153d5565b8051801561453b5761540990611efd565b905f915f5b825181101561549b575f5f5b85811061545b575b509060019115615433575b0161540e565b61545661544361137c8387611a20565b611fba61544f8861208c565b9786611a20565b61542d565b61546861137c8286611a20565b615478610b0b61137c8689611a20565b6001600160a01b03909116146154905760010161541a565b506001905080615422565b506105cc92915061446f565b929180516154b481611efd565b905f925f5b82811061552157505050906154cd9161446f565b928351916154da83611d37565b945f5b8481106154eb575050505050565b806155056154fe61137c60019486611a20565b858761488d565b61550f828a611a20565b5261551a8189611a20565b50016154dd565b80615533608061436060019486611a20565b61553e575b016154b9565b61556161554e6143838386611a20565b611fba61555a8961208c565b9888611a20565b615538565b9291805161557381611efd565b905f925f5b8281106155d9575050509061558c9161446f565b9283519161559983611d37565b945f5b8481106155aa575050505050565b806155bd6154fe61137c60019486611a20565b6155c7828a611a20565b526155d28189611a20565b500161559c565b806155eb60a061436060019486611a20565b6155f6575b01615578565b61560661554e6143838386611a20565b6155f0565b6001600160ff1b03811161561c5790565b63123baf0360e11b5f5260045260245ffd5b6301ffc9a760e01b5f526301ffc9a760e01b60045260205f60248184617530fa5f511515601f3d1116816156a4575b501561569f576301ffc9a760e01b5f9081526001600160e01b03196004526020916024908290617530fa5f511515601f3d111681615699575090565b90501590565b505f90565b90505f61565d565b6156b581615046565b906080820151158015615701575b6156f9576020820151420342811161209a57600182015411156156f95760ff6156f39251915460a01c169061527d565b90600190565b50505f905f90565b50606082015115156156c3565b801561209a575f190190565b91906001905b80821061572d5750509050565b6157378285611a20565b5192825b80151580615794575b15615778575f1981019080821161209a576157626157739288611a20565b5161576d8289611a20565b5261570e565b61573b565b936157896001939492969586611a20565b520190929192615720565b505f19810181811161209a576157ab869188611a20565b5113615744565b906157bf61271083615b34565b9190928315615834578382111561582757612710829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b6011600383150218615b47565b50906105cc92506152f6565b91909160608184031261013b576040519061585a826101cb565b81938151615867816102a9565b83526020820151916001600160401b03831161013b5761588d60409392849383016131b2565b60208501520151916103db83610367565b519061025382610402565b60208183031261013b578051906001600160401b03821161013b570181601f8201121561013b578051906158dc82610292565b926158ea6040519485610222565b82845260208085019360051b8301019181831161013b5760208101935b83851061591657505050505090565b84516001600160401b03811161013b578201610160818503601f19011261013b5761593f610282565b9160208201516001600160401b03811161013b5785602061596292850101615840565b8352615970604083016133fe565b60208401526060820151604084015261598b6080830161501f565b606084015260a0820151608084015260c082015160a084015260e082015160c0840152610100820151926001600160401b03841161013b57610160836159d88860208098819801016131b2565b60e08401526159ea610120820161589e565b6101008401526159fd610140820161501f565b6101208401520151610140820152815201940193615907565b91615a625f5a92615a30615a2a8560061c90565b85612be4565b60405163dcc688a960e01b81526001600160a01b03968716600482015291909516602482015291829081906044820190565b03816001600160a01b03881687fa5f9181615ae0575b50615ad95750615a89905a90612be4565b91615a9381615b57565b615aa6615aa08360031c90565b83612be4565b831015615ab8575050506105cc613c88565b63b790d12360e01b5f526001600160a01b031660045260245260445260645ffd5b9250505090565b615afd9192503d805f833e615af58183610222565b8101906158a9565b905f615a78565b6301ffc9a760e01b5f9081526312e741a760e21b6004526020916024908290617530fa905f511515601f3d111690565b905f198183099102908180821091030391565b634e487b715f526020526024601cfd5b9060843d03615be957615b6a6084610308565b91615b786040519384610222565b60848352615b866084610308565b602084019290601f190136843760845f843e63dcf232d4835160e01c03615bc557615bb08261562e565b80615bcb575b15615bc5575060246084930152fd5b92505050565b50615bd582615b04565b81615be1575b50615bb6565b90505f615bdb565b905056fea164736f6c6343000822000a
Deployed Bytecode
0x6080604052307f000000000000000000000000abcc2526a6ebcfe637eb2b660410adff60ecfb73146004361015610034575f80fd5b5f3560e01c9081630793b0aa146101b25781630a91eda2146101ad5781631355d380146101a857816329a07aa7146101a357816348e9ff741461019e578163524b3ba814610199578163573c424d14610194578163596ef0481461018f5781635f47eaa91461018657816361ae71061461017d5781636a6f420b146101785781636bee1c0e146101735781636f067e9b1461016a578163ad3227ef14610161578163be14b7881461015c578163cab33e7b14610157578163ceaf249c14610152578163da5990cd1461014d578163eb4abdd814610144578163ebfd71661461013f578163f5eb38b714610135575063fe4da07014610130575f80fd5b611898565b15611886575b5f80fd5b6117ee565b156117cb575f80fd5b61177c565b611693565b61164b565b61157a565b1561147e575f80fd5b1561143d575f80fd5b611426565b6112ab565b1561110c575f80fd5b156110a5575f80fd5b611049565b61101d565b610f7c565b610ef6565b610e75565b6109f2565b6108ee565b6106bb565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b038211176101e657604052565b6101b7565b60a081019081106001600160401b038211176101e657604052565b61016081019081106001600160401b038211176101e657604052565b90601f801991011681019081106001600160401b038211176101e657604052565b6040519061025361026083610222565b565b60405190610253608083610222565b60405190610253606083610222565b6040519061025360c083610222565b6040519061025361016083610222565b6001600160401b0381116101e65760051b60200190565b6001600160a01b0381160361013b57565b60243590610253826102a9565b60a43590610253826102a9565b60e43590610253826102a9565b6101043590610253826102a9565b6101243590610253826102a9565b3590610253826102a9565b6001600160401b0381116101e657601f01601f191660200190565b81601f8201121561013b5760208135910161033d82610308565b9261034b6040519485610222565b8284528282011161013b57815f92602092838601378301015290565b60ff81160361013b57565b359061025382610367565b91909160608184031261013b5760405190610397826101cb565b819381356103a4816102a9565b83526020820135916001600160401b03831161013b576103ca6040939284938301610323565b60208501520135916103db83610367565b0152565b8015150361013b57565b6101443590610253826103df565b3590610253826103df565b6007111561013b57565b359061025382610402565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060018060a01b038251168152604060ff816104666020860151606060208701526060860190610417565b9401511691015290565b634e487b7160e01b5f52602160045260245ffd5b6007111561048e57565b610470565b90600782101561048e5752565b906105cc90610240806105806105066104c48751610260875261026087019061043b565b6020888101516001600160a01b031690870152604088015160408701526104f46060890151606088019015159052565b6080880151868203608088015261043b565b60a087015160a086015260c087015160c086015261052e60e088015160e087019060ff169052565b61010087810151151590860152610120878101511515908601526101408701516101408601526101608701516101608601526101808701516101808601526101a08701518582036101a0870152610417565b946105956101c08201516101c0860190610493565b6101e0818101511515908501526102008101516102008501526105c361022082015161022086019015159052565b01511515910152565b90565b9080602083519182815201916020808360051b8301019401925f915b8383106105fa57505050505090565b9091929394602080610618600193601f198682030187528951610417565b970193019301919392906105eb565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061065957505050505090565b90919293946020806106ac600193603f19868203018752895190604061069b61068b84516060855260608501906104a0565b8685015184820388860152610417565b9201519060408184039101526105cf565b9701930193019193929061064a565b604036600319011261013b576004356001600160401b03811161013b573660238201121561013b5780600401356106f181610292565b916106ff6040519384610222565b8183526024602084019260051b8201019036821161013b5760248101925b82841061074957610745610739866107336102ba565b90611a45565b60405191829182610627565b0390f35b83356001600160401b03811161013b57820190610260602319833603011261013b57610773610243565b9060248301356001600160401b03811161013b57610797906024369186010161037d565b82526107a5604484016102fd565b6020830152606483013560408301526107c0608484016103f7565b606083015260a48301356001600160401b03811161013b576107e8906024369186010161037d565b608083015260c483013560a083015260e483013560c083015261080e6101048401610372565b60e083015261082061012484016103f7565b61010083015261083361014484016103f7565b6101208301526101648301356101408301526101848301356101608301526101a48301356101808301526101c4830135916001600160401b03831161013b576108dd61026460209561088c879660243691840101610323565b6101a085015261089f6101e4820161040c565b6101c08501526108b261020482016103f7565b6101e08501526102248101356102008501526108d161024482016103f7565b610220850152016103f7565b61024082015281520193019261071d565b606036600319011261013b57600435610906816102a9565b602435610912816102a9565b60443590600482101561013b576109289261341e565b005b6004111561048e57565b90600482101561048e5752565b81516001600160a01b031681526101808101929161016090819061096d60208201516020860190610934565b6040810151604085015261098b6060820151606086019060ff169052565b6080810151608085015260a081015160a08501526109b260c082015160c086019015159052565b60e0818101511515908501526101008101516101008501526109df61012082015161012086019015159052565b6101408101516101408501520151910152565b60c036600319011261013b57610745600435606435604435602435610a16836102a9565b610a216084356103df565b610a2c60a4356103df565b610a34611b84565b936004610a73610a448684613636565b929593949196908a5f1982145f14610c78576001600160a01b03165f9081526020929092525060408120611c14565b508054906003908b90600190610ac5896060610aa86001600160a01b0389166001600160a01b03811688529860a81c60ff1690565b95610ab68760208301611c2d565b8b6040820152019060ff169052565b01549360808d019485528c898a15610c6f575b60c0610ae692019015159052565b6101008d0152610af58161092a565b03610bf057604090610b17906001600160a01b03165b6001600160a01b031690565b815163c78cf9cb60e01b815293849182905afa91825f915f94610bbd575b50610baf575b5050505b608435151560e088015260a43580610b9e575b610b63575b60405180898982610941565b610b8795610b74956084359561386c565b5090151561012088015294909350915050565b6101408301526101608201525f8080808080610b57565b50610baa86868661381a565b610b52565b60a08a0152525f8080610b3b565b909350610be2915060403d604011610be9575b610bda8183610222565b810190611c8d565b925f610b35565b503d610bd0565b60a09150610c06906001600160a01b0316610b0b565b604051633fabe5a360e21b815292839182905afa5f9181610c39575b50610c2e575b50610b3f565b60a08801525f610c28565b610c5c91925060a03d60a011610c68575b610c548183610222565b810190611c50565b5092505050905f610c22565b503d610c4a565b50608435610ad8565b6001600160a01b03165f9081526020929092526040909120611c14565b9080601f8301121561013b578135610cac81610292565b92610cba6040519485610222565b81845260208085019260051b82010192831161013b57602001905b828210610ce25750505090565b602080918335610cf1816102a9565b815201910190610cd5565b61016060031982011261013b57600435916024359160443591606435916084359160a4356001600160401b03811161013b5782610d3b91600401610c95565b9160c4359160e435610d4c816102a9565b91610d586101046102fd565b91610d646101246103f7565b9161014435906001600160401b03821161013b576105cc91600401610323565b9080602083519182815201916020808360051b8301019401925f915b838310610daf57505050505090565b9091929394602080610dcd600193601f19868203018752895161043b565b97019301930191939290610da0565b6105cc9181518152610100610e57610e2d610e086020860151610120602087015261012086019061043b565b6040868101516001600160401b03169086015260608601518582036060870152610d84565b60808581015115159085015260a08581015115159085015260c085015184820360c0860152610d84565b60e08085015115159084015292015190610100818403910152610d84565b610745610e95610e8436610cfc565b999098919792969350949394611d86565b604051918291602083526020830190610ddc565b90602080835192838152019201905f5b818110610ec65750505090565b82516001600160a01b0316845260209384019390920191600101610eb9565b9060206105cc928181520190610ea9565b604036600319011261013b576004356001600160401b03811161013b57610f21903690600401610c95565b6024356001600160401b03811161013b573660238201121561013b5780600401356001600160401b03811161013b573660248260051b8401011161013b57610745926024610f70930190611f49565b60405191829182610ee5565b60a036600319011261013b57610745610fab608435606435604435602435600435610fa6856103df565b61209f565b610fcc60409492945194859415158552606060208601526060850190610ea9565b908382036040850152610ea9565b60a060031982011261013b57600435906001600160401b03821161013b5761100491600401610c95565b906024359060443590606435906084356105cc816102a9565b61074561103561102c36610fda565b939092506121b7565b604051918291602083526020830190610ea9565b60e036600319011261013b57602061109b60043560243560443561106c816102a9565b6064356084359161107c83610367565b60a43593611089856103df565b60c43595611096876103df565b6121dd565b6040519015158152f35b60c036600319011261013b576004356024356044356110c3816102a9565b6064356110cf816102a9565b6084359160a43593600485101561013b576109289561231f565b606090600319011261013b5760043590602435611105816102a9565b9060443590565b611135611118366110e9565b6001600160a01b0382165f90815260209390935260409092209092565b80548210156111d157602061116b837fe572f68200f6bc20ad255832477966d4e6fb6a7adc1c3a50bf9e2dd2b4857ba09361463d565b611189575b50506040519384526001600160a01b03908116941692a3005b60408051918252602082018790526001600160a01b03928316928816917fbcb5a740bee4eee1d9889306d3cbe3af87ef933acf7b66b8b1428051c683bc989190a35f80611170565b506359b171b960e11b5f9081526001600160a01b03909216600452602452604490fd5b604081016040825282518091526060820190602060608260051b8501019401915f905b82821061128057505050506020818303910152815180825260208201916020808360051b8301019401925f915b83831061125357505050505090565b9091929394602080611271600193601f1986820301875289516105cf565b97019301930191939290611244565b9091929460208061129d600193605f198982030186528951610417565b970192019201909291611217565b604036600319011261013b576004356001600160401b03811161013b576112d6903690600401610c95565b602435906112e3826102a9565b80516112ee81612612565b916112f882612612565b936113436040519263e567e86960e01b60208501526004845261131c602485610222565b611351611327612211565b60405163867430a560e01b602082015293849160248301611a34565b03601f198101845283610222565b5f5b85811061136957604051806107458a8a836111f4565b806113d061138961137c60019486611a20565b516001600160a01b031690565b6113948882896130d3565b61139e848c611a20565b526113a9838b611a20565b506113b48682613290565b6113be848d611a20565b526113c9838c611a20565b5086613147565b805115611420576113e1828b611a20565b515115611402576113fc906113f6838c611a20565b51613396565b01611353565b61140b9061471d565b611415828b611a20565b52611420818a611a20565b506113fc565b602061109b61143436610fda565b93909250612647565b60a036600319011261013b57600435602435611458816102a9565b604435611464816102a9565b6064359060843592600484101561013b5761092894612691565b61148a611118366110e9565b8054808310156115575760011461153b576114ee6114c9837f2bcc9edbb8384ae7819f8ee368a27c914ff42c8c622057d7d4ad707a55dd72bc9361463d565b6114f3575b50506040519384526001600160a01b039081169416929081906020820190565b0390a3005b60408051918252602082018790526001600160a01b03928316928816917fe849e3b4490715fccf568d783ae86f296aba0a97365f3e014811b451a647b9009190a35f806114ce565b62de56a760e11b5f526001600160a01b03831660045260245b5ffd5b6359b171b960e11b5f9081526001600160a01b0385166004526024849052604490fd5b60a036600319011261013b5760e06115c26004356064356024356044356115a0836102a9565b6115b683608435956115b1876103df565b613636565b5050949192909361386c565b949360409391935196875260208701526040860152151560608501526080840152151560a0830152151560c0820152f35b9080602083519182815201916020808360051b8301019401925f915b83831061161e57505050505090565b909192939460208061163c600193601f1986820301875289516104a0565b9701930193019193929061160f565b61168561074561166e61165d36610cfc565b999098919792969350949394612907565b604092919251938493604085526040850190610ddc565b9083820360208501526115f3565b60e036600319011261013b576024356004356044356064356001600160401b03811161013b576116c7903690600401610c95565b608435906001600160401b03821161013b573660238301121561013b578160040135916116f383610292565b926117016040519485610222565b8084526024602085019160051b8301019136831161013b57602401905b82821061176c575050506117306102c7565b9260c435956001600160401b03871161013b5761175461175a973690600401610323565b95612a68565b60408051928352901515602083015290f35b813581526020918201910161171e565b604036600319011261013b57602061109b600435611799816102a9565b60243590612bf1565b606090600319011261013b57600435906024356117be816102a9565b906044356105cc816102a9565b6109286117d7366117a2565b91612ca6565b9060206105cc9281815201906115f3565b61018036600319011261013b5760243560443560043560643560843560a4356001600160401b03811161013b57611829903690600401610c95565b6118316102d4565b6118396102e1565b916118426102ef565b9361184b6103e9565b9561016435986001600160401b038a1161013b576107459a61187461187a9b3690600401610323565b99612dba565b604051918291826117dd565b610928611892366117a2565b91612fa4565b604036600319011261013b5760a060ff6118ba6024356004356115b1826102a9565b939490926040519586521660208501521515604084015260608301526080820152f35b604051906118ea826101cb565b5f604083828152606060208201520152565b611904610243565b9061190d6118dd565b82525f60208301525f60408301525f60608301526119296118dd565b60808301525f60a08301525f60c08301525f60e08301525f6101008301525f6101208301525f6101408301525f6101608301525f61018083015260606101a08301525f6101c08301525f6101e08301525f6102008301525f6102208301525f610240830152565b9061199a82610292565b6119a76040519182610222565b82815280926119b8601f1991610292565b01905f5b8281106119c857505050565b6020906040516119d7816101cb565b6119df6118fc565b815260608382015260606040820152828285010152016119bc565b634e487b7160e01b5f52603260045260245ffd5b805115611a1b5760200190565b6119fa565b8051821015611a1b5760209160051b010190565b9060206105cc928181520190610417565b919091805190611a5482611990565b936040519163e567e86960e01b602084015260048352611a75602484610222565b5f916060906060945f5b878110611a90575050505050505050565b89611aaf6020611aa08489611a20565b5101516001600160a01b031690565b82158015611b6e575b611b48575b886040611b3a858095611b2f611343611b4297611b2a8f8f878260019f92611aeb611b0c946101a096611a20565b51611af6848c611a20565b51526020611b04848c611a20565b510152611a20565b510151885163867430a560e01b602082015293849160248301611a34565b613290565b84611b048484611a20565b510151613396565b01611a7f565b91975095509250611b5a8184846130d3565b92611b658184613147565b96909586611abd565b506001600160a01b038181169089161415611ab8565b6040519061018082018281106001600160401b038211176101e6576040525f610160838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201520152565b9060018060a01b03165f5260205260405f2090565b805415611a1b575f5260205f20905f90565b8054821015611a1b575f5260205f209060011b01905f90565b600482101561048e5752565b519069ffffffffffffffffffff8216820361013b57565b908160a091031261013b57611c6481611c39565b916020820151916040810151916105cc608060608401519301611c39565b6040513d5f823e3d90fd5b919082604091031261013b576020825192015190565b6040519061012082018281106001600160401b038211176101e6576040526060610100835f8152611cd26118dd565b60208201525f604082015282808201525f60808201525f60a08201528260c08201525f60e08201520152565b60405190611d0d602083610222565b5f80835282815b828110611d2057505050565b602090611d2b6118dd565b82828501015201611d14565b90611d4182610292565b611d4e6040519182610222565b8281528092611d5f601f1991610292565b01905f5b828110611d6f57505050565b602090611d7a6118dd565b82828501015201611d63565b92959094999799611db1611d98611ca3565b426001600160401b031660408201529a89878a88613b56565b97885160208c015260808901611dd48c60a0611dcd8451151590565b1515910152565b8c6001600160a01b038316611e8d57505050611df45f5b151560e08c0152565b845415611e7b579086611e0692613dbf565b89151560808a015293845115611e475791611e4397989991611e3193611e2b8761400b565b926140e7565b92611e3e8483838b6142b2565b6143a9565b8252565b505050505050509150611e58611cfe565b6060820152611e65611cfe565b60c0820152611e72611cfe565b61010082015290565b50505050505050509150611e58611cfe565b611df492611ebb928c611eb3611eac6040602084015193015160ff1690565b9251151590565b92898d6121dd565b611deb565b60405190611ecf602083610222565b5f808352366020840137565b60408051909190611eec8382610222565b6001815291601f1901366020840137565b90611f0782610292565b611f146040519182610222565b8281528092611f25601f1991610292565b0190602036910137565b9190811015611a1b5760051b0190565b356105cc816102a9565b90929192831561205057611f5c84611efd565b935f5b818110611f6c5750505050565b611f7f611f7a828486611f2f565b611f3f565b6001600160a01b0381165f5b838110612016575085515f91825b828110611fea575b50505015611fcf5790611fc9600192611fba838a611a20565b6001600160a01b039091169052565b01611f5f565b63fc6da03f60e01b5f526001600160a01b031660045260245ffd5b81611ffb610b0b61137c848d611a20565b1461200857600101611f99565b5050505060015f8080611fa1565b81612027610b0b61137c848d611a20565b1461203457600101611f8b565b633b28a62160e21b5f526001600160a01b03831660045260245ffd5b639e5d018960e01b5f5260045ffd5b8054821015611a1b575f52600360205f20910201905f90565b634e487b7160e01b5f52601160045260245ffd5b5f19811461209a5760010190565b612078565b949291825480156121a0576120b381611efd565b916120bd82611efd565b975f945f965f5b8581106120eb575050505050506120e592916120df9161446f565b9461446f565b91929190565b8b6120f6828461205f565b50546001600160a01b03168c8a828b61210f828b613636565b505094859492939194612183575b505061212a908c8b61381a565b61213d575b5050505050506001016120c4565b9061214c939291858c8b61386c565b50509350505050612161575b8c81808061212f565b6121798b612173600195949d9161208c565b9c611a20565b5290508b5f612158565b9f61218d9061208c565b9f61219791611a20565b52848d8f61211d565b5050505091506121ae611ec0565b916120e5611ec0565b91929092156121d2576105cc926121cd92613dbf565b61400b565b5050506105cc611ec0565b9594939291906121ee82828961381a565b15612206576121fc9661386c565b5050935050505090565b505050505050505f90565b60405190612220602083610222565b5f8252565b60405190612234604083610222565b60098252681c1c9a58d95199595960ba1b6020830152565b634e487b7160e01b5f525f60045260245ffd5b90600481101561048e57815460ff60a81b191660a89190911b60ff60a81b16179055565b8054680100000000000000008110156101e6576122a591600182018155611c14565b919091612300578051825460208301516001600160a01b039092166001600160a81b03199091161760a09190911b60ff60a01b161782556040810151600481101561048e576001916122f96060928561225f565b0151910155565b61224c565b6103db604092959493606083019683526020830190610934565b6001600160a01b038416959390861580156125c5575b6125b65761234a612344612225565b836144b1565b85156125b65761235a85836144f8565b90600860ff83160361258e576001600160a01b0385165f90815260209190915260409020908154935f5b85811061246f57506123b86123ae8763ffffffff939060018060a01b03165f5260205260405f2090565b5463ffffffff1690565b1615612453578285949261241d612435936123f98a61244e987f66f41fd52fd5d57c4568faf2fe371b57e5f4b9a39fdde7ed4169209083a102629c9b61341e565b612413612404610255565b6001600160a01b039095168552565b60ff166020840152565b61242a8760408401611c2d565b886060830152612283565b6040516001600160a01b03909316959293849384612305565b0390a3565b63ddddd1a360e01b5f526001600160a01b03851660045260245ffd5b94919089612495610b0b6124878988999d9c98611c14565b50546001600160a01b031690565b0361257d575050506124b56124aa8484611c14565b505460a81c60ff1690565b6124be8261092a565b6124c78161092a565b0361255b5760016124d88383611c14565b5001549484861461253a57509260016125148294937ffe76d0927fc90eeeb2972087840c45a6613dc5c9eeafd4b8042442cff49e6a8b96611c14565b5001556040805194855260208501929092526001600160a01b031692908190810161244e565b6357cc819b60e01b5f526001600160a01b038085166004521660245260445ffd5b630e5906cf60e01b5f526001600160a01b03808416600452851660245260445ffd5b909194600190989493979801612384565b6387d3284f60e01b5f526001600160a01b038516600452600860245260ff821660445260645ffd5b636077d21b60e01b5f5260045ffd5b506001600160a01b03841615612335565b5f5b8281106125e457505050565b6060828201526020016125d8565b60405190612601602083610222565b5f80835261025390602084016125d6565b9061025361261f83610292565b61262c6040519182610222565b8381526020819461263f601f1991610292565b0191016125d6565b92911561268a5761265792613dbf565b5f5b815181101561268457604061266e8284611a20565b51015161267d57600101612659565b5050600190565b50505f90565b5050505f90565b939092919282156125b65762093a8083101580612874575b612860576001600160a01b038416948515801561284f575b6125b657816126db91611bed6126d5612225565b886144b1565b8054906126e884876144f8565b82151580612834575b6127f0575f5b83811061273957508661244e939261241d612435936123f9897ff5d56f5f022e91df0e1d6ac8a215cc8178430f9319b2403f6484ae50583264ad9b9c8a61341e565b93949192908861274f610b0b6124878888611c14565b036127e35750506127636124aa8484611c14565b61276c8261092a565b6127758161092a565b0361255b5760016127868383611c14565b500154948486146127c257509260016125148294937f2080f27056457a1afcd666523e6c71c2a4080bc4b23289ac23261604f0b72d9a96611c14565b630b123e5d60e31b5f526001600160a01b038085166004521660245260445ffd5b90929194936001016126f7565b8361280b61280061155494611c02565b505460a01c60ff1690565b63039ce40560e61b5f526001600160a01b0390911660045260ff90811660245216604452606490565b5061284161280083611c02565b60ff808316911614156126f1565b506001600160a01b038216156126c1565b6364d8435760e01b5f52600483905260245ffd5b505f198314156126a9565b6040519061288e602083610222565b5f80835282815b8281106128a157505050565b6020906128ac6118fc565b82828501015201612895565b906128c282610292565b6128cf6040519182610222565b82815280926128e0601f1991610292565b01905f5b8281106128f057505050565b6020906128fb6118fc565b828285010152016128e4565b92959460e09561293b9b9a959899929399612920611ca3565b426001600160401b031660408201529c8d97828c8c8a613b56565b96879182516020830152858d608085016129616129588251151590565b151560a0870152565b6001600160a01b038416612a19575050505061298591505f9889915b019015159052565b885415612a07578761299692613dbf565b81151560808c0152928351156129ce576129c9986129b793611e2b8661400b565b906129c48287878c6142b2565b614793565b835290565b5050505050505050506129df611cfe565b60608301526129ec611cfe565b60c08301526129f9611cfe565b6101008301526105cc61287f565b505050505050505050506129df611cfe565b85612a4594612a3e612a37604060206129859b015194015160ff1690565b9351151590565b938c6121dd565b98899161297d565b9190915f838201938412911290801582169115161761209a57565b969490919293958451875103612bb8576001600160a01b038216151580612b99575b612b7257612a9e9184848a99979899613b56565b93612aac6080860151151590565b945f915f9560208301976060604085019401945b8351891015612b8b57612ad38984611a20565b518015612b8157612ae761137c8b87611a20565b6001600160a01b0381165f90815260208a9052604090209092905415612b7257612b63612b538f898f95612b69968f938f8f95612b448c612b3e604060019f612b3690612b5b9660ff9861488d565b015160ff1690565b94613636565b50505098909451965160ff1690565b965160ff1690565b961692614a68565b90612a4d565b985b0197612ac0565b63470cbf4760e01b5f5260045ffd5b5097600190612b6b565b9a5098975050505050505050565b506001600160a01b0382165f9081526020849052604090205415612a8a565b63512509d360e11b5f5260045ffd5b5f1981019190821161209a57565b60071981019190821161209a57565b9190820391821161209a57565b5f9291906001600160a01b03168015612c9f5760a060049160405192838092633fabe5a360e21b82525afa90815f915f93612c77575b50612c355750600193505050565b15612c4257506001925050565b80612c4f57506001925050565b42811115612c6e5750612c63425b42612be4565b116102535760019150565b612c6390612c5d565b909250612c93915060a03d60a011610c6857610c548183610222565b5050915090915f612c27565b505f925050565b6001600160a01b0382165f908152602091909152604081208054915b828110612ceb5763286f45f560e21b5f526001600160a01b03808516600452851660245260445ffd5b612cf86124878284611c14565b6001600160a01b0386811691168114612d145750600101612cc2565b9450927fe572f68200f6bc20ad255832477966d4e6fb6a7adc1c3a50bf9e2dd2b4857ba09250612d478461244e9361463d565b90919250612d6c575b50506040519384526001600160a01b0316929081906020820190565b60408051918252602082018790526001600160a01b03928316928416917fbcb5a740bee4eee1d9889306d3cbe3af87ef933acf7b66b8b1428051c683bc9891819081015b0390a35f80612d50565b958499949895849c9b939894929460018060a01b038116155f14612f4f575098828887612def8a958998978e9f9e9d9e613dbf565b9c612df98e61400b565b90612e0d98612e07946140e7565b99613b56565b936001600160a01b038416612f2257505050505f92935b845194612e30866128b8565b975f926020850190604086019260608701948c60808901975b8c8110612e5f5750505050505050505050505050565b612f1a8c610240612f11848f968f8f8f998f928f928f9c8f958f9560019f612ed5612ecd612ec1612edc93612ebb8f9d612e9f612ef69f612eb39f611a20565b51805151909e6001600160a01b0390911690565b92839161488d565b9a614bcb565b97519351945160ff1690565b945160ff1690565b9451151590565b946020612eed604089015160ff1690565b97015197614c2c565b612f008383611a20565b52612f0b8282611a20565b50611a20565b51019015159052565b018d90612e49565b60208501516040860151612f48959060ff1692612f426080890151151590565b946121dd565b9293612e24565b995090612f60928a92999899613eef565b96875115612f91579084898c612e0787612e0d968b898e612f8c612f82611edb565b94611fba86611a0e565b6140e7565b50505050505050505090506105cc61287f565b6001600160a01b0382165f908152602091909152604081208054915b828110612fe957635ff200f560e01b5f526001600160a01b03808516600452851660245260445ffd5b612ff66124878284611c14565b6001600160a01b03868116911681146130125750600101612fc0565b945092916001146130b8577f2bcc9edbb8384ae7819f8ee368a27c914ff42c8c622057d7d4ad707a55dd72bc9161304c8461244e9361463d565b909192506130705750506040519384526001600160a01b0316929081906020820190565b60408051918252602082018790526001600160a01b03928316928416917fe849e3b4490715fccf568d783ae86f296aba0a97365f3e014811b451a647b9009181908101612db0565b62de56a760e11b5f526001600160a01b03821660045260245ffd5b9091906001600160a01b0381166130ef575b506105cc91614dab565b60405163180d00ff60e01b60208201526001600160a01b038416602480830191909152815261312891613123604483610222565b614dab565b91825161313557916130e5565b505090565b9190820180921161209a57565b906001600160a01b038216156131915760405163fcaed79960e01b60208201526001600160a01b0390911660248083019190915281526105cc9161318c604483610222565b61332a565b50506040516131a1602082610222565b5f8082526105cc90602083016125d6565b81601f8201121561013b576020815191016131cc82610308565b926131da6040519485610222565b8284528282011161013b57815f926020928386015e8301015290565b60208183031261013b578051906001600160401b03821161013b57019080601f8301121561013b57815161322981610292565b926132376040519485610222565b81845260208085019260051b8201019183831161013b5760208201905b83821061326357505050505090565b81516001600160401b03811161013b57602091613285878480948801016131b2565b815201910190613254565b620f42406132a19261100092614e9f565b9015801561331f575b613316575f6132d49160405180938192632fcb619b60e11b83526020600484018181520190610417565b038130620f4240fa5f91816132f2575b506105cc57506105cc6125f2565b61330f9192503d805f833e6133078183610222565b8101906131f6565b905f6132e4565b506105cc6125f2565b5060408151106132aa565b620186a061333b9261038092614e9f565b9015801561338b575b613316575f61336e9160405180938192632fcb619b60e11b83526020600484018181520190610417565b038130620186a0fa5f91816132f257506105cc57506105cc6125f2565b506040815110613344565b90815181518082105f146133f65750915b5f5b8381106133b65750505050565b806133c360019285611a20565b51516133d0575b016133a9565b6133da8185611a20565b516133e58285611a20565b526133f08184611a20565b506133ca565b9050916133a7565b5190610253826102a9565b9081602091031261013b57516105cc816102a9565b92916001600160a01b03821690811580156135fb575b6125b657613449613443612225565b846144b1565b6134528161092a565b6003810361350f575061346b61346783614ecf565b1590565b6125b65760206004916040519283809263e768d0ff60e01b82525afa90811561350a575f916134db575b506001600160a01b03848116908216036134b457506102539192614f5c565b631e0f351360e31b5f526001600160a01b038085166004529182166024521660445260645ffd5b6134fd915060203d602011613503575b6134f58183610222565b810190613409565b5f613495565b503d6134eb565b611c82565b9092935061351c8161092a565b80159081156135e6575b81156135d2575b50156135c35761353c90614ecf565b6125b65760a060049160405192838092633fabe5a360e21b82525afa801561350a575f5f925f9261359a575b505f12801590613592575b6125b6574210908115613588575b506125b657565b905042105f613581565b508015613573565b90505f92506135b8915060a03d60a011610c6857610c548183610222565b509093909250613568565b6384014a8160e01b5f5260045ffd5b600291506135df8161092a565b145f61352d565b90506135f18161092a565b6001811490613526565b506001600160a01b03851615613434565b60405190613619826101eb565b5f6080838281528260208201528260408201528260608201520152565b6001600160a01b0382165f90815260209190915260408120909291909283549182156137ff575061366561360c565b935f19925f5b8181106136c45750505f1983146136a6575083519261369e6134676080613696604089015160ff1690565b970151151590565b939493929190565b90506136b89293506128009150611c02565b5f916001905f19908490565b6136ce8184611c14565b50936136d985615046565b6136e96134676080830151151590565b6137f4578860208201966136fe885142612be4565b9361370f6134676060860151151590565b94856137e6575b85156137b357506137269061208c565b975b5f198a1480156137a2575b613747575b50505050506001905b0161366b565b6137969599509261377d613784936040613775819561378d98865185525160208501525460ff9060a01c1690565b60ff16910152565b0151151590565b151560608a0152565b15156080880152565b8360015f888180613738565b506137ae858585615244565b613733565b604085015191999115159081156137d8575b5015613728575050505050600190613741565b62093a80915010155f6137c5565b600183015481109550613716565b509350600190613741565b638a7a791d60e01b5f526001600160a01b031660045260245ffd5b6001600160a01b0383165f908152602091909152604090205415801592919061384257505090565b6001600160a01b039091165f9081526020919091526040902063ffffffff91505460201c16151590565b96949593959290928015613afd575b958415613aee5750505f915b82965f945f945f945f946138ac825f969060018060a01b03165f5260205260405f2090565b918254916138b983611efd565b925f945f5b828110613ab2575050506001600160a01b039091165f908152602091909152604090209180151580613aaa575b80613aa1575b61398a575b50505460201c63ffffffff169163ffffffff831615159081613981575b5080613978575b613928575b50509091929394565b61394a6139549161393e6305f5e1008092615300565b5f811261396a576157b2565b9163ffffffff1690565b10613961575b5f8061391f565b6001925061395a565b613973906149c9565b6157b2565b505f811361391a565b9050155f613913565b9450965096509250819261399e838761571a565b600183811603613a49576139bb6139b58460011c90565b87611a20565b51965b878213935f975f5b828110613a1757505050866139df825463ffffffff1690565b9063ffffffff821615159182613a07575b50506139fe575b5f806138f6565b600195506139f7565b63ffffffff161090505f806139f0565b613a2f8561393e613a288486611a20565b5182615300565b8a8111613a40575b506001016139c6565b99506001613a37565b613a9b86612b63613a94613a5d8760011c90565b613a8d613a87613a8083613a79613a7382612bc7565b89611a20565b5197611a20565b5192612bc7565b8c611a20565b5190615300565b6002900590565b966139be565b505f84136138f1565b5084156138eb565b80613ac8613ac260019385611c14565b506156ac565b15613ae857613ae0613ad98a61208c565b9989611a20565b525b016138be565b50613ae2565b613af79161527d565b91613887565b508361387b565b60405190613b11826101eb565b5f608083613b1d6118dd565b81528260208201528260408201528260608201520152565b60405190613b44604083610222565b60038252621554d160ea1b6020830152565b929194939094613b64613b04565b956001600160a01b0384169485613bb557505050505050613b83610264565b5f8152613b8e613b35565b60208201526008604082015282525f60208301525f60408301526102536060830160089052565b613bd3613bdd613bc6875f94613636565b5050151560808d01529092565b60ff1660408b0152565b8060208a01521315613c6c579173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee613c1285613c519694610253989661488d565b9303613c5b576040613c4891935b0192613c2d845160ff1690565b90613c39612404610264565b602084015260ff166040830152565b85525160ff1690565b60ff166060840152565b50613c486040602084015193613c20565b63a25758e360e01b5f526001600160a01b03841660045260245ffd5b613c915f610292565b90613c9f6040519283610222565b5f825281601f19613caf5f610292565b01905f5b828110613cbf57505050565b602090604051613cce81610206565b613cd66118dd565b81525f838201525f60408201525f60608201525f60808201525f60a08201525f60c0820152606060e08201525f6101008201525f6101208201525f61014082015282828501015201613cb3565b90613d2d82610292565b613d3a6040519182610222565b8281528092613d4b601f1991610292565b01905f5b828110613d5b57505050565b602090604051613d6a81610206565b613d726118dd565b81525f838201525f60408201525f60608201525f60808201525f60a08201525f60c0820152606060e08201525f6101008201525f6101208201525f61014082015282828501015201613d4f565b92915f613dce91855195615318565b905f5f5b858110613e8b5750613de390613d23565b935f5f915b808310613df6575050505050565b909294613e068386989496611a20565b51915f5b8351811015613e775780613e3c5f613e36613e2760019589611a20565b5151516001600160a01b031690565b8b6153a1565b613e47575b01613e0a565b613e71613e548287611a20565b5197613e5f8161208c565b98613e6a828a611a20565b5287611a20565b50613e41565b509392969150949360010191909392613de8565b93909294613e998587611a20565b51915f5b8351811015613ede57613ebd5f613eb7613e278488611a20565b876153a1565b613eca575b600101613e9d565b94613ed660019161208c565b959050613ec2565b509095909490939150600101613dd2565b9392909181613f0091865196615318565b915f5f5b868110613fae5750613f1590613d23565b945f905f925b818410613f2a57505050505050565b90919395613f3b8487999597611a20565b51925f5b8451811015613f975780613f5c8a613eb7613e276001958a611a20565b613f67575b01613f3f565b613f91613f748288611a20565b5198613f7f8161208c565b99613f8a828b611a20565b5288611a20565b50613f61565b509493979192509594600101929194939094613f1b565b94613fbc8686989396611a20565b51915f5b8351811015613ffb57613fda86613eb7613e278488611a20565b613fe7575b600101613fc0565b95613ff360019161208c565b969050613fdf565b5096909590949150600101613f04565b90815161401781611efd565b905f5b81811061402e5750506105cc9192506153f8565b6001906001600160a01b036140438288611a20565b515151166140518286611a20565b520161401a565b6040519060c082018281106001600160401b038211176101e6576040525f60a0838281528260208201528260408201528260608201528260808201520152565b906140a282610292565b6140af6040519182610222565b82815280926140c0601f1991610292565b01905f5b8281106140d057505050565b6020906140db614058565b828285010152016140c4565b9492948551926140f684614098565b955f5b85811061410b57505050505050909150565b8061411b61137c6001938c611a20565b6001600160a01b0381165f908152602087905260409020541561425d576141b46141458288613636565b50505f905f928c878b8d61415a83828661381a565b6141d1575b50505050906141996141a2926141ab959661418a61417b610273565b6001600160a01b03909b168b52565b60208a015260ff166040890152565b15156060870152565b15156080850152565b151560a0830152565b6141be828b611a20565b526141c9818a611a20565b505b016140f9565b6141ab9750839650829186868b6141a29998966141f1956141999961386c565b5095949a93509150509786159384614254575b5083614248575b5082614223575b50509550919250508c878b8d61415f565b61423d92509060018060a01b03165f5260205260405f2090565b5415158f8a90614212565b5f91935013915f61420b565b1593505f614204565b614277614268610273565b6001600160a01b039092168252565b5f602082015260086040820152600160608201525f60808201525f60a08201526142a1828b611a20565b526142ac818a611a20565b506141cb565b92919082516142c081611efd565b5f915f5b81811061434e575050906142d79161446f565b80516142e281611d37565b915f5b828110614318575050509161010093916143139360608701526143098383836154a7565b60c0870152615566565b910152565b8061433261432b61137c60019486611a20565b888861488d565b61433c8287611a20565b526143478186611a20565b50016142e5565b8061436860606143606001948b611a20565b510151151590565b614373575b016142c4565b6143a4614391614383838b611a20565b51516001600160a01b031690565b611fba61439d8861208c565b9787611a20565b61436d565b94939291925f958451935f955b8587106143c65750505050505050565b90919293949597614462600191612b6388888861440e8f612b368b6143ed6040938d611a20565b51805151909790614408906001600160a01b03168093614bcb565b9561488d565b9261442160606040830151920151151590565b916144356040602083015192015160ff1690565b9460208501519360ff61445a606061445160408a015160ff1690565b98015160ff1690565b971693614b59565b98019594939291906143b6565b919061447a81611efd565b925f5b82811061448957505050565b6001906001600160a01b0361449e8285611a20565b51166144aa8288611a20565b520161447d565b3b156144ba5750565b604051630dd2788360e41b8152602060048201529081906144df906024830190610417565b0390fd5b9081602091031261013b57516105cc81610367565b6020906004926145078161092a565b60038103614568575060405163313ce56760e01b815292839182906001600160a01b03165afa90811561350a575f9161453f575b5090565b6105cc915060203d602011614561575b6145598183610222565b8101906144e3565b503d61454f565b8061457460029261092a565b036145d55760405163313ce56760e01b815292839182906001600160a01b03165afa90811561350a5760129160ff915f916145b6575b5016036125b657600890565b6145cf915060203d602011614561576145598183610222565b5f6145aa565b60405163313ce56760e01b815292839182906001600160a01b03165afa90811561350a575f9161453f575090565b80548015614629575f1901906146198282611c14565b612300576001815f809355015555565b634e487b7160e01b5f52603160045260245ffd5b805491925f925f19810192849291841161209a578361465c8783611c14565b50546001600160a01b03169681810361467b575b505061025390614603565b91935094506146aa6146a26146908786611c14565b50546001600160a01b03169685611c14565b509184611c14565b919091612300578082036146c8575b5050610253600192905f614670565b805482546001600160a01b0319166001600160a01b039190911617825560019081908054845460ff60a01b191660ff60a01b90911617845561471160ff825460a81c168561225f565b01549101555f806146b9565b905f5b825181108061477f575b1561473d576147389061208c565b614720565b61474681612612565b925f5b82811061475557505050565b8061476260019284611a20565b5161476d8288611a20565b526147788187611a20565b5001614749565b5061478a8184611a20565b5151151561472a565b9495929093955f948651936147a7856128b8565b985f985b8a878b106147c0575050505050505050909150565b859697989960a06148748d61487d946148488a9b899a9b6148166148018b9c6147eb8860019e611a20565b518051519095906001600160a01b03169161488d565b8351519092906001600160a01b031690614bcb565b8d8051602082015161482c604084015160ff1690565b91612edc6080614840606087015160ff1690565b950151151590565b6148528383611a20565b5261485d8282611a20565b5061486f8d610240612f118585611a20565b611a20565b51015190612a4d565b99019897969594939291906147ab565b916148b1919261489b6118dd565b509060018060a01b03165f5260205260405f2090565b548015612b72575f19810190811161209a576148cc9161205f565b50604051906148da826101cb565b80546001600160a01b03168252604051600182810180545f9281811c929082169182156149bf575b6020841083146149ab5783865260208601929081156149905750600114614954575b5050506105cc928261493d61494a946002940382610222565b6020860152015460ff1690565b60ff166040830152565b614964919293505f5260205f2090565b915f925b81841061497c57505001828261493d614924565b805484840152602090930192600101614968565b60ff19168352505090151560051b019050828261493d614924565b634e487b7160e01b5f52602260045260245ffd5b92607f1692614902565b600160ff1b811461209a575f0390565b81810292915f8212600160ff1b82141661209a57818405149015171561209a57565b604d811161209a57600a0a90565b634e487b7160e01b5f52601260045260245ffd5b8015614a2f576001600160ff1b030590565b614a09565b8015614a2f5760015f1982141661209a57600160ff1b0590565b8115614a2f57600160ff1b81145f1983141661209a570590565b93949391929060ff166008614a7d838361313a565b10614b4a57614a9491614a8f9161313a565b612bd5565b9060ff82118015614b40575b614b2257614ac5614abf614ad094614aba614aca9461560b565b6149d9565b926149fb565b61560b565b90614a4e565b925f831315614b3a5760ff80614ae89316911661313a565b9160ff83118015614b30575b614b2257614b14614aca91614b0e614ac56105cc966149fb565b906149d9565b91614b0e6305f5e10061560b565b622ee51760e41b5f5260045ffd5b50604c8311614af4565b50505090565b50604c8211614aa0565b63e236476560e01b5f5260045ffd5b949594909390929160ff166008614b70838361313a565b10614b4a57614b8291614a8f9161313a565b9160ff83118015614bc1575b614b2257614abf614aca92614ac592614ad0965f14614bb857614bb3614aba9161560b565b6149c9565b614aba9061560b565b50604c8311614b8e565b90614bd4614058565b508151915f5b838110614bf05763470cbf4760e01b5f5260045ffd5b614bfa8183611a20565b5180516001600160a01b03858116911614614c185750600101614bda565b935050505090565b600782101561048e5752565b9095969493859394999899614c3f6118fc565b9a604084019182519060608601948551614c5890151590565b9960208d019a8d8c51906040019d8e51614c729060ff1690565b60ff1692614c7f97614b59565b8451519096906001600160a01b031691614c97610264565b6001600160a01b039093168352602083015260ff1660408201528b5260208301516001600160a01b03166001600160a01b031660208c01525160408b0152511515151560608a015260808101516101408a015260a08101516101608a015260c08101516101808a015260e08101516101a08a0152610100810151614d1a81610484565b614d28906101c08b01614c20565b610120810151151515156101e08a01526101400151610200890152608088015260a08701525160c08601525160ff1660ff1660e085015260608101511515151561010085015260800151151515156102208401521515610120830152565b9060208282031261013b5781516001600160401b03811161013b576105cc92016131b2565b90614db591614e57565b90158015614e24575b614e0f5760208101805160206040840151911490811591614df9575b50614def576020826105cc9351010190614d86565b50506105cc612211565b8351603f1981019250821161209a57115f614dda565b50604051614e1e602082610222565b5f815290565b506040815110614dbe565b90614e3982610308565b614e466040519182610222565b8281528092611f25601f1991610308565b5f91829160208251920190620186a0fa903d906101408211614e95575b8215614e8c57614e8382614e2f565b915f602084013e565b5f925060609150565b6101409150614e74565b905f92839260208351930191fa913d91808311614ec7575b508215614e8c57614e8382614e2f565b91505f614eb7565b614ed88161562e565b9081614ee2575090565b6301ffc9a760e01b5f908152631858abab60e21b60045260209250906024908290617530fa5f511515601f3d111681614f19575090565b905090565b3d15614f48573d90614f2f82610308565b91614f3d6040519384610222565b82523d5f602084013e565b606090565b9081602091031261013b575190565b5f8060405160208101906362af688760e11b825260048152614f7f602482610222565b5190855afa614f8c614f1e565b90158015615013575b614ff15780602080614fac93518301019101614f4d565b6001600160a01b038111614ff1576001600160a01b03828116911614614fd0575050565b6314aa857960e21b5f526001600160a01b039081166004521660245260445ffd5b6317f5c1bf60e01b5f526001600160a01b03808316600452831660245260445ffd5b50602081511415614f95565b5190610253826103df565b919082604091031261013b57602082519201516105cc816103df565b9061504f61360c565b915460a881901c60ff166150628161092a565b600381036151a5575061507f90610b0b906001600160a01b031681565b60408051638e15f47360e01b81529081600481855afa90815f915f93615172575b506150aa57505050565b901515606085015280158015615162575b61515e578352600460a05f9260405192838092633fabe5a360e21b82525afa5f9181615138575b50615130575b508015604084018190521561512b575042156151255761510742612bc7565b428111156151205750425b602083015260016080830152565b615112565b5f615107565b615107565b90505f6150e8565b61515291925060a03d60a011610c6857610c548183610222565b5092505050905f6150e2565b5050565b506001600160ff1b0381116150bb565b909250615197915060403d60401161519e575b61518f8183610222565b81019061502a565b915f6150a0565b503d615185565b60049160a0906151bf90610b0b906001600160a01b031681565b604051633fabe5a360e21b815293849182905afa91825f915f9461521c575b506151e857505050565b5f8113156152175784526002906151fe8161092a565b036151075782516402540be40090058084526151075750565b505050565b909350615238915060a03d60a011610c6857610c548183610222565b5092505090925f6151de565b91608083015115158115150361527757506060820151151560408201511515810361527757506020809101519101511090565b91505090565b9060ff166008811461453b57600881116152d5576008036008811161209a576152a5906149fb565b6152ae81614a1d565b821380156152c4575b612684576105cc916149d9565b506152ce81614a34565b82126152b7565b60071981019190821161209a57604c821161268457614aca6105cc926149fb565b8115614a2f570490565b81810392915f13801582851316918412161761209a57565b92919083519161532783610292565b916153356040519384610222565b838352615351601f1961534786610292565b01602085016125d6565b82955f5b85811061536457505050505050565b60019061538585856001600160a01b0361537e8588611a20565b5116615a16565b61538f8288611a20565b5261539a8187611a20565b5001615355565b6001600160a01b0382165f908152602091909152604090209091905415612684576001600160a01b031680151591826153e4575b50506153e057600190565b5f90565b6001600160a01b0316141590505f806153d5565b8051801561453b5761540990611efd565b905f915f5b825181101561549b575f5f5b85811061545b575b509060019115615433575b0161540e565b61545661544361137c8387611a20565b611fba61544f8861208c565b9786611a20565b61542d565b61546861137c8286611a20565b615478610b0b61137c8689611a20565b6001600160a01b03909116146154905760010161541a565b506001905080615422565b506105cc92915061446f565b929180516154b481611efd565b905f925f5b82811061552157505050906154cd9161446f565b928351916154da83611d37565b945f5b8481106154eb575050505050565b806155056154fe61137c60019486611a20565b858761488d565b61550f828a611a20565b5261551a8189611a20565b50016154dd565b80615533608061436060019486611a20565b61553e575b016154b9565b61556161554e6143838386611a20565b611fba61555a8961208c565b9888611a20565b615538565b9291805161557381611efd565b905f925f5b8281106155d9575050509061558c9161446f565b9283519161559983611d37565b945f5b8481106155aa575050505050565b806155bd6154fe61137c60019486611a20565b6155c7828a611a20565b526155d28189611a20565b500161559c565b806155eb60a061436060019486611a20565b6155f6575b01615578565b61560661554e6143838386611a20565b6155f0565b6001600160ff1b03811161561c5790565b63123baf0360e11b5f5260045260245ffd5b6301ffc9a760e01b5f526301ffc9a760e01b60045260205f60248184617530fa5f511515601f3d1116816156a4575b501561569f576301ffc9a760e01b5f9081526001600160e01b03196004526020916024908290617530fa5f511515601f3d111681615699575090565b90501590565b505f90565b90505f61565d565b6156b581615046565b906080820151158015615701575b6156f9576020820151420342811161209a57600182015411156156f95760ff6156f39251915460a01c169061527d565b90600190565b50505f905f90565b50606082015115156156c3565b801561209a575f190190565b91906001905b80821061572d5750509050565b6157378285611a20565b5192825b80151580615794575b15615778575f1981019080821161209a576157626157739288611a20565b5161576d8289611a20565b5261570e565b61573b565b936157896001939492969586611a20565b520190929192615720565b505f19810181811161209a576157ab869188611a20565b5113615744565b906157bf61271083615b34565b9190928315615834578382111561582757612710829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b6011600383150218615b47565b50906105cc92506152f6565b91909160608184031261013b576040519061585a826101cb565b81938151615867816102a9565b83526020820151916001600160401b03831161013b5761588d60409392849383016131b2565b60208501520151916103db83610367565b519061025382610402565b60208183031261013b578051906001600160401b03821161013b570181601f8201121561013b578051906158dc82610292565b926158ea6040519485610222565b82845260208085019360051b8301019181831161013b5760208101935b83851061591657505050505090565b84516001600160401b03811161013b578201610160818503601f19011261013b5761593f610282565b9160208201516001600160401b03811161013b5785602061596292850101615840565b8352615970604083016133fe565b60208401526060820151604084015261598b6080830161501f565b606084015260a0820151608084015260c082015160a084015260e082015160c0840152610100820151926001600160401b03841161013b57610160836159d88860208098819801016131b2565b60e08401526159ea610120820161589e565b6101008401526159fd610140820161501f565b6101208401520151610140820152815201940193615907565b91615a625f5a92615a30615a2a8560061c90565b85612be4565b60405163dcc688a960e01b81526001600160a01b03968716600482015291909516602482015291829081906044820190565b03816001600160a01b03881687fa5f9181615ae0575b50615ad95750615a89905a90612be4565b91615a9381615b57565b615aa6615aa08360031c90565b83612be4565b831015615ab8575050506105cc613c88565b63b790d12360e01b5f526001600160a01b031660045260245260445260645ffd5b9250505090565b615afd9192503d805f833e615af58183610222565b8101906158a9565b905f615a78565b6301ffc9a760e01b5f9081526312e741a760e21b6004526020916024908290617530fa905f511515601f3d111690565b905f198183099102908180821091030391565b634e487b715f526020526024601cfd5b9060843d03615be957615b6a6084610308565b91615b786040519384610222565b60848352615b866084610308565b602084019290601f190136843760845f843e63dcf232d4835160e01c03615bc557615bb08261562e565b80615bcb575b15615bc5575060246084930152fd5b92505050565b50615bd582615b04565b81615be1575b50615bb6565b90505f615bdb565b905056fea164736f6c6343000822000a
🤖 Code Reader

Generate instant answers for your smart contract questions using Al Models. Read more.

Custom Contract ABI

                            

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.