57 txs
278 calls
constructor
constructor(address _gov, address _lender, address _pauseGuardian, address _escrowImplementation, address _dbr, address _collateral, address _oracle, uint256 _collateralFactorBps, uint256 _replenishmentIncentiveBps, uint256 _liquidationIncentiveBps, bool _callOnDepositCallback)
functions
borrowController
viewfunction borrowController() view returns (address)
borrowPaused
viewfunction borrowPaused() view returns (bool)
collateral
viewfunction collateral() view returns (address)
collateralFactorBps
viewfunction collateralFactorBps() view returns (uint256)
dbr
viewfunction dbr() view returns (address)
debts
viewfunction debts(address) view returns (uint256)
dola
viewfunction dola() view returns (address)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
escrowImplementation
viewfunction escrowImplementation() view returns (address)
escrows
viewfunction escrows(address) view returns (address)
getCollateralValue
viewfunction getCollateralValue(address user) view returns (uint256)
getCreditLimit
viewfunction getCreditLimit(address user) view returns (uint256)
getWithdrawalLimit
viewfunction getWithdrawalLimit(address user) view returns (uint256)
gov
viewfunction gov() view returns (address)
lender
viewfunction lender() view returns (address)
liquidationFactorBps
viewfunction liquidationFactorBps() view returns (uint256)
liquidationFeeBps
viewfunction liquidationFeeBps() view returns (uint256)
liquidationIncentiveBps
viewfunction liquidationIncentiveBps() view returns (uint256)
nonces
viewfunction nonces(address) view returns (uint256)
oracle
viewfunction oracle() view returns (address)
pauseGuardian
viewfunction pauseGuardian() view returns (address)
predictEscrow
viewfunction predictEscrow(address user) view returns (address predicted)
replenishmentIncentiveBps
viewfunction replenishmentIncentiveBps() view returns (uint256)
totalDebt
viewfunction totalDebt() view returns (uint256)
borrow
nonpayablefunction borrow(uint256 amount)
borrowOnBehalf
nonpayablefunction borrowOnBehalf(address from, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
deposit
nonpayablefunction deposit(address user, uint256 amount)
deposit
nonpayablefunction deposit(uint256 amount)
depositAndBorrow
nonpayablefunction depositAndBorrow(uint256 amountDeposit, uint256 amountBorrow)
forceReplenish
nonpayablefunction forceReplenish(address user, uint256 amount)
forceReplenishAll
nonpayablefunction forceReplenishAll(address user)
invalidateNonce
nonpayablefunction invalidateNonce()
liquidate
nonpayablefunction liquidate(address user, uint256 repaidDebt)
pauseBorrows
nonpayablefunction pauseBorrows(bool _value)
recall
nonpayablefunction recall(uint256 amount)
repay
nonpayablefunction repay(address user, uint256 amount)
repayAndWithdraw
nonpayablefunction repayAndWithdraw(uint256 repayAmount, uint256 withdrawAmount)
setBorrowController
nonpayablefunction setBorrowController(address _borrowController)
setCollateralFactorBps
nonpayablefunction setCollateralFactorBps(uint256 _collateralFactorBps)
setGov
nonpayablefunction setGov(address _gov)
setLender
nonpayablefunction setLender(address _lender)
setLiquidationFactorBps
nonpayablefunction setLiquidationFactorBps(uint256 _liquidationFactorBps)
setLiquidationFeeBps
nonpayablefunction setLiquidationFeeBps(uint256 _liquidationFeeBps)
setLiquidationIncentiveBps
nonpayablefunction setLiquidationIncentiveBps(uint256 _liquidationIncentiveBps)
setOracle
nonpayablefunction setOracle(address _oracle)
setPauseGuardian
nonpayablefunction setPauseGuardian(address _pauseGuardian)
setReplenismentIncentiveBps
nonpayablefunction setReplenismentIncentiveBps(uint256 _replenishmentIncentiveBps)
withdraw
nonpayablefunction withdraw(uint256 amount)
withdrawOnBehalf
nonpayablefunction withdrawOnBehalf(address from, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
events
Borrow
event Borrow(address indexed account, uint256 amount)
CreateEscrow
event CreateEscrow(address indexed user, address escrow)
Deposit
event Deposit(address indexed account, uint256 amount)
Liquidate
event Liquidate(address indexed account, address indexed liquidator, uint256 repaidDebt, uint256 liquidatorReward)
Repay
event Repay(address indexed account, address indexed repayer, uint256 amount)
Withdraw
event Withdraw(address indexed account, address indexed to, uint256 amount)
errors
No errors.
creation bytecode
0x61016060405273865377367054516e17014ccded1e7d814edc9ce460c0526113886009553480156200003057600080fd5b50604051620036cd380380620036cd8339810160408190526200005391620003a0565b6127108410620000aa5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420636f6c6c61746572616c20666163746f720000000000000060448201526064015b60405180910390fd5b600082118015620000bc575061271082105b6200010a5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c69717569646174696f6e20696e63656e746976650000006044820152606401620000a1565b6127108310620001745760405162461bcd60e51b815260206004820152602e60248201527f5265706c656e6973686d656e7420696e63656e74697665206d7573742062652060448201526d6c657373207468616e203130302560901b6064820152608401620000a1565b600080546001600160a01b03808e166001600160a01b031992831617909255600180548d8416908316179055600280548c841690831617905589821660805288821660a05287821660e0526004805492881692909116919091179055600584905560068390556007829055801515610100524661012052620002ac604080518082018252600a8152691110948813505492d15560b21b60209182015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f4fdd2304dc9d5c5a62691d8e7e6cf5fe56e23281f4652fb6b06b133c9c2b03b4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b610140526005541562000376576000600554600854612710620002d091906200049c565b600554620002e190612710620004b7565b620002ed9190620004d1565b620002f99190620004f3565b90508060075410620003745760405162461bcd60e51b815260206004820152603360248201527f4c69717569646174696f6e20706172616d20616c6c6f772070726f666974616260448201527f6c652073656c66206c69717569646174696f6e000000000000000000000000006064820152608401620000a1565b505b505050505050505050505062000516565b6001600160a01b03811681146200039d57600080fd5b50565b60008060008060008060008060008060006101608c8e031215620003c357600080fd5b8b51620003d08162000387565b60208d0151909b50620003e38162000387565b60408d0151909a50620003f68162000387565b60608d0151909950620004098162000387565b60808d01519098506200041c8162000387565b60a08d01519097506200042f8162000387565b60c08d0151909650620004428162000387565b8095505060e08c015193506101008c015192506101208c015191506101408c015180151581146200047257600080fd5b809150509295989b509295989b9093969950565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b257620004b262000486565b500190565b600082821015620004cc57620004cc62000486565b500390565b6000816000190483118215151615620004ee57620004ee62000486565b500290565b6000826200051157634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c05160e0516101005161012051610140516130c26200060b600039600061106101526000610f7b01526000611173015260008181610647015281816110f401528181611abd01528181611cae0152818161220901528181612a3901528181612b870152612cce01526000818161068a01528181610b0901528181611689015281816118e201528181611e3f015261271a0152600081816105e7015281816106ea01528181610a1701528181611346015281816114400152818161161801528181611dc10152818161269c015261285c0152600081816104430152818161129e0152612d3401526130c26000f3fe608060405234801561001057600080fd5b50600436106102bb5760003560e01c80637164695a11610182578063bcead63e116100e9578063d1220a3c116100a2578063e031a8241161007c578063e031a8241461067c578063ea0593e414610685578063ebc9b94d146106ac578063fc7b9c18146106bf57600080fd5b8063d1220a3c1461062f578063d8dfeb4514610642578063e00f0a991461066957600080fd5b8063bcead63e146105a9578063c5ebeaec146105bc578063c74e6d80146105cf578063c7ed69cd146105e2578063c801861914610609578063cfad57a21461061c57600080fd5b80638951b0541161013b5780638951b0541461052d57806397904e4214610540578063b6b55f2514610553578063b75061bb14610566578063bcb4bbea14610579578063bcbaf4871461059657600080fd5b80637164695a146104b85780637adbf973146104cb5780637d32e793146104de5780637dc0d1d0146104f15780637ecebe00146105045780637f5007ed1461052457600080fd5b80633e553756116102265780634ef64ee7116101df5780634ef64ee7146104655780635a57b46f14610478578063651afe83146104805780636f1c4839146104935780636f48fbb61461049c5780636f8dd24c146104af57600080fd5b80633e553756146103d357806346e368d4146103dc578063477230b2146103ef57806347e7ef241461041857806348bde20c1461042b5780634ca8ff5a1461043e57600080fd5b80632c333e25116102785780632c333e25146103515780632e1a7d4d146103725780632ecd4e7d1461038557806334734dd3146103a55780633525f591146103b85780633644e515146103cb57600080fd5b80630e81c403146102c057806312d43a51146102d55780631ef08b751461030557806322867d7814610318578063236331e91461032b57806324a3d6221461033e575b600080fd5b6102d36102ce366004612e32565b6106c8565b005b6000546102e8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102d3610313366004612e4f565b610767565b6102d3610326366004612eb1565b610945565b6102d3610339366004612e32565b610bcb565b6002546102e8906001600160a01b031681565b61036461035f366004612e32565b610c17565b6040519081526020016102fc565b6102d3610380366004612edd565b610c47565b610364610393366004612e32565b600d6020526000908152604090205481565b6102d36103b3366004612edd565b610c55565b6102d36103c6366004612e4f565b610da7565b610364610f77565b61036460065481565b6102d36103ea366004612e32565b611083565b6102e86103fd366004612e32565b600c602052600090815260409020546001600160a01b031681565b6102d3610426366004612eb1565b6110cf565b6102d3610439366004612e32565b611233565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6102e8610473366004612e32565b61127f565b6102d3611302565b6102d361048e366004612eb1565b611324565b61036460095481565b6102d36104aa366004612edd565b611705565b61036460075481565b6102d36104c6366004612edd565b611791565b6102d36104d9366004612e32565b61182c565b6102d36104ec366004612edd565b611878565b6004546102e8906001600160a01b031681565b610364610512366004612e32565b600e6020526000908152604090205481565b61036460055481565b6102d361053b366004612edd565b61195c565b61036461054e366004612e32565b611a12565b6102d3610561366004612edd565b611b42565b6102d3610574366004612ef6565b611b4c565b600a546105869060ff1681565b60405190151581526020016102fc565b6102d36105a4366004612eb1565b611b5e565b6001546102e8906001600160a01b031681565b6102d36105ca366004612edd565b61210a565b6103646105dd366004612e32565b612115565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6102d3610617366004612f26565b6122cd565b6102d361062a366004612e32565b6123c8565b6102d361063d366004612edd565b612414565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6003546102e8906001600160a01b031681565b61036460085481565b6102e87f000000000000000000000000000000000000000000000000000000000000000081565b6102d36106ba366004612ef6565b6124a1565b610364600b5481565b604051630d9167c160e21b81526001600160a01b0382811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906336459f0490602401602060405180830381865afa158015610733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107579190612f43565b90506107638282611324565b5050565b428410156107af5760405162461bcd60e51b815260206004820152601060248201526f111150511312539157d156141254915160821b60448201526064015b60405180910390fd5b600060016107bb610f77565b6001600160a01b0389166000818152600e602090815260409182902080546001810190915582517f1f0bc49e000c018ca72680800f3b2f7ce61e76471cce3756387071d004b0eee98184015233818501526060810194909452608084018c905260a084015260c08084018b90528251808503909101815260e08401909252815191012061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156108be573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906108f45750866001600160a01b0316816001600160a01b0316145b6109315760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016107a6565b61093c8733886124b4565b50505050505050565b6001600160a01b0382166000908152600d60205260409020546001820161096a578091505b818110156109ba5760405162461bcd60e51b815260206004820152601b60248201527f52657061796d656e742067726561746572207468616e2064656274000000000060448201526064016107a6565b6001600160a01b0383166000908152600d6020526040812080548492906109e2908490612f72565b9250508190555081600b60008282546109fb9190612f72565b9091555050604051631b1a58c960e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d8d2c64890610a4e9086908690600401612f89565b600060405180830381600087803b158015610a6857600080fd5b505af1158015610a7c573d6000803e3d6000fd5b50506003546001600160a01b0316159150610af290505760035460405163081e664160e01b8152600481018490526001600160a01b039091169063081e664190602401600060405180830381600087803b158015610ad957600080fd5b505af1158015610aed573d6000803e3d6000fd5b505050505b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610b4290339030908790600401612fa2565b6020604051808303816000875af1158015610b61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b859190612fc6565b5060405182815233906001600160a01b038516907f05f2eeda0e08e4b437f487c8d7d29b14537d15e3488170dc3de5dbdf8dac46849060200160405180910390a3505050565b6000546001600160a01b03163314610bf55760405162461bcd60e51b81526004016107a690612fe3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600080610c2383611a12565b905061271060055482610c36919061301a565b610c409190613039565b9392505050565b610c523333836127e0565b50565b6000546001600160a01b03163314610c7f5760405162461bcd60e51b81526004016107a690612fe3565b600081118015610c9d575061271060085482610c9b919061305b565b105b610ce95760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c69717569646174696f6e20696e63656e7469766500000060448201526064016107a6565b600781905560055415610c52576000600554600854612710610d0b919061305b565b600554610d1a90612710612f72565b610d24919061301a565b610d2e9190613039565b905080600754106107635760405162461bcd60e51b815260206004820152603760248201527f4e6577206c69717569646174696f6e20706172616d20616c6c6f772070726f6660448201527f697461626c652073656c66206c69717569646174696f6e00000000000000000060648201526084016107a6565b42841015610dea5760405162461bcd60e51b815260206004820152601060248201526f111150511312539157d156141254915160821b60448201526064016107a6565b60006001610df6610f77565b6001600160a01b0389166000818152600e602090815260409182902080546001810190915582517f7dbda1635348f4206be1d85078da9f4a74703081e4fa6e174f3fd066c56189658184015233818501526060810194909452608084018c905260a084015260c08084018b90528251808503909101815260e08401909252815191012061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610ef9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610f2f5750866001600160a01b0316816001600160a01b0316145b610f6c5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016107a6565b61093c8733886127e0565b60007f0000000000000000000000000000000000000000000000000000000000000000461461105e5750604080518082018252600a8152691110948813505492d15560b21b60209182015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f4fdd2304dc9d5c5a62691d8e7e6cf5fe56e23281f4652fb6b06b133c9c2b03b4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000546001600160a01b031633146110ad5760405162461bcd60e51b81526004016107a690612fe3565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006110da836129d6565b6040516323b872dd60e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061112d90339085908790600401612fa2565b6020604051808303816000875af115801561114c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111709190612fc6565b507f0000000000000000000000000000000000000000000000000000000000000000156111eb57806001600160a01b03166312c93f596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156111d257600080fd5b505af11580156111e6573d6000803e3d6000fd5b505050505b826001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c8360405161122691815260200190565b60405180910390a2505050565b6000546001600160a01b0316331461125d5760405162461bcd60e51b81526004016107a690612fe3565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81527f0000000000000000000000000000000000000000000000000000000000000000606090811b60148301526f5af43d82803e903d91602b57fd5bf3ff60801b602883015230901b6038820152604c8101919091526037808220606c830152605591012090565b336000908152600e6020526040812080549161131d83613073565b9190505550565b604051630d9167c160e21b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906336459f0490602401602060405180830381865afa15801561138f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b39190612f43565b9050600081116113f65760405162461bcd60e51b815260206004820152600e60248201526d139bc8111094881919599a58da5d60921b60448201526064016107a6565b818110156114395760405162461bcd60e51b815260206004820152601060248201526f105b5bdd5b9d080f881919599a58da5d60821b60448201526064016107a6565b60006127107f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a10f84cb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190612f43565b6114ca908561301a565b6114d49190613039565b90506000612710600654836114e9919061301a565b6114f39190613039565b6001600160a01b0386166000908152600d602052604081208054929350849290919061152090849061305b565b90915550506008546007546000916127109161153c9083612f72565b6115469190612f72565b61154f88612adc565b611559919061301a565b6115639190613039565b6001600160a01b0387166000908152600d60205260409020549091508110156115ce5760405162461bcd60e51b815260206004820152601960248201527f457863656564656420636f6c6c61746572616c2076616c75650000000000000060448201526064016107a6565b82600b60008282546115e0919061305b565b909155505060405163b2c0877560e01b81526001600160a01b03878116600483015233602483015260448201879052606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b2c0877590608401600060405180830381600087803b15801561165c57600080fd5b505af1158015611670573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506116c29033908690600401612f89565b6020604051808303816000875af11580156116e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612fc6565b6000546001600160a01b0316331461172f5760405162461bcd60e51b81526004016107a690612fe3565b600081118015611740575061271081105b61178c5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964207265706c656e6973686d656e7420696e63656e746976650060448201526064016107a6565b600655565b6000546001600160a01b031633146117bb5760405162461bcd60e51b81526004016107a690612fe3565b612710811061180c5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420636f6c6c61746572616c20666163746f720000000000000060448201526064016107a6565b60058190558015610c52576000600554600854612710610d0b919061305b565b6000546001600160a01b031633146118565760405162461bcd60e51b81526004016107a690612fe3565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146118cb5760405162461bcd60e51b815260206004820152601660248201527513db9b1e481b195b99195c8818d85b881c9958d85b1b60521b60448201526064016107a6565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906119199033908590600401612f89565b6020604051808303816000875af1158015611938573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107639190612fc6565b6000546001600160a01b031633146119865760405162461bcd60e51b81526004016107a690612fe3565b6000811180156119a45750612710600754826119a2919061305b565b105b6119f05760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206c69717569646174696f6e2066656500000000000000000060448201526064016107a6565b600881905560055415610c52576000600554600854612710610d0b919061305b565b600080611a1e8361127f565b90506000816001600160a01b031663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a849190612f43565b6004805460055460405163949c4fa360e01b8152939450670de0b6b3a7640000936001600160a01b039092169263949c4fa392611ae5927f000000000000000000000000000000000000000000000000000000000000000092909101612f89565b602060405180830381865afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190612f43565b611b30908361301a565b611b3a9190613039565b949350505050565b610c5233826110cf565b611b5582611b42565b6107638161210a565b60008111611bae5760405162461bcd60e51b815260206004820152601860248201527f4d75737420726570617920706f7369746976652064656274000000000000000060448201526064016107a6565b6001600160a01b0382166000908152600d602052604090205480611bd184612bce565b10611c155760405162461bcd60e51b8152602060048201526014602482015273557365722064656274206973206865616c74687960601b60448201526064016107a6565b61271060095482611c26919061301a565b611c309190613039565b821115611c7f5760405162461bcd60e51b815260206004820152601b60248201527f4578636565646564206c69717569646174696f6e20666163746f72000000000060448201526064016107a6565b6004805460055460405163449e815d60e01b81526000936001600160a01b039093169263449e815d92611cd4927f00000000000000000000000000000000000000000000000000000000000000009201612f89565b6020604051808303816000875af1158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d179190612f43565b9050600081611d2e85670de0b6b3a764000061301a565b611d389190613039565b905061271060075482611d4b919061301a565b611d559190613039565b611d5f908261305b565b6001600160a01b0386166000908152600d6020526040812080549293508692909190611d8c908490612f72565b9250508190555083600b6000828254611da59190612f72565b9091555050604051631b1a58c960e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d8d2c64890611df89088908890600401612f89565b600060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b50506040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506323b872dd9150611e7a90339030908990600401612fa2565b6020604051808303816000875af1158015611e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebd9190612fc6565b506000611ec98661127f565b604051636203b43b60e11b81529091506001600160a01b0382169063c407687690611efa9033908690600401612f89565b600060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50505050600060085411156120bc5760006127106008548588670de0b6b3a7640000611f54919061301a565b611f5e9190613039565b611f68919061301a565b611f729190613039565b90506000826001600160a01b031663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd89190612f43565b905081811061204c57600054604051636203b43b60e11b81526001600160a01b038581169263c40768769261201592909116908690600401612f89565b600060405180830381600087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506120b9565b80156120b957600054604051636203b43b60e11b81526001600160a01b038581169263c40768769261208692909116908590600401612f89565b600060405180830381600087803b1580156120a057600080fd5b505af11580156120b4573d6000803e3d6000fd5b505050505b50505b604080518681526020810184905233916001600160a01b038916917ff3fa0eaee8f258c23b013654df25d1527f98a5c7ccd5e951dd77caca400ef972910160405180910390a3505050505050565b610c523333836124b4565b6000806121218361127f565b90506000816001600160a01b031663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121879190612f43565b90508060000361219b575060009392505050565b6001600160a01b0384166000908152600d6020526040812054908190036121c457509392505050565b6005546000036121d957506000949350505050565b6005546004805460405163949c4fa360e01b8152600093926001600160a01b039092169163949c4fa391612231917f000000000000000000000000000000000000000000000000000000000000000091869101612f89565b602060405180830381865afa15801561224e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122729190612f43565b61228484670de0b6b3a764000061301a565b61228e9190613039565b61229a9061271061301a565b6122a49190613039565b90508083116122b95750600095945050505050565b6122c38184612f72565b9695505050505050565b801561235b576002546001600160a01b03163314806122f657506000546001600160a01b031633145b6123565760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c7920706175736520677561726469616e206f7220676f7665726e616e6360448201526a652063616e20706175736560a81b60648201526084016107a6565b6123b5565b6000546001600160a01b031633146123b55760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c7920676f7665726e616e63652063616e20756e7061757365000000000060448201526064016107a6565b600a805460ff1916911515919091179055565b6000546001600160a01b031633146123f25760405162461bcd60e51b81526004016107a690612fe3565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461243e5760405162461bcd60e51b81526004016107a690612fe3565b60008111801561245057506127108111155b61249c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964206c69717569646174696f6e20666163746f7200000000000060448201526064016107a6565b600955565b6124ab3383610945565b61076381610c47565b600a5460ff16156124fd5760405162461bcd60e51b8152602060048201526013602482015272109bdc9c9bddda5b99c81a5cc81c185d5cd959606a1b60448201526064016107a6565b6003546001600160a01b0316156125d15760035460405163368f515360e21b81526001600160a01b039091169063da3d454c9061254290339087908690600401612fa2565b6020604051808303816000875af1158015612561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125859190612fc6565b6125d15760405162461bcd60e51b815260206004820152601b60248201527f44656e69656420627920626f72726f7720636f6e74726f6c6c6572000000000060448201526064016107a6565b60006125dc84612bce565b6001600160a01b0385166000908152600d602052604081208054929350849290919061260990849061305b565b90915550506001600160a01b0384166000908152600d602052604090205481101561266e5760405162461bcd60e51b8152602060048201526015602482015274115e18d9595919590818dc99591a5d081b1a5b5a5d605a1b60448201526064016107a6565b81600b6000828254612680919061305b565b909155505060405163f7f11fb760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f7f11fb7906126d39087908690600401612f89565b600060405180830381600087803b1580156126ed57600080fd5b505af1158015612701573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506127539086908690600401612f89565b6020604051808303816000875af1158015612772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127969190612fc6565b50836001600160a01b03167fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a36750836040516127d291815260200190565b60405180910390a250505050565b60006127eb84612bda565b90508181101561283d5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e74207769746864726177616c206c696d697400000060448201526064016107a6565b604051630d9167c160e21b81526001600160a01b0385811660048301527f000000000000000000000000000000000000000000000000000000000000000016906336459f0490602401602060405180830381865afa1580156128a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c79190612f43565b156129145760405162461bcd60e51b815260206004820152601f60248201527f43616e277420776974686472617720776974682044425220646566696369740060448201526064016107a6565b600061291f856129d6565b604051636203b43b60e11b81529091506001600160a01b0382169063c4076876906129509087908790600401612f89565b600060405180830381600087803b15801561296a57600080fd5b505af115801561297e573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb856040516129c791815260200190565b60405180910390a35050505050565b6001600160a01b038181166000908152600c602052604081205490911615612a1757506001600160a01b039081166000908152600c60205260409020541690565b6000612a2283612d15565b60405163485cc95560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015285811660248301529192509082169063485cc95590604401600060405180830381600087803b158015612a9157600080fd5b505af1158015612aa5573d6000803e3d6000fd5b505050506001600160a01b039283166000908152600c6020526040902080546001600160a01b031916938216939093179092555090565b600080612ae88361127f565b90506000816001600160a01b031663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4e9190612f43565b6004805460055460405163449e815d60e01b8152939450670de0b6b3a7640000936001600160a01b039092169263449e815d92612baf927f000000000000000000000000000000000000000000000000000000000000000092909101612f89565b6020604051808303816000875af1158015611b02573d6000803e3d6000fd5b600080610c2383612adc565b600080612be68361127f565b90506000816001600160a01b031663b69ef8a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4c9190612f43565b905080600003612c60575060009392505050565b6001600160a01b0384166000908152600d602052604081205490819003612c8957509392505050565b600554600003612c9e57506000949350505050565b6005546004805460405163449e815d60e01b8152600093926001600160a01b039092169163449e815d91612cf6917f000000000000000000000000000000000000000000000000000000000000000091869101612f89565b6020604051808303816000875af115801561224e573d6000803e3d6000fd5b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81527f0000000000000000000000000000000000000000000000000000000000000000606081901b60148301526e5af43d82803e903d91602b57fd5bf360881b60288301526000918360378285f59250506001600160a01b038216612dd75760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016107a6565b6040516001600160a01b0383811682528416907f1cfd6e6fe6d92716198ef80381fd40e4338b9a461cc4fc235c51b152f7f830159060200160405180910390a250919050565b6001600160a01b0381168114610c5257600080fd5b600060208284031215612e4457600080fd5b8135610c4081612e1d565b60008060008060008060c08789031215612e6857600080fd5b8635612e7381612e1d565b95506020870135945060408701359350606087013560ff81168114612e9757600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215612ec457600080fd5b8235612ecf81612e1d565b946020939093013593505050565b600060208284031215612eef57600080fd5b5035919050565b60008060408385031215612f0957600080fd5b50508035926020909101359150565b8015158114610c5257600080fd5b600060208284031215612f3857600080fd5b8135610c4081612f18565b600060208284031215612f5557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082821015612f8457612f84612f5c565b500390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215612fd857600080fd5b8151610c4081612f18565b6020808252601f908201527f4f6e6c7920676f762063616e2063616c6c20746869732066756e6374696f6e00604082015260600190565b600081600019048311821515161561303457613034612f5c565b500290565b60008261305657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561306e5761306e612f5c565b500190565b60006001820161308557613085612f5c565b506001019056fea2646970667358221220fdc33928d89e3c6803f662a349bdcc537c9a4b1b6dc9e58a68074748bc89730d64736f6c634300080d0033000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b0000000000000000000000002b34548b865ad66a2b046cb82e59ee43f75b90fd000000000000000000000000e3ed95e130ad9e15643f5a5f232a3dae980784cd000000000000000000000000c06053fcad0a0df7cc32289a135bbea9030c010f000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d710000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000abe146cf570fd27ddd985895ce9b138a7110cce80000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000000