4 txs
5 calls
constructor
constructor(address[] _executors, address _wnative, address _supplyAddress, address _borrowAddress, uint256 _minHealthFactor, address _lendingPool, address _priceOracle, address _protocolDataProvider, address _rewardsController)
functions
balanceOf
viewfunction balanceOf(address _asset_address, address _account) view returns (uint256)
emodeCategory
viewfunction emodeCategory() view returns (uint8)
executors
viewfunction executors(address) view returns (bool)
getBorrow
viewfunction getBorrow() view returns (uint256 borrowed)
getBorrowAsBase
viewfunction getBorrowAsBase() view returns (uint256 borrowAsBase)
getBorrowRate
viewfunction getBorrowRate() view returns (uint256 borrowRate)
getConfig
viewfunction getConfig() view returns (tuple config)
getHealthFactor
viewfunction getHealthFactor() view returns (uint256 healthFactor)
getLiquidationThreshold
viewfunction getLiquidationThreshold(address _collateral) view returns (uint256)
getLiquidityAndShortFall
viewfunction getLiquidityAndShortFall() view returns (uint256 liquidity, uint256 shortfall)
getLiquidityAndShortFallAsBase
viewfunction getLiquidityAndShortFallAsBase() view returns (uint256 liquidity, uint256 shortfall)
getMarketsData
viewfunction getMarketsData() view returns (uint256 supplyMarketDeposits, uint256 supplyMarketDebt, uint256 supplyMarketAssetPrice, uint256 borrowMarketDeposits, uint256 borrowMarketDebt, uint256 borrowMarketAssetPrice)
getPositionDataSnapshot
viewfunction getPositionDataSnapshot() view returns (uint256 healthFactor, uint256 liquidity, uint256 shortfall, uint256 supplied, uint256 borrowed, uint256 supplyRate, uint256 borrowRate)
getPrices
viewfunction getPrices() view returns (uint256 supplyTokenPrice, uint256 borrowTokenPrice)
getSupply
viewfunction getSupply() view returns (uint256 supplied)
getSupplyAsBase
viewfunction getSupplyAsBase() view returns (uint256 supplyAsBase)
getSupplyRate
viewfunction getSupplyRate() view returns (uint256 supplyRate)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
WNATIVE
viewfunction WNATIVE() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addExecutor
nonpayablefunction addExecutor(address _executor)
approveToken
nonpayablefunction approveToken(address _token, address _guy, uint256 _wad)
batchExecute
payablefunction batchExecute(address[] _tos, uint256[] _values, bytes[] _datas) payable
borrow
nonpayablefunction borrow(uint256 _amount)
claimRewards
nonpayablefunction claimRewards() returns (address[] claimedTokens, uint256[] claimedAmounts)
claimRewards
nonpayablefunction claimRewards(address, uint256) returns (uint256)
deposit
nonpayablefunction deposit(address, uint256 _amount)
disableCollateral
nonpayablefunction disableCollateral()
enableCollateral
nonpayablefunction enableCollateral()
execute
payablefunction execute(address _to, uint256 _value, bytes _data) payable
removeExecutor
nonpayablefunction removeExecutor(address _executor)
renounceOwnership
nonpayablefunction renounceOwnership()
repay
nonpayablefunction repay(uint256 _amount)
repayAll
nonpayablefunction repayAll()
repayAllAndWithdrawSupplyAll
nonpayablefunction repayAllAndWithdrawSupplyAll() returns (uint256 amountWithdrawn)
revokeToken
nonpayablefunction revokeToken(address _token, address _guy)
setConfig
nonpayablefunction setConfig(address _supplyAddress, address _borrowAddress, uint256 _minHealthFactor, uint8 _emode_category)
setConfig
nonpayablefunction setConfig(address _supplyAddress, address _borrowAddress, uint256 _minHealthFactor)
setEMode
nonpayablefunction setEMode()
supply
nonpayablefunction supply(uint256 _amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unwrapNative
nonpayablefunction unwrapNative(uint256 _amount)
updateLendingPool
nonpayablefunction updateLendingPool(address _address)
updatePriceOracle
nonpayablefunction updatePriceOracle(address _address)
updateProtocolDataProvider
nonpayablefunction updateProtocolDataProvider(address _address)
updateRewardsController
nonpayablefunction updateRewardsController(address _address)
withdraw
nonpayablefunction withdraw(address _asset_address, uint256 _amount)
withdrawAll
nonpayablefunction withdrawAll(address _asset_address)
withdrawAllTo
nonpayablefunction withdrawAllTo(address _asset_address, address _to)
withdrawSupply
nonpayablefunction withdrawSupply(uint256 _amount)
withdrawSupplyAll
nonpayablefunction withdrawSupplyAll()
withdrawTo
nonpayablefunction withdrawTo(address _asset_address, uint256 _amount, address _to)
wrapNative
nonpayablefunction wrapNative(uint256 _amount)
events
ApproveToken
event ApproveToken(address indexed token, address guy, uint256 wad)
ClaimRewards
event ClaimRewards(address[] claimedTokens, uint256[] claimedAmounts)
DisableCollateral
event DisableCollateral(address supplyToken)
EnableCollateral
event EnableCollateral(address supplyToken)
ExecutorUpdated
event ExecutorUpdated(address indexed executor, bool enabled)
LogWithdraw
event LogWithdraw(address indexed _to, address indexed _asset_address, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SetEMode
event SetEMode(uint8 emode_category)
SnapshotUpdate
event SnapshotUpdate(uint8 indexed action, uint256 amount, address executor, address supplyToken, address borrowToken, uint256 totalSupplied, uint256 totalDebt)
UpdateEModeCategory
event UpdateEModeCategory(uint8 emode_category)
UpdateLendingPool
event UpdateLendingPool(address oldPool, address newPool)
UpdateLoanConfig
event UpdateLoanConfig((address supplyAddress, address borrowAddress, uint256 minHealthFactor) oldConfig, (address supplyAddress, address borrowAddress, uint256 minHealthFactor) newConfig)
UpdatePriceOracle
event UpdatePriceOracle(address oldOracle, address newOracle)
UpdateProtocolDataProvider
event UpdateProtocolDataProvider(address oldProvider, address newProvider)
UpdateRewardsController
event UpdateRewardsController(address oldController, address newController)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a06040523480156200001157600080fd5b506040516200407738038062004077833981016040819052620000349162000506565b88888888888888888888888133806200006857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000738162000123565b5060005b8151811015620000c357620000ae8282815181106200009a576200009a6200066a565b60200260200101516200014160201b60201c565b80620000ba8162000680565b91505062000077565b50506001600160a01b031660805250620000df878787620001ae565b620000ea8462000286565b620000f583620002f9565b62000100826200036c565b6200010b81620003df565b505050505050505050505050505050505050620006a8565b600180546001600160a01b03191690556200013e8162000452565b50565b6200014b620004a2565b604051600181526001600160a01b038216907f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea29060200160405180910390a26001600160a01b03166000908152600260205260409020805460ff19166001179055565b620001b8620004a2565b60408051606080820183526001600160a01b038681168352858116602080850191825284860187815286516007548516815260085485169281019290925260095496820196909652845183169381019390935251166080820152915160a0830152907f5c3e76e88db066780deaf8690f603a580b3254893e1e188bd3ce4f9ae1dc4c3f9060c00160405180910390a18051600780546001600160a01b039283166001600160a01b03199182161790915560208301516008805491909316911617905560400151600955505050565b62000290620004a2565b600454604080516001600160a01b03928316815291831660208301527f4f2328eba313841d245841fd4c1c80ecf36e9102ca4a5f8e9c663fd470ad08a2910160405180910390a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b62000303620004a2565b600354604080516001600160a01b03928316815291831660208301527ff3920b145a63851522088bd18b14d6bb919fbd12ac87f12498d6001c727ba070910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b62000376620004a2565b600554604080516001600160a01b03928316815291831660208301527f4a9f6afb8ebccedd27b079bb7eb7671558dabc522819eb7c603e06fbec786833910160405180910390a1600580546001600160a01b0319166001600160a01b0392909216919091179055565b620003e9620004a2565b600654604080516001600160a01b03928316815291831660208301527f495515279f4af7982f79035bbefde974a37f2be9a86595cdeb73385e0efe9eee910160405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620004d15760405163118cdaa760e01b81523360048201526024016200005f565b565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200050157600080fd5b919050565b60008060008060008060008060006101208a8c0312156200052657600080fd5b89516001600160401b03808211156200053e57600080fd5b818c0191508c601f8301126200055357600080fd5b815181811115620005685762000568620004d3565b8060051b604051601f19603f83011681018181108582111715620005905762000590620004d3565b6040529182526020808301935084820101918f831115620005b057600080fd5b6020850194505b82851015620005dd57620005cb85620004e9565b845260209485019490930192620005b7565b809d505050505050620005f360208b01620004e9565b97506200060360408b01620004e9565b96506200061360608b01620004e9565b955060808a015194506200062a60a08b01620004e9565b93506200063a60c08b01620004e9565b92506200064a60e08b01620004e9565b91506200065b6101008b01620004e9565b90509295985092959850929598565b634e487b7160e01b600052603260045260246000fd5b600060018201620006a157634e487b7160e01b600052601160045260246000fd5b5060010190565b6080516139a5620006d2600039600081816107b701528181610e0c01526116b501526139a56000f3fe6080604052600436106103395760003560e01c80639a99b4f0116101ab578063c5ebeaec116100f7578063f2fde38b11610095578063f7888aec1161006f578063f7888aec146109c6578063f8d3a4b8146109e6578063fa09e630146109fb578063fa3ae6dc14610a1b57600080fd5b8063f2fde38b14610966578063f3fef3a314610986578063f66c5f2a146109a657600080fd5b8063da3e3397116100d1578063da3e3397146108fe578063e30c39781461091e578063e38464f21461093c578063ee9af25d1461095157600080fd5b8063c5ebeaec146108b4578063ccbefbd5146108d4578063cf12fa29146108e957600080fd5b8063b381cf4011610164578063ba1c5e801161013e578063ba1c5e801461080c578063bd9a548b14610821578063c3f909d414610836578063c4e2c1e61461089457600080fd5b8063b381cf40146107a5578063b61d27f6146107d9578063b6703fcd146107ec57600080fd5b80639a99b4f0146106a75780639ac2a011146106c75780639b09dd62146107075780639c4480491461071c578063a5f352b714610746578063a9f3025e1461075b57600080fd5b80634603fd89116102855780637b86e42c116102235780638da5cb5b116101fd5780638da5cb5b14610615578063902835f6146106475780639169d833146106675780639504ad6d1461068757600080fd5b80637b86e42c146105b457806384bdc9a8146105d457806387ba901e146105e957600080fd5b8063578b92a61161025f578063578b92a6146105335780636c9c2faf14610575578063715018a61461058a57806379ba50971461059f57600080fd5b80634603fd89146104d057806347e7ef24146104f05780634a96689a1461051057600080fd5b806334b10a6d116102f2578063371fd8e6116102cc578063371fd8e61461044f578063372500ab1461046f57806339d1fc821461049b5780633a2c08a7146104bb57600080fd5b806334b10a6d146103ef578063354030231461040f578063371f30ca1461042f57600080fd5b8063077d97d7146103455780630b9b1f9a1461035a5780631f5a0bbe1461037a578063247884291461039a5780632ec8cd8c146103ba5780633419ba23146103cf57600080fd5b3661034057005b600080fd5b610358610353366004612e8f565b610a30565b005b34801561036657600080fd5b50610358610375366004612f3e565b610ba6565b34801561038657600080fd5b50610358610395366004612f3e565b610c17565b3480156103a657600080fd5b506103586103b5366004612f3e565b610c82565b3480156103c657600080fd5b50610358610cea565b3480156103db57600080fd5b506103586103ea366004612f5b565b610d8b565b3480156103fb57600080fd5b5061035861040a366004612f94565b610da3565b34801561041b57600080fd5b5061035861042a366004612f94565b610e74565b34801561043b57600080fd5b5061035861044a366004612fbc565b610efb565b34801561045b57600080fd5b5061035861046a366004612f94565b610f59565b34801561047b57600080fd5b50610484610fc0565b604051610492929190613053565b60405180910390f35b3480156104a757600080fd5b506103586104b6366004612f3e565b611186565b3480156104c757600080fd5b506103586111f7565b3480156104dc57600080fd5b506103586104eb366004612f3e565b6112b5565b3480156104fc57600080fd5b5061035861050b3660046130aa565b611326565b34801561051c57600080fd5b50610525611382565b604051908152602001610492565b34801561053f57600080fd5b50610548611454565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610492565b34801561058157600080fd5b50610525611486565b34801561059657600080fd5b506103586114b3565b3480156105ab57600080fd5b506103586114c5565b3480156105c057600080fd5b506105256105cf366004612f3e565b611506565b3480156105e057600080fd5b506105256115ac565b3480156105f557600080fd5b50600a546106039060ff1681565b60405160ff9091168152602001610492565b34801561062157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610492565b34801561065357600080fd5b506103586106623660046130d6565b6115bb565b34801561067357600080fd5b50610358610682366004612f94565b611660565b34801561069357600080fd5b506103586106a2366004612f94565b61172a565b3480156106b357600080fd5b506105256106c23660046130aa565b6117ba565b3480156106d357600080fd5b506106f76106e2366004612f3e565b60026020526000908152604090205460ff1681565b6040519015158152602001610492565b34801561071357600080fd5b50610358611841565b34801561072857600080fd5b506107316118f7565b60408051928352602083019190915201610492565b34801561075257600080fd5b506105256119d3565b34801561076757600080fd5b50610770611a4f565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610492565b3480156107b157600080fd5b5061062f7f000000000000000000000000000000000000000000000000000000000000000081565b6103586107e7366004613117565b611aa2565b3480156107f857600080fd5b50610358610807366004612f5b565b611b2f565b34801561081857600080fd5b50610525611b54565b34801561082d57600080fd5b50610731611b5e565b34801561084257600080fd5b5060408051606080820183526000808352602080840182905292840152825190810183526007546001600160a01b039081168252600854169181019190915260095481830152905161049291906131a0565b3480156108a057600080fd5b506103586108af3660046131cf565b611cbe565b3480156108c057600080fd5b506103586108cf366004612f94565b611cd1565b3480156108e057600080fd5b50610731611d38565b3480156108f557600080fd5b50610525611d7d565b34801561090a57600080fd5b506103586109193660046130d6565b611dfa565b34801561092a57600080fd5b506001546001600160a01b031661062f565b34801561094857600080fd5b50610525611e0d565b34801561095d57600080fd5b50610525611e8a565b34801561097257600080fd5b50610358610981366004612f3e565b611eb1565b34801561099257600080fd5b506103586109a13660046130aa565b611f22565b3480156109b257600080fd5b506103586109c1366004612f3e565b611f35565b3480156109d257600080fd5b506105256109e1366004612f5b565b611fa6565b3480156109f257600080fd5b50610358612014565b348015610a0757600080fd5b50610358610a16366004612f3e565b6120c2565b348015610a2757600080fd5b506103586120e2565b610a38612175565b8483148015610a4657508481145b610a975760405162461bcd60e51b815260206004820152601960248201527f417267756d656e7473206c656e677468206d69736d617463680000000000000060448201526064015b60405180910390fd5b60005b85811015610b9d57600080888884818110610ab757610ab7613211565b9050602002016020810190610acc9190612f3e565b6001600160a01b0316878785818110610ae757610ae7613211565b90506020020135868686818110610b0057610b00613211565b9050602002810190610b129190613227565b604051610b2092919061326e565b60006040518083038185875af1925050503d8060008114610b5d576040519150601f19603f3d011682016040523d82523d6000602084013e610b62565b606091505b5091509150818190610b875760405162461bcd60e51b8152600401610a8e919061327e565b5050508080610b95906132e2565b915050610a9a565b50505050505050565b610bae612175565b600454604080516001600160a01b03928316815291831660208301527f4f2328eba313841d245841fd4c1c80ecf36e9102ca4a5f8e9c663fd470ad08a2910160405180910390a1600480546001600160a01b0319166001600160a01b0392909216919091179055565b610c1f612175565b604051600181526001600160a01b038216907f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea29060200160405180910390a26001600160a01b03166000908152600260205260409020805460ff19166001179055565b610c8a612175565b604051600081526001600160a01b038216907f9fdbc2d48b8a0db2f62663bf9312ad02f5b1f6414ad600b55a247d09aeec3ea29060200160405180910390a26001600160a01b03166000908152600260205260409020805460ff19169055565b33610cfd6000546001600160a01b031690565b6001600160a01b03161480610d2157503360009081526002602052604090205460ff165b610d3d5760405162461bcd60e51b8152600401610a8e906132fb565b6000610d47611486565b9050610d546000196121a2565b610d5f60038261222b565b50600954610d6b6119d3565b1015610d895760405162461bcd60e51b8152600401610a8e90613341565b565b610d93612175565b610d9f828260006122ca565b5050565b33610db66000546001600160a01b031690565b6001600160a01b03161480610dda57503360009081526002602052604090205460ff165b610df65760405162461bcd60e51b8152600401610a8e906132fb565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015b600060405180830381600087803b158015610e5957600080fd5b505af1158015610e6d573d6000803e3d6000fd5b5050505050565b33610e876000546001600160a01b031690565b6001600160a01b03161480610eab57503360009081526002602052604090205460ff165b610ec75760405162461bcd60e51b8152600401610a8e906132fb565b600754600454610ee4916001600160a01b039081169116836123a9565b610eed816123b5565b610ef860008261222b565b50565b610f03612175565b610f0e8484846115bb565b600a805460ff191660ff83169081179091556040519081527fb1075a43dcab7b1d3b05af43f1bba5f67e9dd2ed68c4bdfee0f83473e208448c9060200160405180910390a150505050565b33610f6c6000546001600160a01b031690565b6001600160a01b03161480610f9057503360009081526002602052604090205460ff165b610fac5760405162461bcd60e51b8152600401610a8e906132fb565b610fb581612406565b610ef860028261222b565b60608033610fd66000546001600160a01b031690565b6001600160a01b03161480610ffa57503360009081526002602052604090205460ff165b6110165760405162461bcd60e51b8152600401610a8e906132fb565b60408051600480825260a08201909252600091602082016080803683375050600754919250600091829150611053906001600160a01b0316612474565b9250509150818360008151811061106c5761106c613211565b60200260200101906001600160a01b031690816001600160a01b03168152505080836001815181106110a0576110a0613211565b6001600160a01b03928316602091820292909201015260085460009182916110c89116612474565b925050915081856002815181106110e1576110e1613211565b60200260200101906001600160a01b031690816001600160a01b031681525050808560038151811061111557611115613211565b60200260200101906001600160a01b031690816001600160a01b03168152505061113e856124f6565b60405191985096507ffaecd94ee6c58a110cb23850825a20cea2b79260d0ed1eacd9356c39618282bd906111759089908990613053565b60405180910390a150505050509091565b61118e612175565b600354604080516001600160a01b03928316815291831660208301527ff3920b145a63851522088bd18b14d6bb919fbd12ac87f12498d6001c727ba070910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b6111ff612175565b60048054600754604051635a3b74b960e01b81526001600160a01b0391821693810193909352600060248401521690635a3b74b990604401600060405180830381600087803b15801561125157600080fd5b505af1158015611265573d6000803e3d6000fd5b50506007546040516001600160a01b0390911681527fbe3bd67f54846f0ab016cb173a6b7bcdf9e06726594cf1a96faea16bf6d504809250602001905060405180910390a1600954610d6b6119d3565b6112bd612175565b600654604080516001600160a01b03928316815291831660208301527f495515279f4af7982f79035bbefde974a37f2be9a86595cdeb73385e0efe9eee910160405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b336113396000546001600160a01b031690565b6001600160a01b0316148061135d57503360009081526002602052604090205460ff165b6113795760405162461bcd60e51b8152600401610a8e906132fb565b610d9f81610e74565b6000336113976000546001600160a01b031690565b6001600160a01b031614806113bb57503360009081526002602052604090205460ff165b6113d75760405162461bcd60e51b8152600401610a8e906132fb565b6113df6120e2565b6007546000906113f7906001600160a01b0316612589565b9050611401610cea565b6007548190611418906001600160a01b0316612589565b611422919061338e565b9150506007600201546114336119d3565b10156114515760405162461bcd60e51b8152600401610a8e90613341565b90565b6000806000806000806114656125f4565b92985090965093509150611477611b5e565b96979596909593945091929050565b60075460009081906114a0906001600160a01b0316612474565b505090506114ad81612589565b91505090565b6114bb612175565b610d896000612750565b60015433906001600160a01b031681146114fd5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610a8e565b610ef881612750565b600554604051633e15014160e01b81526001600160a01b0383811660048301526000928392911690633e1501419060240161014060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157991906133b6565b505050505050509250505061271081670de0b6b3a764000061159b919061344d565b6115a59190613464565b9392505050565b60006115b6612769565b905090565b6115c3612175565b604080516060810182526001600160a01b0380861682528416602082015280820183905290517f5c3e76e88db066780deaf8690f603a580b3254893e1e188bd3ce4f9ae1dc4c3f90611619906007908490613486565b60405180910390a18051600780546001600160a01b039283166001600160a01b03199182161790915560208301516008805491909316911617905560400151600955505050565b336116736000546001600160a01b031690565b6001600160a01b0316148061169757503360009081526002602052604090205460ff165b6116b35760405162461bcd60e51b8152600401610a8e906132fb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561170e57600080fd5b505af1158015611722573d6000803e3d6000fd5b505050505050565b3361173d6000546001600160a01b031690565b6001600160a01b0316148061176157503360009081526002602052604090205460ff165b61177d5760405162461bcd60e51b8152600401610a8e906132fb565b611786816121a2565b61179160038261222b565b60095461179c6119d3565b1015610ef85760405162461bcd60e51b8152600401610a8e90613341565b6000336117cf6000546001600160a01b031690565b6001600160a01b031614806117f357503360009081526002602052604090205460ff165b61180f5760405162461bcd60e51b8152600401610a8e906132fb565b6000611819610fc0565b9150508060008151811061182f5761182f613211565b60200260200101519150505b92915050565b611849612175565b60048054600754604051635a3b74b960e01b81526001600160a01b0391821693810193909352600160248401521690635a3b74b990604401600060405180830381600087803b15801561189b57600080fd5b505af11580156118af573d6000803e3d6000fd5b50506007546040516001600160a01b0390911681527fb25c8f95d34cadb2b40b681c17a8ebf748aa066c29e956ad46457fac2a0cb4c6925060200190505b60405180910390a1565b60048054604051632fe4a15f60e21b8152309281019290925260009182918291829182916001600160a01b039091169063bf92857c9060240160c060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197191906134dd565b5094505050925092506000612710828561198b919061344d565b6119959190613464565b90508281116119a55760006119af565b6119af838261338e565b95508281106119bf5760006119c9565b6119c9818461338e565b9450505050509091565b60048054604051632fe4a15f60e21b815230928101929092526000916001600160a01b039091169063bf92857c9060240160c060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4591906134dd565b9695505050505050565b6000806000806000806000611a626119d3565b9650611a6c611d38565b9096509450611a79611486565b9350611a83611e8a565b9250611a8d6115ac565b9150611a97611b54565b905090919293949596565b611aaa612175565b600080856001600160a01b0316858585604051611ac892919061326e565b60006040518083038185875af1925050503d8060008114611b05576040519150601f19603f3d011682016040523d82523d6000602084013e611b0a565b606091505b5091509150818190610b9d5760405162461bcd60e51b8152600401610a8e919061327e565b611b37612175565b6000611b42836127fc565b9050611b4f838284612822565b505050565b60006115b66129da565b604080516002808252606082018352600092839283929091602083019080368337505060408051600280825260608201835293945060009390925090602083019080368337505060075484519293506001600160a01b031691849150600090611bc957611bc9613211565b6001600160a01b039283166020918202929092010152600854835191169083906001908110611bfa57611bfa613211565b6001600160a01b039283166020918202929092010152600354604051634e91ecf960e11b8152911690639d23d9f290611c37908590600401613527565b600060405180830381865afa158015611c54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c7c91908101906135fa565b905080600081518110611c9157611c91613211565b602002602001015181600181518110611cac57611cac613211565b60200260200101519350935050509091565b611cc6612175565b611b4f838383612822565b33611ce46000546001600160a01b031690565b6001600160a01b03161480611d0857503360009081526002602052604090205460ff165b611d245760405162461bcd60e51b8152600401610a8e906132fb565b611d2d81612a6d565b61179160018261222b565b600080611d436118f7565b6007549193509150611d5e906001600160a01b031683612ac5565b600854909250611d77906001600160a01b031682612ac5565b90509091565b60048054604051632fe4a15f60e21b815230928101929092526000916001600160a01b039091169063bf92857c9060240160c060405180830381865afa158015611dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611def91906134dd565b509395945050505050565b611e02612175565b611b4f8383836122ca565b60048054604051632fe4a15f60e21b815230928101929092526000916001600160a01b039091169063bf92857c9060240160c060405180830381865afa158015611e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7f91906134dd565b509295945050505050565b6008546000908190611ea4906001600160a01b0316612474565b925050506114ad81612589565b611eb9612175565b600180546001600160a01b0383166001600160a01b03199091168117909155611eea6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611f2a612175565b610d9f828233612822565b611f3d612175565b600554604080516001600160a01b03928316815291831660208301527f4a9f6afb8ebccedd27b079bb7eb7671558dabc522819eb7c603e06fbec786833910160405180910390a1600580546001600160a01b0319166001600160a01b0392909216919091179055565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190613637565b61201c612175565b6004546001600160a01b0316600a546040516328530a4760e01b815260ff90911660048201526001600160a01b0391909116906328530a4790602401600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b5050600a5460405160ff90911681527f5897b8586b1ccae5788603c723d10779309b62a3330f57991e0c52624587d501925060200190506118ed565b6120ca612175565b60006120d5826127fc565b9050610d9f828233612822565b336120f56000546001600160a01b031690565b6001600160a01b0316148061211957503360009081526002602052604090205460ff165b6121355760405162461bcd60e51b8152600401610a8e906132fb565b600061213f611e8a565b90508060000361214c5750565b612157600019612406565b600854600454610fb5916001600160a01b03908116911660006122ca565b6000546001600160a01b03163314610d895760405163118cdaa760e01b8152336004820152602401610a8e565b6004546001600160a01b0316600754604051631a4ca37b60e21b81526001600160a01b039182166004820152602481018490523060448201529116906369328dec906064015b6020604051808303816000875af1158015612207573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f9190613637565b81600381111561223d5761223d613650565b6007546008547f5352340a216a8b13edd0af33f2cc09f5a0cb11caf74b3a53379aacc1a139890e91849133916001600160a01b03908116911661227e611486565b612286611e8a565b604080519687526001600160a01b0395861660208801529385169386019390935292166060840152608083019190915260a082015260c00160405180910390a25050565b80156122e9576122e46001600160a01b0384168383612b52565b61235e565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af1158015612338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235c9190613666565b505b604080516001600160a01b038481168252602082018490528516917feded619173dbb378903f97d44ecec898a1c4876f445ae551e063113aef58b471910160405180910390a2505050565b611b4f83838384612c16565b6004546001600160a01b031660075460405163617ba03760e01b81526001600160a01b039182166004820152602481018490523060448201526000606482015291169063617ba03790608401610e3f565b600854600454612423916001600160a01b039081169116836123a9565b6004546001600160a01b031660085460405163573ade8160e01b81526001600160a01b039182166004820152602481018490526002604482015230606482015291169063573ade81906084016121e8565b6005546040516334924edb60e21b81526001600160a01b038381166004830152600092839283929091169063d2493b6c90602401606060405180830381865afa1580156124c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e99190613681565b9196909550909350915050565b60608061250b6006546001600160a01b031690565b6001600160a01b031663bb492bf584306040518363ffffffff1660e01b81526004016125389291906136c3565b6000604051808303816000875af1158015612557573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261257f91908101906136ed565b9094909350915050565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156125d0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183b9190613637565b60008060008060008060006126116005546001600160a01b031690565b6007546040516335ea6a7560e01b81526001600160a01b0391821660048201529116906335ea6a759060240161018060405180830381865afa15801561265b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267f91906137b2565b50505050505050945094509450505060008060006126a56005546001600160a01b031690565b6008546040516335ea6a7560e01b81526001600160a01b0391821660048201529116906335ea6a759060240161018060405180830381865afa1580156126ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271391906137b2565b5050505050505094509450945050508599508385612731919061384f565b98508297508082612742919061384f565b965050505050505090919293565b600180546001600160a01b0319169055610ef881612c9a565b600061277d6005546001600160a01b031690565b6007546040516335ea6a7560e01b81526001600160a01b0391821660048201529116906335ea6a759060240161018060405180830381865afa1580156127c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127eb91906137b2565b50949b9a5050505050505050505050565b60006001600160a01b0382161561281b5761281682612589565b61183b565b4792915050565b6001600160a01b03811661286a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610a8e565b6000612875846127fc565b9050828110156128bc5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610a8e565b6001600160a01b038416612973576000826001600160a01b03168460405160006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b505090508061296d5760405162461bcd60e51b815260206004820152601760248201527f4e6174697665207472616e73666572206661696c65642e0000000000000000006044820152606401610a8e565b50612987565b6129876001600160a01b0385168385612cea565b836001600160a01b0316826001600160a01b03167f9207361cc2a04b9c7a06691df1eb87c6a63957ae88bf01d0d18c81e3d1272099856040516129cc91815260200190565b60405180910390a350505050565b60006129ee6005546001600160a01b031690565b6008546040516335ea6a7560e01b81526001600160a01b0391821660048201529116906335ea6a759060240161018060405180830381865afa158015612a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5c91906137b2565b50939b9a5050505050505050505050565b6004546001600160a01b031660085460405163a415bcad60e01b81526001600160a01b03918216600482015260248101849052600260448201526000606482015230608482015291169063a415bcad9060a401610e3f565b60035460405163b3596f0760e01b81526001600160a01b038481166004830152600092169063b3596f0790602401602060405180830381865afa158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b349190613637565b612b3d84612d1b565b612b4890600a613946565b61159b908461344d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ba38482612d88565b612c10576040516001600160a01b03848116602483015260006044830152612c0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612dd2565b612c108482612dd2565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b03848116602483015283919086169063dd62ed3e90604401602060405180830381865afa158015612c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c899190613637565b1015612c1057612c108484836122ca565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03838116602483015260448201839052611b4f91859182169063a9059cbb90606401612bd4565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7f9190613952565b60ff1692915050565b6000806000806020600086516020880160008a5af192503d91506000519050828015611a4557508115612dbe5780600114611a45565b50505050506001600160a01b03163b151590565b600080602060008451602086016000885af180612df5576040513d6000823e3d81fd5b50506000513d91508115612e0d578060011415612e1a565b6001600160a01b0384163b155b15612c1057604051635274afe760e01b81526001600160a01b0385166004820152602401610a8e565b60008083601f840112612e5557600080fd5b50813567ffffffffffffffff811115612e6d57600080fd5b6020830191508360208260051b8501011115612e8857600080fd5b9250929050565b60008060008060008060608789031215612ea857600080fd5b863567ffffffffffffffff80821115612ec057600080fd5b612ecc8a838b01612e43565b90985096506020890135915080821115612ee557600080fd5b612ef18a838b01612e43565b90965094506040890135915080821115612f0a57600080fd5b50612f1789828a01612e43565b979a9699509497509295939492505050565b6001600160a01b0381168114610ef857600080fd5b600060208284031215612f5057600080fd5b81356115a581612f29565b60008060408385031215612f6e57600080fd5b8235612f7981612f29565b91506020830135612f8981612f29565b809150509250929050565b600060208284031215612fa657600080fd5b5035919050565b60ff81168114610ef857600080fd5b60008060008060808587031215612fd257600080fd5b8435612fdd81612f29565b93506020850135612fed81612f29565b925060408501359150606085013561300481612fad565b939692955090935050565b600081518084526020808501945080840160005b838110156130485781516001600160a01b031687529582019590820190600101613023565b509495945050505050565b604081526000613066604083018561300f565b82810360208481019190915284518083528582019282019060005b8181101561309d57845183529383019391830191600101613081565b5090979650505050505050565b600080604083850312156130bd57600080fd5b82356130c881612f29565b946020939093013593505050565b6000806000606084860312156130eb57600080fd5b83356130f681612f29565b9250602084013561310681612f29565b929592945050506040919091013590565b6000806000806060858703121561312d57600080fd5b843561313881612f29565b935060208501359250604085013567ffffffffffffffff8082111561315c57600080fd5b818701915087601f83011261317057600080fd5b81358181111561317f57600080fd5b88602082850101111561319157600080fd5b95989497505060200194505050565b81516001600160a01b03908116825260208084015190911690820152604080830151908201526060810161183b565b6000806000606084860312156131e457600080fd5b83356131ef81612f29565b925060208401359150604084013561320681612f29565b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261323e57600080fd5b83018035915067ffffffffffffffff82111561325957600080fd5b602001915036819003821315612e8857600080fd5b8183823760009101908152919050565b600060208083528351808285015260005b818110156132ab5785810183015185820160400152820161328f565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052601160045260246000fd5b6000600182016132f4576132f46132cc565b5060010190565b60208082526026908201527f45786563757461626c653a2063616c6c6572206973206e6f742074686520657860408201526532b1baba37b960d11b606082015260800190565b6020808252601f908201527f44616e6765726f7573204865616c746820466163746f72207265616368656400604082015260600190565b634e487b7160e01b600052604160045260246000fd5b8181038181111561183b5761183b6132cc565b805180151581146133b157600080fd5b919050565b6000806000806000806000806000806101408b8d0312156133d657600080fd5b8a51995060208b0151985060408b0151975060608b0151965060808b0151955061340260a08c016133a1565b945061341060c08c016133a1565b935061341e60e08c016133a1565b925061342d6101008c016133a1565b915061343c6101208c016133a1565b90509295989b9194979a5092959850565b808202811582820484141761183b5761183b6132cc565b60008261348157634e487b7160e01b600052601260045260246000fd5b500490565b82546001600160a01b03908116825260018401541660208201526002830154604082015260c081016115a5606083018480516001600160a01b03908116835260208083015190911690830152604090810151910152565b60008060008060008060c087890312156134f657600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b6020815260006115a5602083018461300f565b604051601f8201601f1916810167ffffffffffffffff8111828210171561356357613563613378565b604052919050565b600067ffffffffffffffff82111561358557613585613378565b5060051b60200190565b600082601f8301126135a057600080fd5b815160206135b56135b08361356b565b61353a565b82815260059290921b840181019181810190868411156135d457600080fd5b8286015b848110156135ef57805183529183019183016135d8565b509695505050505050565b60006020828403121561360c57600080fd5b815167ffffffffffffffff81111561362357600080fd5b61362f8482850161358f565b949350505050565b60006020828403121561364957600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561367857600080fd5b6115a5826133a1565b60008060006060848603121561369657600080fd5b83516136a181612f29565b60208501519093506136b281612f29565b604085015190925061320681612f29565b6040815260006136d6604083018561300f565b905060018060a01b03831660208301529392505050565b6000806040838503121561370057600080fd5b825167ffffffffffffffff8082111561371857600080fd5b818501915085601f83011261372c57600080fd5b8151602061373c6135b08361356b565b82815260059290921b8401810191818101908984111561375b57600080fd5b948201945b8386101561378257855161377381612f29565b82529482019490820190613760565b9188015191965090935050508082111561379b57600080fd5b506137a88582860161358f565b9150509250929050565b6000806000806000806000806000806000806101808d8f0312156137d557600080fd5b8c519b5060208d01519a5060408d0151995060608d0151985060808d0151975060a08d0151965060c08d0151955060e08d015194506101008d015193506101208d015192506101408d015191506101608d015164ffffffffff8116811461383b57600080fd5b809150509295989b509295989b509295989b565b8082018082111561183b5761183b6132cc565b600181815b8085111561389d578160001904821115613883576138836132cc565b8085161561389057918102915b93841c9390800290613867565b509250929050565b6000826138b45750600161183b565b816138c15750600061183b565b81600181146138d757600281146138e1576138fd565b600191505061183b565b60ff8411156138f2576138f26132cc565b50506001821b61183b565b5060208310610133831016604e8410600b8410161715613920575081810a61183b565b61392a8383613862565b806000190482111561393e5761393e6132cc565b029392505050565b60006115a583836138a5565b60006020828403121561396457600080fd5b81516115a581612fad56fea2646970667358221220a642a6a018f2ce4cc0030a40c490e92d995d808e22aaf2b795b5e274a4b5419b64736f6c634300081500330000000000000000000000000000000000000000000000000000000000000120000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c96de26018a54d51c097160568752c4e3bd6c364000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000e92596fd629000000000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e200000000000000000000000054586be62e3c3580375ae3723c145253060ca0c200000000000000000000000041393e5e337606dc3821075af65aee84d7688cbd0000000000000000000000008164cc65827dcfe994ab23944cbc90e0aa80bfcb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c50e8d02008d59a7f563b008ccc73327d893443a