0 txs
0 calls
constructor
constructor()
functions
_borrowGuardianPaused
viewfunction _borrowGuardianPaused() view returns (bool)
_mintGuardianPaused
viewfunction _mintGuardianPaused() view returns (bool)
accountAssets
viewfunction accountAssets(address, uint256) view returns (address)
admin
viewfunction admin() view returns (address)
allMarkets
viewfunction allMarkets(uint256) view returns (address)
borrowCapGuardian
viewfunction borrowCapGuardian() view returns (address)
borrowCaps
viewfunction borrowCaps(address) view returns (uint256)
borrowGuardianPaused
viewfunction borrowGuardianPaused(address) view returns (bool)
checkMembership
viewfunction checkMembership(address account, address cToken) view returns (bool)
closeFactorMantissa
viewfunction closeFactorMantissa() view returns (uint256)
compAccrued
viewfunction compAccrued(address) view returns (uint256)
compBorrowerIndex
viewfunction compBorrowerIndex(address, address) view returns (uint256)
compBorrowState
viewfunction compBorrowState(address) view returns (uint224 index, uint32 block)
compContributorSpeeds
viewfunction compContributorSpeeds(address) view returns (uint256)
compInitialIndex
viewfunction compInitialIndex() view returns (uint224)
compRate
viewfunction compRate() view returns (uint256)
compSpeeds
viewfunction compSpeeds(address) view returns (uint256)
compSupplierIndex
viewfunction compSupplierIndex(address, address) view returns (uint256)
compSupplyState
viewfunction compSupplyState(address) view returns (uint224 index, uint32 block)
comptrollerImplementation
viewfunction comptrollerImplementation() view returns (address)
getAccountLiquidity
viewfunction getAccountLiquidity(address account) view returns (uint256, uint256, uint256)
getAllMarkets
viewfunction getAllMarkets() view returns (address[])
getAssetsIn
viewfunction getAssetsIn(address account) view returns (address[])
getBlockNumber
viewfunction getBlockNumber() view returns (uint256)
getCompAddress
viewfunction getCompAddress() view returns (address)
getHypotheticalAccountLiquidity
viewfunction getHypotheticalAccountLiquidity(address account, address cTokenModify, uint256 redeemTokens, uint256 borrowAmount) view returns (uint256, uint256, uint256)
isComptroller
viewfunction isComptroller() view returns (bool)
lastContributorBlock
viewfunction lastContributorBlock(address) view returns (uint256)
liquidateCalculateSeizeTokens
viewfunction liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint256 actualRepayAmount) view returns (uint256, uint256)
liquidationIncentiveMantissa
viewfunction liquidationIncentiveMantissa() view returns (uint256)
markets
viewfunction markets(address) view returns (bool isListed, uint256 collateralFactorMantissa, bool isComped)
maxAssets
viewfunction maxAssets() view returns (uint256)
mintGuardianPaused
viewfunction mintGuardianPaused(address) view returns (bool)
oracle
viewfunction oracle() view returns (address)
pauseGuardian
viewfunction pauseGuardian() view returns (address)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
pendingComptrollerImplementation
viewfunction pendingComptrollerImplementation() view returns (address)
seizeGuardianPaused
viewfunction seizeGuardianPaused() view returns (bool)
transferGuardianPaused
viewfunction transferGuardianPaused() view returns (bool)
_become
nonpayablefunction _become(address unitroller)
_grantComp
nonpayablefunction _grantComp(address recipient, uint256 amount)
_setBorrowCapGuardian
nonpayablefunction _setBorrowCapGuardian(address newBorrowCapGuardian)
_setBorrowPaused
nonpayablefunction _setBorrowPaused(address cToken, bool state) returns (bool)
_setCloseFactor
nonpayablefunction _setCloseFactor(uint256 newCloseFactorMantissa) returns (uint256)
_setCollateralFactor
nonpayablefunction _setCollateralFactor(address cToken, uint256 newCollateralFactorMantissa) returns (uint256)
_setCompSpeed
nonpayablefunction _setCompSpeed(address cToken, uint256 compSpeed)
_setContributorCompSpeed
nonpayablefunction _setContributorCompSpeed(address contributor, uint256 compSpeed)
_setLiquidationIncentive
nonpayablefunction _setLiquidationIncentive(uint256 newLiquidationIncentiveMantissa) returns (uint256)
_setMarketBorrowCaps
nonpayablefunction _setMarketBorrowCaps(address[] cTokens, uint256[] newBorrowCaps)
_setMintPaused
nonpayablefunction _setMintPaused(address cToken, bool state) returns (bool)
_setPauseGuardian
nonpayablefunction _setPauseGuardian(address newPauseGuardian) returns (uint256)
_setPriceOracle
nonpayablefunction _setPriceOracle(address newOracle) returns (uint256)
_setSeizePaused
nonpayablefunction _setSeizePaused(bool state) returns (bool)
_setTransferPaused
nonpayablefunction _setTransferPaused(bool state) returns (bool)
_supportMarket
nonpayablefunction _supportMarket(address cToken) returns (uint256)
borrowAllowed
nonpayablefunction borrowAllowed(address cToken, address borrower, uint256 borrowAmount) returns (uint256)
borrowVerify
nonpayablefunction borrowVerify(address cToken, address borrower, uint256 borrowAmount)
claimComp
nonpayablefunction claimComp(address holder, address[] cTokens)
claimComp
nonpayablefunction claimComp(address holder)
claimComp
nonpayablefunction claimComp(address[] holders, address[] cTokens, bool borrowers, bool suppliers)
enterMarkets
nonpayablefunction enterMarkets(address[] cTokens) returns (uint256[])
exitMarket
nonpayablefunction exitMarket(address cTokenAddress) returns (uint256)
liquidateBorrowAllowed
nonpayablefunction liquidateBorrowAllowed(address cTokenBorrowed, address cTokenCollateral, address liquidator, address borrower, uint256 repayAmount) returns (uint256)
liquidateBorrowVerify
nonpayablefunction liquidateBorrowVerify(address cTokenBorrowed, address cTokenCollateral, address liquidator, address borrower, uint256 actualRepayAmount, uint256 seizeTokens)
mintAllowed
nonpayablefunction mintAllowed(address cToken, address minter, uint256 mintAmount) returns (uint256)
mintVerify
nonpayablefunction mintVerify(address cToken, address minter, uint256 actualMintAmount, uint256 mintTokens)
redeemAllowed
nonpayablefunction redeemAllowed(address cToken, address redeemer, uint256 redeemTokens) returns (uint256)
redeemVerify
nonpayablefunction redeemVerify(address cToken, address redeemer, uint256 redeemAmount, uint256 redeemTokens)
repayBorrowAllowed
nonpayablefunction repayBorrowAllowed(address cToken, address payer, address borrower, uint256 repayAmount) returns (uint256)
repayBorrowVerify
nonpayablefunction repayBorrowVerify(address cToken, address payer, address borrower, uint256 actualRepayAmount, uint256 borrowerIndex)
seizeAllowed
nonpayablefunction seizeAllowed(address cTokenCollateral, address cTokenBorrowed, address liquidator, address borrower, uint256 seizeTokens) returns (uint256)
seizeVerify
nonpayablefunction seizeVerify(address cTokenCollateral, address cTokenBorrowed, address liquidator, address borrower, uint256 seizeTokens)
transferAllowed
nonpayablefunction transferAllowed(address cToken, address src, address dst, uint256 transferTokens) returns (uint256)
transferVerify
nonpayablefunction transferVerify(address cToken, address src, address dst, uint256 transferTokens)
updateContributorRewards
nonpayablefunction updateContributorRewards(address contributor)
events
ActionPaused
event ActionPaused(address cToken, string action, bool pauseState)
ActionPaused
event ActionPaused(string action, bool pauseState)
CompGranted
event CompGranted(address recipient, uint256 amount)
CompSpeedUpdated
event CompSpeedUpdated(address indexed cToken, uint256 newSpeed)
ContributorCompSpeedUpdated
event ContributorCompSpeedUpdated(address indexed contributor, uint256 newSpeed)
DistributedBorrowerComp
event DistributedBorrowerComp(address indexed cToken, address indexed borrower, uint256 compDelta, uint256 compBorrowIndex)
DistributedSupplierComp
event DistributedSupplierComp(address indexed cToken, address indexed supplier, uint256 compDelta, uint256 compSupplyIndex)
Failure
event Failure(uint256 error, uint256 info, uint256 detail)
MarketEntered
event MarketEntered(address cToken, address account)
MarketExited
event MarketExited(address cToken, address account)
MarketListed
event MarketListed(address cToken)
NewBorrowCap
event NewBorrowCap(address indexed cToken, uint256 newBorrowCap)
NewBorrowCapGuardian
event NewBorrowCapGuardian(address oldBorrowCapGuardian, address newBorrowCapGuardian)
NewCloseFactor
event NewCloseFactor(uint256 oldCloseFactorMantissa, uint256 newCloseFactorMantissa)
NewCollateralFactor
event NewCollateralFactor(address cToken, uint256 oldCollateralFactorMantissa, uint256 newCollateralFactorMantissa)
NewLiquidationIncentive
event NewLiquidationIncentive(uint256 oldLiquidationIncentiveMantissa, uint256 newLiquidationIncentiveMantissa)
NewPauseGuardian
event NewPauseGuardian(address oldPauseGuardian, address newPauseGuardian)
NewPriceOracle
event NewPriceOracle(address oldPriceOracle, address newPriceOracle)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50600080546001600160a01b031916331790556158b580620000336000396000f3fe608060405234801561001057600080fd5b50600436106104f85760003560e01c80636d154ea5116102a1578063b21be7fd1161016b578063da3d454c116100e3578063e875544611610097578063eabe7d911161007c578063eabe7d91146112d7578063ede4edd01461130d578063f851a44014611333576104f8565b8063e8755446146112a9578063e9af0292146112b1576104f8565b8063dcfbc0c7116100c8578063dcfbc0c71461126d578063e4028eee14611275578063e6653f3d146112a1576104f8565b8063da3d454c1461120b578063dce1544914611241576104f8565b8063c29982381161013a578063ca0af0431161011f578063ca0af04314611171578063cc7ebdc41461119f578063d02f7351146111c5576104f8565b8063c29982381461107f578063c488847b14611122576104f8565b8063b21be7fd14610fe7578063bb82aa5e14611015578063bdcdc2581461101d578063bea6b8b814611059576104f8565b8063929fe9a111610219578063a7f0e231116101cd578063abfceffc116101b2578063abfceffc14610f61578063ac0b0bb714610fd7578063b0772d0b14610fdf576104f8565b8063a7f0e23114610f35578063aa90075414610f59576104f8565b8063986ab838116101fe578063986ab83814610ee15780639d1b5a0a14610f07578063a76b3fda14610f0f576104f8565b8063929fe9a114610eab57806394b2294b14610ed9576104f8565b80637dc0d1d0116102705780638c57804e116102555780638c57804e14610e1e5780638e8f294b14610e445780638ebf636414610e8c576104f8565b80637dc0d1d014610e0e57806387f7630314610e16576104f8565b80636d154ea514610d565780636d35bf9114610d7c578063731f0c2b14610dc2578063741b252514610de8576104f8565b8063434caf25116103e257806355ee1fe11161035a5780635fc7e71e1161030e5780636810dfa6116102f35780636810dfa614610b9c5780636a56947e14610ccc5780636b79c38d14610d08576104f8565b80635fc7e71e14610a94578063607ef6c114610ada576104f8565b80635c7786051161033f5780635c77860514610a125780635ec88c7914610a485780635f5af1aa14610a6e576104f8565b806355ee1fe1146109c0578063598ee1cb146109e6576104f8565b80634e79238f116103b15780634fd42e17116103965780634fd42e171461094a57806351dff9891461096757806352d84d1e146109a3576104f8565b80634e79238f146108ba5780634ef4c3e114610914576104f8565b8063434caf251461081457806347ef3b3b146108405780634a5844321461088c5780634ada90af146108b2576104f8565b80632678224711610475578063391957d7116104445780633c94786f116104295780633c94786f146107c857806341c728b9146107d057806342cbb15c1461080c576104f8565b8063391957d7146107745780633bcf7ec11461079a576104f8565b8063267822471461070457806327efe3cb1461070c5780632d70db7814610738578063317b0b7714610757576104f8565b80631d7b33d7116104cc57806321af4569116104b157806321af45691461069c57806324008a62146106c057806324a3d622146106fc576104f8565b80631d7b33d7146106225780631ededc911461065a576104f8565b80627e3dd2146104fd57806318c882a5146105195780631c3db2e0146105475780631d504dc6146105fc575b600080fd5b61050561133b565b604080519115158252519081900360200190f35b6105056004803603604081101561052f57600080fd5b506001600160a01b0381351690602001351515611340565b6105fa6004803603604081101561055d57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561058857600080fd5b82018360208201111561059a57600080fd5b803590602001918460208302840111640100000000831117156105bc57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506114fe945050505050565b005b6105fa6004803603602081101561061257600080fd5b50356001600160a01b0316611560565b6106486004803603602081101561063857600080fd5b50356001600160a01b03166116c7565b60408051918252519081900360200190f35b6105fa600480360360a081101561067057600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356116d9565b6106a46116e0565b604080516001600160a01b039092168252519081900360200190f35b610648600480360360808110156106d657600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356116ef565b6106a46117b6565b6106a46117c5565b6105fa6004803603604081101561072257600080fd5b506001600160a01b0381351690602001356117d4565b6105056004803603602081101561074e57600080fd5b503515156118d7565b6106486004803603602081101561076d57600080fd5b5035611a4b565b6105fa6004803603602081101561078a57600080fd5b50356001600160a01b0316611af8565b610505600480360360408110156107b057600080fd5b506001600160a01b0381351690602001351515611ba4565b610505611d5f565b6105fa600480360360808110156107e657600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611d80565b610648611d86565b6105fa6004803603604081101561082a57600080fd5b506001600160a01b038135169060200135611d8b565b6105fa600480360360c081101561085657600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135611df2565b610648600480360360208110156108a257600080fd5b50356001600160a01b0316611dfa565b610648611e0c565b6108f6600480360360808110156108d057600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611e12565b60408051938452602084019290925282820152519081900360600190f35b6106486004803603606081101561092a57600080fd5b506001600160a01b03813581169160208101359091169060400135611e4c565b6106486004803603602081101561096057600080fd5b5035611f01565b6105fa6004803603608081101561097d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611f71565b6106a4600480360360208110156109b957600080fd5b5035611fd1565b610648600480360360208110156109d657600080fd5b50356001600160a01b0316611ff8565b6105fa600480360360408110156109fc57600080fd5b506001600160a01b03813516906020013561207d565b6105fa60048036036060811015610a2857600080fd5b506001600160a01b03813581169160208101359091169060400135612178565b6108f660048036036020811015610a5e57600080fd5b50356001600160a01b031661217d565b61064860048036036020811015610a8457600080fd5b50356001600160a01b03166121b2565b610648600480360360a0811015610aaa57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060800135612236565b6105fa60048036036040811015610af057600080fd5b810190602081018135640100000000811115610b0b57600080fd5b820183602082011115610b1d57600080fd5b80359060200191846020830284011164010000000083111715610b3f57600080fd5b919390929091602081019035640100000000811115610b5d57600080fd5b820183602082011115610b6f57600080fd5b80359060200191846020830284011164010000000083111715610b9157600080fd5b50909250905061239b565b6105fa60048036036080811015610bb257600080fd5b810190602081018135640100000000811115610bcd57600080fd5b820183602082011115610bdf57600080fd5b80359060200191846020830284011164010000000083111715610c0157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050640100000000811115610c5157600080fd5b820183602082011115610c6357600080fd5b80359060200191846020830284011164010000000083111715610c8557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050505080351515915060200135151561253b565b6105fa60048036036080811015610ce257600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135611d80565b610d2e60048036036020811015610d1e57600080fd5b50356001600160a01b03166127cc565b604080516001600160e01b03909316835263ffffffff90911660208301528051918290030190f35b61050560048036036020811015610d6c57600080fd5b50356001600160a01b03166127f6565b6105fa600480360360a0811015610d9257600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013590911690608001356116d9565b61050560048036036020811015610dd857600080fd5b50356001600160a01b031661280b565b6105fa60048036036020811015610dfe57600080fd5b50356001600160a01b0316612820565b6106a46128e3565b6105056128f2565b610d2e60048036036020811015610e3457600080fd5b50356001600160a01b0316612902565b610e6a60048036036020811015610e5a57600080fd5b50356001600160a01b031661292c565b6040805193151584526020840192909252151582820152519081900360600190f35b61050560048036036020811015610ea257600080fd5b50351515612952565b61050560048036036040811015610ec157600080fd5b506001600160a01b0381358116916020013516612ac2565b610648612af5565b61064860048036036020811015610ef757600080fd5b50356001600160a01b0316612afb565b6106a4612b0d565b61064860048036036020811015610f2557600080fd5b50356001600160a01b0316612b25565b610f3d612c82565b604080516001600160e01b039092168252519081900360200190f35b610648612c95565b610f8760048036036020811015610f7757600080fd5b50356001600160a01b0316612c9b565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610fc3578181015183820152602001610fab565b505050509050019250505060405180910390f35b610505612d24565b610f87612d34565b61064860048036036040811015610ffd57600080fd5b506001600160a01b0381358116916020013516612d96565b6106a4612db3565b6106486004803603608081101561103357600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135612dc2565b6106486004803603602081101561106f57600080fd5b50356001600160a01b0316612e5d565b610f876004803603602081101561109557600080fd5b8101906020810181356401000000008111156110b057600080fd5b8201836020820111156110c257600080fd5b803590602001918460208302840111640100000000831117156110e457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612e6f945050505050565b6111586004803603606081101561113857600080fd5b506001600160a01b03813581169160208101359091169060400135612f06565b6040805192835260208301919091528051918290030190f35b6106486004803603604081101561118757600080fd5b506001600160a01b038135811691602001351661312e565b610648600480360360208110156111b557600080fd5b50356001600160a01b031661314b565b610648600480360360a08110156111db57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135909116906080013561315d565b6106486004803603606081101561122157600080fd5b506001600160a01b03813581169160208101359091169060400135613338565b6106a46004803603604081101561125757600080fd5b506001600160a01b038135169060200135613727565b6106a461375c565b6106486004803603604081101561128b57600080fd5b506001600160a01b03813516906020013561376b565b61050561391b565b61064861393d565b6105fa600480360360208110156112c757600080fd5b50356001600160a01b0316613943565b610648600480360360608110156112ed57600080fd5b506001600160a01b038135811691602081013590911690604001356139a7565b6106486004803603602081101561132357600080fd5b50356001600160a01b03166139e2565b6106a4613cf5565b600181565b6001600160a01b03821660009081526009602052604081205460ff166113975760405162461bcd60e51b815260040180806020018281038252602881526020018061578b6028913960400191505060405180910390fd5b600a546001600160a01b03163314806113ba57506000546001600160a01b031633145b6113f55760405162461bcd60e51b81526004018080602001828103825260278152602001806157b36027913960400191505060405180910390fd5b6000546001600160a01b031633148061141057506001821515145b611461576040805162461bcd60e51b815260206004820152601660248201527f6f6e6c792061646d696e2063616e20756e706175736500000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166000818152600c6020908152604091829020805486151560ff19909116811790915582519384528383015260609083018190526006908301527f426f72726f7700000000000000000000000000000000000000000000000000006080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150805b92915050565b60408051600180825281830190925260609160208083019080388339019050509050828160008151811061152e57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061155b818360018061253b565b505050565b806001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b50516001600160a01b0316331461160b5760405162461bcd60e51b815260040180806020018281038252602781526020018061585a6027913960400191505060405180910390fd5b806001600160a01b031663c1e803346040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561164657600080fd5b505af115801561165a573d6000803e3d6000fd5b505050506040513d602081101561167057600080fd5b5051156116c4576040805162461bcd60e51b815260206004820152601560248201527f6368616e6765206e6f7420617574686f72697a65640000000000000000000000604482015290519081900360640190fd5b50565b600f6020526000908152604090205481565b5050505050565b6015546001600160a01b031681565b6001600160a01b03841660009081526009602052604081205460ff16611717575060096117ae565b61171f6156cb565b6040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561176357600080fd5b505afa158015611777573d6000803e3d6000fd5b505050506040513d602081101561178d57600080fd5b50519052905061179d8682613d04565b6117a8868583613fb0565b60009150505b949350505050565b600a546001600160a01b031681565b6001546001600160a01b031681565b6117dc614147565b61182d576040805162461bcd60e51b815260206004820152601960248201527f6f6e6c792061646d696e2063616e206772616e7420636f6d7000000000000000604482015290519081900360640190fd5b60006118398383614170565b9050801561188e576040805162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e7420636f6d7020666f72206772616e740000000000604482015290519081900360640190fd5b604080516001600160a01b03851681526020810184905281517f98b2f82a3a07f223a0be64b3d0f47711c64dccd1feafb94aa28156b38cd9695c929181900390910190a1505050565b600a546000906001600160a01b03163314806118fd57506000546001600160a01b031633145b6119385760405162461bcd60e51b81526004018080602001828103825260278152602001806157b36027913960400191505060405180910390fd5b6000546001600160a01b031633148061195357506001821515145b6119a4576040805162461bcd60e51b815260206004820152601660248201527f6f6e6c792061646d696e2063616e20756e706175736500000000000000000000604482015290519081900360640190fd5b600a8054831515600160b81b81027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179091556040805160208101929092528082526005828201527f5365697a650000000000000000000000000000000000000000000000000000006060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a150805b919050565b600080546001600160a01b03163314611aab576040805162461bcd60e51b815260206004820152601f60248201527f6f6e6c792061646d696e2063616e2073657420636c6f736520666163746f7200604482015290519081900360640190fd5b6005805490839055604080518281526020810185905281517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9929181900390910190a160005b9392505050565b6000546001600160a01b03163314611b415760405162461bcd60e51b81526004018080602001828103825260268152602001806157da6026913960400191505060405180910390fd5b601580546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517feda98690e518e9a05f8ec6837663e188211b2da8f4906648b323f2c1d4434e29929181900390910190a15050565b6001600160a01b03821660009081526009602052604081205460ff16611bfb5760405162461bcd60e51b815260040180806020018281038252602881526020018061578b6028913960400191505060405180910390fd5b600a546001600160a01b0316331480611c1e57506000546001600160a01b031633145b611c595760405162461bcd60e51b81526004018080602001828103825260278152602001806157b36027913960400191505060405180910390fd5b6000546001600160a01b0316331480611c7457506001821515145b611cc5576040805162461bcd60e51b815260206004820152601660248201527f6f6e6c792061646d696e2063616e20756e706175736500000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166000818152600b6020908152604091829020805486151560ff19909116811790915582519384528383015260609083018190526004908301527f4d696e74000000000000000000000000000000000000000000000000000000006080830152517f71aec636243f9709bb0007ae15e9afb8150ab01716d75fd7573be5cc096e03b09181900360a00190a150919050565b600a5474010000000000000000000000000000000000000000900460ff1681565b50505050565b435b90565b611d93614147565b611de4576040805162461bcd60e51b815260206004820152601d60248201527f6f6e6c792061646d696e2063616e2073657420636f6d70207370656564000000604482015290519081900360640190fd5b611dee82826142c3565b5050565b505050505050565b60166020526000908152604090205481565b60065481565b600080600080600080611e278a8a8a8a614655565b925092509250826011811115611e3957fe5b95509093509150505b9450945094915050565b6001600160a01b0383166000908152600b602052604081205460ff1615611eba576040805162461bcd60e51b815260206004820152600e60248201527f6d696e7420697320706175736564000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff16611ee45760095b9050611af1565b611eed8461498d565b611ef78484614c2f565b6000949350505050565b600080546001600160a01b03163314611f2757611f206001600b614e0e565b9050611a46565b6006805490839055604080518281526020810185905281517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316929181900390910190a16000611af1565b80158015611f7f5750600082115b15611d80576040805162461bcd60e51b815260206004820152601160248201527f72656465656d546f6b656e73207a65726f000000000000000000000000000000604482015290519081900360640190fd5b600d8181548110611fde57fe5b6000918252602090912001546001600160a01b0316905081565b600080546001600160a01b0316331461201757611f2060016010614e0e565b600480546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22929181900390910190a16000611af1565b612085614147565b6120d6576040805162461bcd60e51b815260206004820152601d60248201527f6f6e6c792061646d696e2063616e2073657420636f6d70207370656564000000604482015290519081900360640190fd5b6120df82612820565b80612102576001600160a01b038216600090815260186020526040812055612124565b61210a611d86565b6001600160a01b0383166000908152601860205260409020555b6001600160a01b038216600081815260176020908152604091829020849055815184815291517f386537fa92edc3319af95f1f904dcf1900021e4f3f4e08169a577a09076e66b39281900390910190a25050565b61155b565b600080600080600080612194876000806000614655565b9250925092508260118111156121a657fe5b97919650945092505050565b600080546001600160a01b031633146121d157611f2060016013614e0e565b600a80546001600160a01b038481166001600160a01b0319831617928390556040805192821680845293909116602083015280517f0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e9281900390910190a16000611af1565b6001600160a01b03851660009081526009602052604081205460ff16158061227757506001600160a01b03851660009081526009602052604090205460ff16155b156122865760095b9050612392565b60008061229285614e74565b919350909150600090508260118111156122a857fe5b146122c2578160118111156122b957fe5b92505050612392565b806122ce5760036122b9565b6000886001600160a01b03166395dd9193876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561232657600080fd5b505afa15801561233a573d6000803e3d6000fd5b505050506040513d602081101561235057600080fd5b5051604080516020810190915260055481529091506000906123729083614e94565b905080861115612389576011945050505050612392565b60009450505050505b95945050505050565b6000546001600160a01b03163314806123be57506015546001600160a01b031633145b6123f95760405162461bcd60e51b81526004018080602001828103825260358152602001806158006035913960400191505060405180910390fd5b8281811580159061240957508082145b61245a576040805162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e70757400000000000000000000000000000000000000604482015290519081900360640190fd5b60005b828110156125325784848281811061247157fe5b905060200201356016600089898581811061248857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055508686828181106124c857fe5b905060200201356001600160a01b03166001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f686868481811061250e57fe5b905060200201356040518082815260200191505060405180910390a260010161245d565b50505050505050565b60005b83518110156116d957600084828151811061255557fe5b6020908102919091018101516001600160a01b0381166000908152600990925260409091205490915060ff166125d2576040805162461bcd60e51b815260206004820152601560248201527f6d61726b6574206d757374206265206c69737465640000000000000000000000604482015290519081900360640190fd5b60018415151415612721576125e56156cb565b6040518060200160405280836001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561262957600080fd5b505afa15801561263d573d6000803e3d6000fd5b505050506040513d602081101561265357600080fd5b5051905290506126638282613d04565b60005b875181101561271e5761268d8389838151811061267f57fe5b602002602001015184613fb0565b6126e288828151811061269c57fe5b6020026020010151601460008b85815181106126b457fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054614170565b601460008a84815181106126f257fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101612666565b50505b600183151514156127c3576127358161498d565b60005b86518110156127c15761275e8288838151811061275157fe5b6020026020010151614c2f565b61278587828151811061276d57fe5b6020026020010151601460008a85815181106126b457fe5b6014600089848151811061279557fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101612738565b505b5060010161253e565b6010602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b600c6020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b6001600160a01b03811660009081526017602052604081205490612842611d86565b6001600160a01b0384166000908152601860205260408120549192509061286a908390614eb3565b905060008111801561287c5750600083115b15611d8057600061288d8285614ef5565b6001600160a01b038616600090815260146020526040812054919250906128b49083614f37565b6001600160a01b0387166000908152601460209081526040808320939093556018905220849055505050505050565b6004546001600160a01b031681565b600a54600160b01b900460ff1681565b6011602052600090815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b60096020526000908152604090208054600182015460039092015460ff91821692911683565b600a546000906001600160a01b031633148061297857506000546001600160a01b031633145b6129b35760405162461bcd60e51b81526004018080602001828103825260278152602001806157b36027913960400191505060405180910390fd5b6000546001600160a01b03163314806129ce57506001821515145b612a1f576040805162461bcd60e51b815260206004820152601660248201527f6f6e6c792061646d696e2063616e20756e706175736500000000000000000000604482015290519081900360640190fd5b600a8054831515600160b01b81027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179091556040805160208101929092528082526008828201527f5472616e736665720000000000000000000000000000000000000000000000006060830152517fef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de09181900360800190a15090565b6001600160a01b038082166000908152600960209081526040808320938616835260029093019052205460ff1692915050565b60075481565b60176020526000908152604090205481565b73eca289e2e1a480dd5b2f75bb16a4e0ffd8d8459690565b600080546001600160a01b03163314612b4457611f2060016012614e0e565b6001600160a01b03821660009081526009602052604090205460ff1615612b7157611f20600a6011614e0e565b816001600160a01b031663fe9c44ae6040518163ffffffff1660e01b815260040160206040518083038186803b158015612baa57600080fd5b505afa158015612bbe573d6000803e3d6000fd5b505050506040513d6020811015612bd457600080fd5b5050604080516060810182526001808252600060208381018281528486018381526001600160a01b03891684526009909252949091209251835490151560ff19918216178455935191830191909155516003909101805491151591909216179055612c3e82614f79565b604080516001600160a01b038416815290517fcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f9181900360200190a1600092915050565b6ec097ce7bc90715b34b9f100000000081565b600e5481565b60608060086000846001600160a01b03166001600160a01b03168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015612d1757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612cf9575b5093979650505050505050565b600a54600160b81b900460ff1681565b6060600d805480602002602001604051908101604052809291908181526020018280548015612d8c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612d6e575b5050505050905090565b601260209081526000928352604080842090915290825290205481565b6002546001600160a01b031681565b600a54600090600160b01b900460ff1615612e24576040805162461bcd60e51b815260206004820152601260248201527f7472616e73666572206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6000612e31868685615060565b90508015612e405790506117ae565b612e498661498d565b612e538686614c2f565b6117a88685614c2f565b60186020526000908152604090205481565b6060600082519050606081604051908082528060200260200182016040528015612ea3578160200160208202803883390190505b50905060005b82811015612efe576000858281518110612ebf57fe5b60200260200101519050612ed3813361510c565b6011811115612ede57fe5b838381518110612eea57fe5b602090810291909101015250600101612ea9565b509392505050565b600480546040805163fc57d4df60e01b81526001600160a01b038781169482019490945290516000938493849391169163fc57d4df91602480820192602092909190829003018186803b158015612f5c57600080fd5b505afa158015612f70573d6000803e3d6000fd5b505050506040513d6020811015612f8657600080fd5b5051600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051939450600093929091169163fc57d4df91602480820192602092909190829003018186803b158015612fdf57600080fd5b505afa158015612ff3573d6000803e3d6000fd5b505050506040513d602081101561300957600080fd5b50519050811580613018575080155b1561302d57600d935060009250613126915050565b6000866001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561306857600080fd5b505afa15801561307c573d6000803e3d6000fd5b505050506040513d602081101561309257600080fd5b5051905060006130a06156cb565b6130a86156cb565b6130b06156cb565b6130d8604051806020016040528060065481525060405180602001604052808a815250615202565b9250613100604051806020016040528088815250604051806020016040528088815250615202565b915061310c8383615241565b9050613118818b614e94565b600099509750505050505050505b935093915050565b601360209081526000928352604080842090915290825290205481565b60146020526000908152604090205481565b600a54600090600160b81b900460ff16156131bf576040805162461bcd60e51b815260206004820152600f60248201527f7365697a65206973207061757365640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03861660009081526009602052604090205460ff16158061320057506001600160a01b03851660009081526009602052604090205460ff16155b1561320c57600961227f565b846001600160a01b0316635fe3b5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561324557600080fd5b505afa158015613259573d6000803e3d6000fd5b505050506040513d602081101561326f57600080fd5b5051604080517f5fe3b56700000000000000000000000000000000000000000000000000000000815290516001600160a01b0392831692891691635fe3b567916004808301926020929190829003018186803b1580156132ce57600080fd5b505afa1580156132e2573d6000803e3d6000fd5b505050506040513d60208110156132f857600080fd5b50516001600160a01b03161461330f57600261227f565b6133188661498d565b6133228684614c2f565b61332c8685614c2f565b60009695505050505050565b6001600160a01b0383166000908152600c602052604081205460ff16156133a6576040805162461bcd60e51b815260206004820152601060248201527f626f72726f772069732070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526009602052604090205460ff166133cd576009611edd565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff166134c557336001600160a01b0385161461345b576040805162461bcd60e51b815260206004820152601560248201527f73656e646572206d7573742062652063546f6b656e0000000000000000000000604482015290519081900360640190fd5b6000613467338561510c565b9050600081601181111561347757fe5b146134905780601181111561348857fe5b915050611af1565b6001600160a01b038086166000908152600960209081526040808320938816835260029093019052205460ff166134c357fe5b505b600480546040805163fc57d4df60e01b81526001600160a01b03888116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b15801561351657600080fd5b505afa15801561352a573d6000803e3d6000fd5b505050506040513d602081101561354057600080fd5b505161354d57600d611edd565b6001600160a01b038416600090815260166020526040902054801561363a576000856001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a757600080fd5b505afa1580156135bb573d6000803e3d6000fd5b505050506040513d60208110156135d157600080fd5b5051905060006135e18286614f37565b9050828110613637576040805162461bcd60e51b815260206004820152601960248201527f6d61726b657420626f72726f7720636170207265616368656400000000000000604482015290519081900360640190fd5b50505b60008061364a8688600088614655565b9193509091506000905082601181111561366057fe5b1461367b5781601181111561367157fe5b9350505050611af1565b8015613688576004613671565b6136906156cb565b6040518060200160405280896001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156136d457600080fd5b505afa1580156136e8573d6000803e3d6000fd5b505050506040513d60208110156136fe57600080fd5b50519052905061370e8882613d04565b613719888883613fb0565b600098975050505050505050565b6008602052816000526040600020818154811061374057fe5b6000918252602090912001546001600160a01b03169150829050565b6003546001600160a01b031681565b600080546001600160a01b031633146137915761378a60016006614e0e565b90506114f8565b6001600160a01b0383166000908152600960205260409020805460ff166137c6576137be60096007614e0e565b9150506114f8565b6137ce6156cb565b5060408051602081019091528381526137e56156cb565b506040805160208101909152670c7d713b49da00008152613806818361527d565b156138215761381760066008614e0e565b93505050506114f8565b84158015906138aa5750600480546040805163fc57d4df60e01b81526001600160a01b038a8116948201949094529051929091169163fc57d4df91602480820192602092909190829003018186803b15801561387c57600080fd5b505afa158015613890573d6000803e3d6000fd5b505050506040513d60208110156138a657600080fd5b5051155b156138bb57613817600d6009614e0e565b60018301805490869055604080516001600160a01b03891681526020810183905280820188905290517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc59181900360600190a16000979650505050505050565b600a547501000000000000000000000000000000000000000000900460ff1681565b60055481565b6116c481600d80548060200260200160405190810160405280929190818152602001828054801561399d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161397f575b50505050506114fe565b6000806139b5858585615060565b905080156139c4579050611af1565b6139cd8561498d565b6139d78585614c2f565b600095945050505050565b6000808290506000806000836001600160a01b031663c37f68e2336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b158015613a4357600080fd5b505afa158015613a57573d6000803e3d6000fd5b505050506040513d6080811015613a6d57600080fd5b508051602082015160409092015190945090925090508215613ac05760405162461bcd60e51b81526004018080602001828103825260258152602001806158356025913960400191505060405180910390fd5b8015613add57613ad2600c6002614e0e565b945050505050611a46565b6000613aea873385615060565b90508015613b0b57613aff600e600383615284565b95505050505050611a46565b6001600160a01b0385166000908152600960209081526040808320338452600281019092529091205460ff16613b4a5760009650505050505050611a46565b3360009081526002820160209081526040808320805460ff191690556008825291829020805483518184028101840190945280845260609392830182828015613bbc57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613b9e575b5050835193945083925060009150505b82811015613c1157896001600160a01b0316848281518110613bea57fe5b60200260200101516001600160a01b03161415613c0957809150613c11565b600101613bcc565b50818110613c1b57fe5b336000908152600860205260409020805481906000198101908110613c3c57fe5b9060005260206000200160009054906101000a90046001600160a01b0316818381548110613c6657fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558054613c9f8260001983016156de565b50604080516001600160a01b038c16815233602082015281517fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d929181900390910190a160009c9b505050505050505050505050565b6000546001600160a01b031681565b6001600160a01b0382166000908152601160209081526040808320600f9092528220549091613d31611d86565b8354909150600090613d51908390600160e01b900463ffffffff16614eb3565b9050600081118015613d635750600083115b15613f44576000613dd8876001600160a01b03166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b158015613da657600080fd5b505afa158015613dba573d6000803e3d6000fd5b505050506040513d6020811015613dd057600080fd5b5051876152ea565b90506000613de68386614ef5565b9050613df06156cb565b60008311613e0d5760405180602001604052806000815250613e17565b613e178284615308565b9050613e216156cb565b604080516020810190915288546001600160e01b03168152613e43908361533d565b90506040518060400160405280613e9383600001516040518060400160405280601a81526020017f6e657720696e6465782065786365656473203232342062697473000000000000815250615362565b6001600160e01b03168152602001613ee0886040518060400160405280601c81526020017f626c6f636b206e756d62657220657863656564732033322062697473000000008152506153fc565b63ffffffff9081169091526001600160a01b038c166000908152601160209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b0319909416939093171691909117905550611df292505050565b8015611df257613f89826040518060400160405280601c81526020017f626c6f636b206e756d62657220657863656564732033322062697473000000008152506153fc565b845463ffffffff91909116600160e01b026001600160e01b03909116178455505050505050565b6001600160a01b0383166000908152601160205260409020613fd06156cb565b50604080516020810190915281546001600160e01b03168152613ff16156cb565b5060408051602080820183526001600160a01b0380891660009081526013835284812091891680825282845294812080548552865195909152915291909155805115611df25761403f6156cb565b6140498383615452565b905060006140a6886001600160a01b03166395dd9193896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015613da657600080fd5b905060006140b48284615477565b6001600160a01b038916600090815260146020526040812054919250906140db9083614f37565b6001600160a01b03808b166000818152601460209081526040918290208590558a5182518881529182015281519495509193928e16927f1fc3ecc087d8d2d15e23d0032af5a47059c3892d003d8e139fdcb6bb327c99a69281900390910190a350505050505050505050565b600080546001600160a01b031633148061416b57506002546001600160a01b031633145b905090565b60008061417b612b0d565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156141e057600080fd5b505afa1580156141f4573d6000803e3d6000fd5b505050506040513d602081101561420a57600080fd5b50519050831580159061421d5750808411155b156142ba57816001600160a01b031663a9059cbb86866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561428257600080fd5b505af1158015614296573d6000803e3d6000fd5b505050506040513d60208110156142ac57600080fd5b50600093506114f892505050565b50919392505050565b6001600160a01b0382166000908152600f60205260409020548015614377576142ea6156cb565b6040518060200160405280856001600160a01b031663aa5af0fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561432e57600080fd5b505afa158015614342573d6000803e3d6000fd5b505050506040513d602081101561435857600080fd5b5051905290506143678461498d565b6143718482613d04565b506145f9565b81156145f9576001600160a01b0383166000908152600960205260409020805460ff1615156001146143f0576040805162461bcd60e51b815260206004820152601960248201527f636f6d70206d61726b6574206973206e6f74206c697374656400000000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152601060205260409020546001600160e01b031615801561444257506001600160a01b038416600090815260106020526040902054600160e01b900463ffffffff16155b156145115760405180604001604052806ec097ce7bc90715b34b9f10000000006001600160e01b031681526020016144b661447b611d86565b6040518060400160405280601c81526020017f626c6f636b206e756d62657220657863656564732033322062697473000000008152506153fc565b63ffffffff9081169091526001600160a01b0386166000908152601060209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b031990941693909317169190911790555b6001600160a01b0384166000908152601160205260409020546001600160e01b031615801561456357506001600160a01b038416600090815260116020526040902054600160e01b900463ffffffff16155b156145f75760405180604001604052806ec097ce7bc90715b34b9f10000000006001600160e01b0316815260200161459c61447b611d86565b63ffffffff9081169091526001600160a01b0386166000908152601160209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b031990941693909317169190911790555b505b81811461155b576001600160a01b0383166000818152600f6020908152604091829020859055815185815291517f2ab93f65628379309f36cb125e90d7c902454a545c4f8b8cb0794af75c24b8079281900390910190a2505050565b6000806000614662615702565b6001600160a01b038816600090815260086020908152604080832080548251818502810185019093528083526060938301828280156146ca57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116146ac575b50939450600093505050505b815181101561494e5760008282815181106146ed57fe5b60200260200101519050806001600160a01b031663c37f68e28d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b15801561474d57600080fd5b505afa158015614761573d6000803e3d6000fd5b505050506040513d608081101561477757600080fd5b508051602082015160408084015160609485015160808b01529389019390935291870191909152935083156147bc5750600f965060009550859450611e429350505050565b60408051602080820183526001600160a01b0380851660008181526009845285902060010154845260c08a01939093528351808301855260808a0151815260e08a015260048054855163fc57d4df60e01b815291820194909452935192169263fc57d4df9260248083019392829003018186803b15801561483c57600080fd5b505afa158015614850573d6000803e3d6000fd5b505050506040513d602081101561486657600080fd5b505160a086018190526148895750600d965060009550859450611e429350505050565b604080516020810190915260a0860151815261010086015260c085015160e08601516148c3916148b891615202565b866101000151615202565b6101208601819052604086015186516148dd9291906154a6565b8552610100850151606086015160208701516148fa9291906154a6565b60208601526001600160a01b03818116908c161415614945576149278561012001518b87602001516154a6565b6020860181905261010086015161493f918b906154a6565b60208601525b506001016146d6565b506020830151835111156149745750506020810151905160009450039150829050611e42565b5050805160209091015160009450849350039050611e42565b6001600160a01b0381166000908152601060209081526040808320600f90925282205490916149ba611d86565b83549091506000906149da908390600160e01b900463ffffffff16614eb3565b90506000811180156149ec5750600083115b15614bc4576000856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614a2c57600080fd5b505afa158015614a40573d6000803e3d6000fd5b505050506040513d6020811015614a5657600080fd5b505190506000614a668386614ef5565b9050614a706156cb565b60008311614a8d5760405180602001604052806000815250614a97565b614a978284615308565b9050614aa16156cb565b604080516020810190915288546001600160e01b03168152614ac3908361533d565b90506040518060400160405280614b1383600001516040518060400160405280601a81526020017f6e657720696e6465782065786365656473203232342062697473000000000000815250615362565b6001600160e01b03168152602001614b60886040518060400160405280601c81526020017f626c6f636b206e756d62657220657863656564732033322062697473000000008152506153fc565b63ffffffff9081169091526001600160a01b038b166000908152601060209081526040909120835181549490920151909216600160e01b026001600160e01b039182166001600160e01b03199094169390931716919091179055506116d992505050565b80156116d957614c09826040518060400160405280601c81526020017f626c6f636b206e756d62657220657863656564732033322062697473000000008152506153fc565b845463ffffffff91909116600160e01b026001600160e01b039091161784555050505050565b6001600160a01b0382166000908152601060205260409020614c4f6156cb565b50604080516020810190915281546001600160e01b03168152614c706156cb565b5060408051602080820183526001600160a01b03808816600090815260128352848120918816808252828452948120805485528651959091529152919091558051158015614cbe5750815115155b15614cd6576ec097ce7bc90715b34b9f100000000081525b614cde6156cb565b614ce88383615452565b90506000866001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614d4257600080fd5b505afa158015614d56573d6000803e3d6000fd5b505050506040513d6020811015614d6c57600080fd5b505190506000614d7c8284615477565b6001600160a01b03881660009081526014602052604081205491925090614da39083614f37565b6001600160a01b03808a166000818152601460209081526040918290208590558a5182518881529182015281519495509193928d16927f2caecd17d02f56fa897705dcc740da2d237c373f70686f4e0d9bd3bf0400ea7a9281900390910190a3505050505050505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0836011811115614e3d57fe5b836013811115614e4957fe5b604080519283526020830191909152600082820152519081900360600190a1826011811115611af157fe5b6000806000614e87846000806000614655565b9250925092509193909250565b6000614e9e6156cb565b614ea884846154ce565b90506117ae816154ef565b6000611af183836040518060400160405280601581526020017f7375627472616374696f6e20756e646572666c6f7700000000000000000000008152506154fe565b6000611af183836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250615558565b6000611af183836040518060400160405280601181526020017f6164646974696f6e206f766572666c6f770000000000000000000000000000008152506155d7565b60005b600d5481101561500d57816001600160a01b0316600d8281548110614f9d57fe5b6000918252602090912001546001600160a01b03161415615005576040805162461bcd60e51b815260206004820152601460248201527f6d61726b657420616c7265616479206164646564000000000000000000000000604482015290519081900360640190fd5b600101614f7c565b50600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831660009081526009602052604081205460ff16615087576009611edd565b6001600160a01b038085166000908152600960209081526040808320938716835260029093019052205460ff166150bf576000611edd565b6000806150cf8587866000614655565b919350909150600090508260118111156150e557fe5b146150ff578160118111156150f657fe5b92505050611af1565b801561332c5760046150f6565b6001600160a01b0382166000908152600960205260408120805460ff166151375760099150506114f8565b6001600160a01b038316600090815260028201602052604090205460ff161515600114156151695760009150506114f8565b6001600160a01b0380841660008181526002840160209081526040808320805460ff19166001908117909155600883528184208054918201815584529282902090920180549489166001600160a01b031990951685179055815193845283019190915280517f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59281900390910190a15060009392505050565b61520a6156cb565b6040518060200160405280670de0b6b3a764000061523086600001518660000151614ef5565b8161523757fe5b0490529392505050565b6152496156cb565b604051806020016040528061527461526d8660000151670de0b6b3a7640000614ef5565b855161562c565b90529392505050565b5190511090565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa08460118111156152b357fe5b8460138111156152bf57fe5b604080519283526020830191909152818101859052519081900360600190a18360118111156117ae57fe5b6000611af161530184670de0b6b3a7640000614ef5565b835161562c565b6153106156cb565b6040518060200160405280615274615337866ec097ce7bc90715b34b9f1000000000614ef5565b8561562c565b6153456156cb565b604051806020016040528061527485600001518560000151614f37565b600081600160e01b84106153f45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156153b95781810151838201526020016153a1565b50505050905090810190601f1680156153e65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b60008164010000000084106153f45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156153b95781810151838201526020016153a1565b61545a6156cb565b604051806020016040528061527485600001518560000151614eb3565b60006ec097ce7bc90715b34b9f1000000000615497848460000151614ef5565b8161549e57fe5b049392505050565b60006154b06156cb565b6154ba85856154ce565b90506123926154c8826154ef565b84614f37565b6154d66156cb565b6040518060200160405280615274856000015185614ef5565b51670de0b6b3a7640000900490565b600081848411156155505760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156153b95781810151838201526020016153a1565b505050900390565b6000831580615565575082155b1561557257506000611af1565b8383028385828161557f57fe5b041483906155ce5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156153b95781810151838201526020016153a1565b50949350505050565b600083830182858210156155ce5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156153b95781810151838201526020016153a1565b6000611af183836040518060400160405280600e81526020017f646976696465206279207a65726f000000000000000000000000000000000000815250600081836156b85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156153b95781810151838201526020016153a1565b508284816156c257fe5b04949350505050565b6040518060200160405280600081525090565b81548183558181111561155b5760008381526020902061155b91810190830161576c565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016157406156cb565b815260200161574d6156cb565b815260200161575a6156cb565b81526020016157676156cb565b905290565b611d8891905b808211156157865760008155600101615772565b509056fe63616e6e6f742070617573652061206d61726b65742074686174206973206e6f74206c69737465646f6e6c7920706175736520677561726469616e20616e642061646d696e2063616e2070617573656f6e6c792061646d696e2063616e2073657420626f72726f772063617020677561726469616e6f6e6c792061646d696e206f7220626f72726f772063617020677561726469616e2063616e2073657420626f72726f772063617073657869744d61726b65743a206765744163636f756e74536e617073686f74206661696c65646f6e6c7920756e6974726f6c6c65722061646d696e2063616e206368616e676520627261696e73a265627a7a7231582023a6040adffe25bbc07a448a9d8cc85918d15a8fa879fc6bef028890185d0db864736f6c63430005100032