6 txs
74 calls
constructor
constructor(address _addressProvider, address _underlyingToken, address _dieselAddress, address _interestRateModelAddress, uint256 _expectedLiquidityLimit)
functions
_cumulativeIndex_RAY
viewfunction _cumulativeIndex_RAY() view returns (uint256)
_expectedLiquidityLU
viewfunction _expectedLiquidityLU() view returns (uint256)
_timestampLU
viewfunction _timestampLU() view returns (uint256)
addressProvider
viewfunction addressProvider() view returns (address)
availableLiquidity
viewfunction availableLiquidity() view returns (uint256)
borrowAPY_RAY
viewfunction borrowAPY_RAY() view returns (uint256)
calcCumulativeIndexAtBorrowMore
viewfunction calcCumulativeIndexAtBorrowMore(uint256 amount, uint256 dAmount, uint256 cumulativeIndexAtOpen) view returns (uint256)
calcLinearCumulative_RAY
viewfunction calcLinearCumulative_RAY() view returns (uint256)
calcLinearIndex_RAY
purefunction calcLinearIndex_RAY(uint256 cumulativeIndex_RAY, uint256 currentBorrowRate_RAY, uint256 timeDifference) pure returns (uint256)
creditManagers
viewfunction creditManagers(uint256) view returns (address)
creditManagersCanBorrow
viewfunction creditManagersCanBorrow(address) view returns (bool)
creditManagersCanRepay
viewfunction creditManagersCanRepay(address) view returns (bool)
creditManagersCount
viewfunction creditManagersCount() view returns (uint256)
dieselToken
viewfunction dieselToken() view returns (address)
expectedLiquidity
viewfunction expectedLiquidity() view returns (uint256)
expectedLiquidityLimit
viewfunction expectedLiquidityLimit() view returns (uint256)
fromDiesel
viewfunction fromDiesel(uint256 amount) view returns (uint256)
getDieselRate_RAY
viewfunction getDieselRate_RAY() view returns (uint256)
interestRateModel
viewfunction interestRateModel() view returns (address)
paused
viewfunction paused() view returns (bool)
toDiesel
viewfunction toDiesel(uint256 amount) view returns (uint256)
totalBorrowed
viewfunction totalBorrowed() view returns (uint256)
treasuryAddress
viewfunction treasuryAddress() view returns (address)
underlyingToken
viewfunction underlyingToken() view returns (address)
version
viewfunction version() view returns (uint256)
withdrawFee
viewfunction withdrawFee() view returns (uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 amount, address onBehalfOf, uint256 referralCode)
connectCreditManager
nonpayablefunction connectCreditManager(address _creditManager)
forbidCreditManagerToBorrow
nonpayablefunction forbidCreditManagerToBorrow(address _creditManager)
lendCreditAccount
nonpayablefunction lendCreditAccount(uint256 borrowedAmount, address creditAccount)
pause
nonpayablefunction pause()
removeLiquidity
nonpayablefunction removeLiquidity(uint256 amount, address to) returns (uint256)
repayCreditAccount
nonpayablefunction repayCreditAccount(uint256 borrowedAmount, uint256 profit, uint256 loss)
setExpectedLiquidityLimit
nonpayablefunction setExpectedLiquidityLimit(uint256 newLimit)
setWithdrawFee
nonpayablefunction setWithdrawFee(uint256 fee)
unpause
nonpayablefunction unpause()
updateInterestRateModel
nonpayablefunction updateInterestRateModel(address _interestRateModel)
events
AddLiquidity
event AddLiquidity(address indexed sender, address indexed onBehalfOf, uint256 amount, uint256 referralCode)
Borrow
event Borrow(address indexed creditManager, address indexed creditAccount, uint256 amount)
BorrowForbidden
event BorrowForbidden(address indexed creditManager)
NewCreditManagerConnected
event NewCreditManagerConnected(address indexed creditManager)
NewExpectedLiquidityLimit
event NewExpectedLiquidityLimit(uint256 newLimit)
NewInterestRateModel
event NewInterestRateModel(address indexed newInterestRateModel)
NewWithdrawFee
event NewWithdrawFee(uint256 fee)
Paused
event Paused(address account)
RemoveLiquidity
event RemoveLiquidity(address indexed sender, address indexed to, uint256 amount)
Repay
event Repay(address indexed creditManager, uint256 borrowedAmount, uint256 profit, uint256 loss)
UncoveredLoss
event UncoveredLoss(address indexed creditManager, uint256 loss)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506040516200515a3803806200515a833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508460008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906200019c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200016057808201518184015260208101905062000143565b50505050905090810190601f1680156200018e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e457600080fd5b505afa158015620001f9573d6000803e3d6000fd5b505050506040513d60208110156200021057600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015620002d45750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156200030e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015620003485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000428576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620003ec578082015181840152602081019050620003cf565b50505050905090810190601f1680156200041a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166326c74fc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156200055557600080fd5b505afa1580156200056a573d6000803e3d6000fd5b505050506040513d60208110156200058157600080fd5b8101908080519060200190929190505050600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce8000000600d81905550620005f6826200060860201b60201c565b80600381905550505050505062000ecb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000719576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620006dd578082015181840152602081019050620006c0565b50505050905090810190601f1680156200070b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200076d6000620007b360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167f0ec6cb7631d36954a05ffd646135bfd9995c71e7fa36d26abb1ad9f24a040ea160405160405180910390a250565b620007dc81620007c8620008d260201b60201c565b6200099360201b6200335f1790919060201c565b600281905550620007f262000a1760201b60201c565b600d81905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342568d446002546200084962000a5560201b60201c565b6040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156200088557600080fd5b505afa1580156200089a573d6000803e3d6000fd5b505050506040513d6020811015620008b157600080fd5b8101908080519060200190929190505050600e8190555042600f8190555050565b600080620008f1600f54426200099360201b6200335f1790919060201c565b905060006200096e6301e133806200095a6b033b2e3c9fd0803ce8000000620009468662000932600e5460045462000b2360201b620033e21790919060201c565b62000b2360201b620033e21790919060201c565b62000bae60201b620034681790919060201c565b62000bae60201b620034681790919060201c565b90506200098c8160025462000c3960201b620034f11790919060201c565b9250505090565b60008282111562000a0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b60008062000a36600f54426200099360201b6200335f1790919060201c565b905062000a4f600d54600e548362000cc260201b60201c565b91505090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801562000ae157600080fd5b505afa15801562000af6573d6000803e3d6000fd5b505050506040513d602081101562000b0d57600080fd5b8101908080519060200190929190505050905090565b60008083141562000b38576000905062000ba8565b600082840290508284828162000b4a57fe5b041462000ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620051396021913960400191505060405180910390fd5b809150505b92915050565b600080821162000c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838162000c3057fe5b04905092915050565b60008082840190508381101562000cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008062000d2162000d006301e1338062000cec868862000b2360201b620033e21790919060201c565b62000bae60201b620034681790919060201c565b6b033b2e3c9fd0803ce800000062000c3960201b620034f11790919060201c565b905062000d3d818662000d4760201b620035791790919060201c565b9150509392505050565b60008083148062000d585750600082145b1562000d68576000905062000ec5565b8160026b033b2e3c9fd0803ce80000008162000d8057fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038162000dab57fe5b048311156040518060400160405280600281526020017f4d310000000000000000000000000000000000000000000000000000000000008152509062000e8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000e5357808201518184015260208101905062000e36565b50505050905090810190601f16801562000e815780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506b033b2e3c9fd0803ce800000060026b033b2e3c9fd0803ce80000008162000eb457fe5b04838502018162000ec157fe5b0490505b92915050565b61425e8062000edb6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80635c975abb11610130578063bf28068b116100b8578063dbcb313b1161007c578063dbcb313b146108ec578063e941fa781461090a578063ef8d960314610928578063f3fdb15a14610946578063fe14112d1461097a57610227565b8063bf28068b1461078e578063c00495a1146107dc578063c5f956af14610832578063ca9505e414610866578063cf33d955146108a857610227565b80638456cb59116100ff5780638456cb59146106b25780639aa5d462146106bc578063a4e8273e14610714578063b6ac642a14610732578063bb04b1931461076057610227565b80635c975abb14610638578063609ae317146106585780637437535914610676578063788c6bfe1461069457610227565b806336dda7d5116101b35780634c19386c116101825780634c19386c146105345780634d778ad1146105525780635427c9381461059457806354fd4d50146105d65780635664cacf146105f457610227565b806336dda7d51461047e5780633e163df0146104b25780633f4ba83a1461050c57806345d31f9d1461051657610227565b80631e16e4fc116101fa5780631e16e4fc1461030e5780632495a599146103665780632954018c1461039a5780632e97ca21146103ce57806331d8bc271461042857610227565b8063030dbb041461022c57806305fe138b1461024a578063078c4781146102ac5780630fce70fb146102f0575b600080fd5b610234610998565b6040518082815260200191505060405180910390f35b6102966004803603604081101561026057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061099e565b6040518082815260200191505060405180910390f35b6102ee600480360360208110156102c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610df5565b005b6102f8611034565b6040518082815260200191505060405180910390f35b61033a6004803603602081101561032457600080fd5b8101908080359060200190929190505050611063565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036e6110a2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a26110c8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610410600480360360208110156103e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110ee565b60405180821515815260200191505060405180910390f35b6104686004803603606081101561043e57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061110e565b6040518082815260200191505060405180910390f35b610486611177565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104f4600480360360208110156104c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061119d565b60405180821515815260200191505060405180910390f35b6105146111bd565b005b61051e611368565b6040518082815260200191505060405180910390f35b61053c61136e565b6040518082815260200191505060405180910390f35b61057e6004803603602081101561056857600080fd5b8101908080359060200190929190505050611374565b6040518082815260200191505060405180910390f35b6105c0600480360360208110156105aa57600080fd5b81019080803590602001909291905050506113b5565b6040518082815260200191505060405180910390f35b6105de6113f6565b6040518082815260200191505060405180910390f35b6106366004803603602081101561060a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113fb565b005b6106406115a8565b60405180821515815260200191505060405180910390f35b6106606115be565b6040518082815260200191505060405180910390f35b61067e6115c4565b6040518082815260200191505060405180910390f35b61069c61168f565b6040518082815260200191505060405180910390f35b6106ba611794565b005b610712600480360360608110156106d257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061193f565b005b61071c611f86565b6040518082815260200191505060405180910390f35b61075e6004803603602081101561074857600080fd5b8101908080359060200190929190505050611f93565b005b61078c6004803603602081101561077657600080fd5b810190808035906020019092919050505061225a565b005b6107da600480360360408110156107a457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061243c565b005b61081c600480360360608110156107f257600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506126bc565b6040518082815260200191505060405180910390f35b61083a612754565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108a66004803603606081101561087c57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061277a565b005b6108ea600480360360208110156108be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cdf565b005b6108f4613290565b6040518082815260200191505060405180910390f35b610912613296565b6040518082815260200191505060405180910390f35b61093061329c565b6040518082815260200191505060405180910390f35b61094e6132a2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109826132c8565b6040518082815260200191505060405180910390f35b60025481565b60006109a86115a8565b15610a1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415610a94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090610ba9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b6e578082015181840152602081019050610b53565b50505050905090810190601f168015610b9b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000610bb5846113b5565b90506000610bce601054836136f290919063ffffffff16565b90506000610be5828461335f90919063ffffffff16565b9050610c348582600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661384d9092919063ffffffff16565b6000821115610cad57610cac600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661384d9092919063ffffffff16565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610d4057600080fd5b505af1158015610d54573d6000803e3d6000fd5b50505050610d6d8360025461335f90919063ffffffff16565b600281905550610d7d60006138ef565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd8ae9b9ba89e637bcb66a69ac91e8f688018e81d6f92c57e02226425c8efbdf6886040518082815260200191505060405180910390a38093505050506001808190555092915050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d6020811015610ea857600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5a578082015181840152602081019050610f3f565b50505050905090810190601f168015610f875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f9181736fce85d2d4cca2e4406f10679302ae5c387180fdb62963af3cd9a24fd660405160405180910390a250565b60008061104c600f544261335f90919063ffffffff16565b905061105d600d54600e548361110e565b91505090565b600b818154811061107357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b60008061115861113d6301e1338061112f86886133e290919063ffffffff16565b61346890919063ffffffff16565b6b033b2e3c9fd0803ce80000006134f190919063ffffffff16565b905061116d818661357990919063ffffffff16565b9150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561124657600080fd5b505afa15801561125a573d6000803e3d6000fd5b505050506040513d602081101561127057600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c31000000000000000000000000000000000000000000000000000000008152509061135d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611322578082015181840152602081019050611307565b50505050905090810190601f16801561134f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506113666139ec565b565b600e5481565b60045481565b60006113ae61138161168f565b6113a06b033b2e3c9fd0803ce8000000856133e290919063ffffffff16565b61346890919063ffffffff16565b9050919050565b60006113ef6b033b2e3c9fd0803ce80000006113e16113d261168f565b856133e290919063ffffffff16565b61346890919063ffffffff16565b9050919050565b600181565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561148457600080fd5b505afa158015611498573d6000803e3d6000fd5b505050506040513d60208110156114ae57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c32000000000000000000000000000000000000000000000000000000008152509061159b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611560578082015181840152602081019050611545565b50505050905090810190601f16801561158d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506115a581613ad6565b50565b60008060009054906101000a900460ff16905090565b600f5481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561164f57600080fd5b505afa158015611663573d6000803e3d6000fd5b505050506040513d602081101561167957600080fd5b8101908080519060200190929190505050905090565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fa57600080fd5b505afa15801561170e573d6000803e3d6000fd5b505050506040513d602081101561172457600080fd5b810190808051906020019092919050505090506000811415611755576b033b2e3c9fd0803ce8000000915050611791565b61178d8161177f6b033b2e3c9fd0803ce80000006117716132c8565b6133e290919063ffffffff16565b61346890919063ffffffff16565b9150505b90565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561181d57600080fd5b505afa158015611831573d6000803e3d6000fd5b505050506040513d602081101561184757600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090611934576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118f95780820151818401526020810190506118de565b50505050905090810190601f1680156119265780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061193d613c75565b565b6119476115a8565b156119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60026001541415611a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090611b48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b0d578082015181840152602081019050611af2565b50505050905090810190601f168015611b3a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600354611b6684611b586132c8565b6134f190919063ffffffff16565b11156040518060400160405280600381526020017f505332000000000000000000000000000000000000000000000000000000000081525090611c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c09578082015181840152602081019050611bee565b50505050905090810190601f168015611c365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cd057600080fd5b505afa158015611ce4573d6000803e3d6000fd5b505050506040513d6020811015611cfa57600080fd5b81019080805190602001909291905050509050611d5c333086600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613d60909392919063ffffffff16565b611e3281600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611de957600080fd5b505afa158015611dfd573d6000803e3d6000fd5b505050506040513d6020811015611e1357600080fd5b810190808051906020019092919050505061335f90919063ffffffff16565b9350600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1984611e7c87611374565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ecf57600080fd5b505af1158015611ee3573d6000803e3d6000fd5b50505050611efc846002546134f190919063ffffffff16565b600281905550611f0c60006138ef565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd2491a9b4fe81a7cd4511e8b7b7743951b061dad5bed7da8a7795b080ee08c7e8685604051808381526020018281526020019250505060405180910390a35060018081905550505050565b6000600b80549050905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561201c57600080fd5b505afa158015612030573d6000803e3d6000fd5b505050506040513d602081101561204657600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090612133576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120f85780820151818401526020810190506120dd565b50505050905090810190601f1680156121255780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50606460ff168111156040518060400160405280600381526020017f505333000000000000000000000000000000000000000000000000000000000081525090612218576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121dd5780820151818401526020810190506121c2565b50505050905090810190601f16801561220a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50806010819055507fd5fe46099fa396290a7f57e36c3c3c8774e2562c18ed5d1dcc0fa75071e03f1d816040518082815260200191505060405180910390a150565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122e357600080fd5b505afa1580156122f7573d6000803e3d6000fd5b505050506040513d602081101561230d57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3200000000000000000000000000000000000000000000000000000000815250906123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123bf5780820151818401526020810190506123a4565b50505050905090810190601f1680156123ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50806003819055507fd7a183c9fe85b604c25d54bd676e0866f6c13bcca9fb9b0850213de118fdc99c816040518082815260200191505060405180910390a150565b6124446115a8565b156124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f5053300000000000000000000000000000000000000000000000000000000000815250906125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125a557808201518184015260208101905061258a565b50505050905090810190601f1680156125d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061262e8183600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661384d9092919063ffffffff16565b61263860006138ef565b61264d826004546134f190919063ffffffff16565b6004819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f312a5e5e1079f5dda4e95dbbd0b908b291fd5b992ef22073643ab691572c5b52846040518082815260200191505060405180910390a35050565b600061274b6126ff6126d784866133e290919063ffffffff16565b6126f1876126e3611034565b6133e290919063ffffffff16565b6134f190919063ffffffff16565b61273d61271586886134f190919063ffffffff16565b61272f86612721611034565b6133e290919063ffffffff16565b6133e290919063ffffffff16565b61346890919063ffffffff16565b90509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6127826115a8565b156127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f50533000000000000000000000000000000000000000000000000000000000008152509061291e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128e35780820151818401526020810190506128c8565b50505050905090810190601f1680156129105780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000821115612a1d57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661299285611374565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129e557600080fd5b505af11580156129f9573d6000803e3d6000fd5b50505050612a12826002546134f190919063ffffffff16565b600281905550612c58565b6000612a2882611374565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ad757600080fd5b505afa158015612aeb573d6000803e3d6000fd5b505050506040513d6020811015612b0157600080fd5b8101908080519060200190929190505050905081811015612b88578091503373ffffffffffffffffffffffffffffffffffffffff167fef3653ded679720ab04913b6f3820be7cedc8286d42ff5dd8dff17e91bd2964c612b72612b63846113b5565b8661335f90919063ffffffff16565b6040518082815260200191505060405180910390a25b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c3d57600080fd5b505af1158015612c51573d6000803e3d6000fd5b5050505050505b612c61816138ef565b612c768360045461335f90919063ffffffff16565b6004819055503373ffffffffffffffffffffffffffffffffffffffff167f2fe77b1c99aca6b022b8efc6e3e8dd1b48b30748709339b65c50ef3263443e0984848460405180848152602001838152602001828152602001935050505060405180910390a2505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d6857600080fd5b505afa158015612d7c573d6000803e3d6000fd5b505050506040513d6020811015612d9257600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090612e7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e44578082015181840152602081019050612e29565b50505050905090810190601f168015612e715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b815260040160206040518083038186803b158015612ec657600080fd5b505afa158015612eda573d6000803e3d6000fd5b505050506040513d6020811015612ef057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f50533100000000000000000000000000000000000000000000000000000000008152509061300b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612fd0578082015181840152602081019050612fb5565b50505050905090810190601f168015612ffd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156040518060400160405280600381526020017f505334000000000000000000000000000000000000000000000000000000000081525090613136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130fb5780820151818401526020810190506130e0565b50505050905090810190601f1680156131285780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe076020e7eac3915d33aec40c24f95e73eb6c9921ff89747d50aa8fd934d2c0160405160405180910390a250565b600d5481565b60105481565b60035481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806132e0600f544261335f90919063ffffffff16565b905060006133416301e133806133336b033b2e3c9fd0803ce800000061332586613317600e546004546133e290919063ffffffff16565b6133e290919063ffffffff16565b61346890919063ffffffff16565b61346890919063ffffffff16565b9050613358816002546134f190919063ffffffff16565b9250505090565b6000828211156133d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808314156133f55760009050613462565b600082840290508284828161340657fe5b041461345d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141de6021913960400191505060405180910390fd5b809150505b92915050565b60008082116134df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816134e857fe5b04905092915050565b60008082840190508381101561356f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314806135895750600082145b1561359757600090506136ec565b8160026b033b2e3c9fd0803ce8000000816135ae57fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03816135d857fe5b048311156040518060400160405280600281526020017f4d31000000000000000000000000000000000000000000000000000000000000815250906136b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561367d578082015181840152602081019050613662565b50505050905090810190601f1680156136aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506b033b2e3c9fd0803ce800000060026b033b2e3c9fd0803ce8000000816136dc57fe5b0483850201816136e857fe5b0490505b92915050565b6000808314806137025750600082145b156137105760009050613847565b8160026127108161371d57fe5b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038161374757fe5b048311156040518060400160405280600281526020017f4d3100000000000000000000000000000000000000000000000000000000000081525090613827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137ec5780820151818401526020810190506137d1565b50505050905090810190601f1680156138195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061271060026127108161383757fe5b04838502018161384357fe5b0490505b92915050565b6138ea8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e21565b505050565b613909816138fb6132c8565b61335f90919063ffffffff16565b600281905550613917611034565b600d81905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342568d446002546139666115c4565b6040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156139a157600080fd5b505afa1580156139b5573d6000803e3d6000fd5b505050506040513d60208110156139cb57600080fd5b8101908080519060200190929190505050600e8190555042600f8190555050565b6139f46115a8565b613a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613aa9613f10565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090613be3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ba8578082015181840152602081019050613b8d565b50505050905090810190601f168015613bd55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613c2f60006138ef565b8073ffffffffffffffffffffffffffffffffffffffff167f0ec6cb7631d36954a05ffd646135bfd9995c71e7fa36d26abb1ad9f24a040ea160405160405180910390a250565b613c7d6115a8565b15613cf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613d33613f10565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b613e1b846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e21565b50505050565b6000613e83826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613f189092919063ffffffff16565b9050600081511115613f0b57808060200190516020811015613ea457600080fd5b8101908080519060200190929190505050613f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806141ff602a913960400191505060405180910390fd5b5b505050565b600033905090565b6060613f278484600085613f30565b90509392505050565b606082471015613f8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141b86026913960400191505060405180910390fd5b613f94856140d8565b614006576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106140555780518252602082019150602081019050602083039250614032565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146140b7576040519150601f19603f3d011682016040523d82523d6000602084013e6140bc565b606091505b50915091506140cc8282866140eb565b92505050949350505050565b600080823b905060008111915050919050565b606083156140fb578290506141b0565b60008351111561410e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561417557808201518184015260208101905061415a565b50505050905090810190601f1680156141a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220555dcec2a4fb94fd2eaeb4e1f5acd69c84dee1c4fe9f244d0b7b2bc083e7301264736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000cf64698aff7e5f27a11dff868af228653ba53be0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c411db5f5eb3f7d552f9b8454b2d74097ccde6e300000000000000000000000082a8c58f05e7c79065846fe495c7328b3338320a000000000000000000000000000000000000000000000000000002ba7def3000