0 txs
3.4k calls
constructor
constructor(string name_, string symbol_, address token_)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
availableCreditLimit
viewfunction availableCreditLimit(address strategy_) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
blacklistedStrategies
viewfunction blacklistedStrategies() view returns (address[])
calculateMintage
viewfunction calculateMintage(uint256 amount_) view returns (uint256 _shares)
calculateUniversalFee
viewfunction calculateUniversalFee(uint256 profit_) view returns (uint256 _fee)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
excessDebt
viewfunction excessDebt(address strategy_) view returns (uint256)
getStrategies
viewfunction getStrategies() view returns (address[])
getWithdrawQueue
viewfunction getWithdrawQueue() view returns (address[])
governor
viewfunction governor() view returns (address)
isKeeper
viewfunction isKeeper(address address_) view returns (bool)
isMaintainer
viewfunction isMaintainer(address address_) view returns (bool)
keepers
viewfunction keepers() view returns (address[])
maintainers
viewfunction maintainers() view returns (address[])
MAX_BPS
viewfunction MAX_BPS() view returns (uint256)
maxProfitAsFee
viewfunction maxProfitAsFee() view returns (uint256)
minDepositLimit
viewfunction minDepositLimit() view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
ONE_YEAR
viewfunction ONE_YEAR() view returns (uint256)
paused
viewfunction paused() view returns (bool)
poolAccountant
viewfunction poolAccountant() view returns (address)
poolRewards
viewfunction poolRewards() view returns (address)
pricePerShare
viewfunction pricePerShare() view returns (uint256)
stopEverything
viewfunction stopEverything() view returns (bool)
strategy
viewfunction strategy(address strategy_) view returns (bool _active, uint256 _interestFee, uint256 _debtRate, uint256 _lastRebalance, uint256 _totalDebt, uint256 _totalLoss, uint256 _totalProfit, uint256 _debtRatio, uint256 _externalDepositFee)
symbol
viewfunction symbol() view returns (string)
token
viewfunction token() view returns (address)
tokensHere
viewfunction tokensHere() view returns (uint256)
totalDebt
viewfunction totalDebt() view returns (uint256)
totalDebtOf
viewfunction totalDebtOf(address strategy_) view returns (uint256)
totalDebtRatio
viewfunction totalDebtRatio() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalValue
viewfunction totalValue() view returns (uint256)
universalFee
viewfunction universalFee() view returns (uint256)
VERSION
viewfunction VERSION() view returns (string)
acceptGovernorship
nonpayablefunction acceptGovernorship()
addKeeper
nonpayablefunction addKeeper(address keeperAddress_)
addMaintainer
nonpayablefunction addMaintainer(address maintainerAddress_)
addStrategyIntoBlacklist
nonpayablefunction addStrategyIntoBlacklist(address strategy_)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
deposit
nonpayablefunction deposit(uint256 amount_)
depositAndClaim
nonpayablefunction depositAndClaim(uint256 amount_)
depositWithPermit
nonpayablefunction depositWithPermit(uint256 amount_, uint256 deadline_, uint8 v_, bytes32 r_, bytes32 s_)
initialize
nonpayablefunction initialize(string name_, string symbol_, address token_, address poolAccountant_)
migrateStrategy
nonpayablefunction migrateStrategy(address old_, address new_)
open
nonpayablefunction open()
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
removeKeeper
nonpayablefunction removeKeeper(address keeperAddress_)
removeMaintainer
nonpayablefunction removeMaintainer(address maintainerAddress_)
removeStrategyFromBlacklist
nonpayablefunction removeStrategyFromBlacklist(address strategy_)
reportEarning
nonpayablefunction reportEarning(uint256 profit_, uint256 loss_, uint256 payback_)
reportLoss
nonpayablefunction reportLoss(uint256 loss_)
shutdown
nonpayablefunction shutdown()
sweepERC20
nonpayablefunction sweepERC20(address fromToken_)
transfer
nonpayablefunction transfer(address recipient, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address sender, address recipient, uint256 amount) returns (bool)
transferGovernorship
nonpayablefunction transferGovernorship(address _proposedGovernor)
unpause
nonpayablefunction unpause()
updateMaximumProfitAsFee
nonpayablefunction updateMaximumProfitAsFee(uint256 newMaxProfitAsFee_)
updateMinimumDepositLimit
nonpayablefunction updateMinimumDepositLimit(uint256 newLimit_)
updatePoolRewards
nonpayablefunction updatePoolRewards(address newPoolRewards_)
updateUniversalFee
nonpayablefunction updateUniversalFee(uint256 newUniversalFee_)
withdraw
nonpayablefunction withdraw(uint256 shares_)
withdrawAndClaim
nonpayablefunction withdrawAndClaim(uint256 shares_)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposit
event Deposit(address indexed owner, uint256 shares, uint256 amount)
Open
event Open(address account)
Paused
event Paused(address account)
Shutdown
event Shutdown(address account)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
UniversalFeePaid
event UniversalFeePaid(uint256 strategyDebt, uint256 profit, uint256 fee)
Unpaused
event Unpaused(address account)
UpdatedGovernor
event UpdatedGovernor(address indexed previousGovernor, address indexed proposedGovernor)
UpdatedMaximumProfitAsFee
event UpdatedMaximumProfitAsFee(uint256 oldMaxProfitAsFee, uint256 newMaxProfitAsFee)
UpdatedMinimumDepositLimit
event UpdatedMinimumDepositLimit(uint256 oldDepositLimit, uint256 newDepositLimit)
UpdatedPoolRewards
event UpdatedPoolRewards(address indexed previousPoolRewards, address indexed newPoolRewards)
UpdatedUniversalFee
event UpdatedUniversalFee(uint256 oldUniversalFee, uint256 newUniversalFee)
UpdatedWithdrawFee
event UpdatedWithdrawFee(uint256 previousWithdrawFee, uint256 newWithdrawFee)
Withdraw
event Withdraw(address indexed owner, uint256 shares, uint256 amount)
errors
No errors.
creation bytecode
0x608060405260c8601d55611388601e556001601f553480156200002157600080fd5b5060405162004bae38038062004bae83398101604081905262000044916200027b565b8251839083906200005d90600390602085019062000108565b5080516200007390600490602084019062000108565b5050506000620000886200010460201b60201c565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907fd4459d5b8b913cab0244230fd9b1c08b6ceace7fe9230e60d0f74cbffdf849d0908290a3506001600c55600d80546001600160a01b0319166001600160a01b039290921691909117905550620003459050565b3390565b828054620001169062000308565b90600052602060002090601f0160209004810192826200013a576000855562000185565b82601f106200015557805160ff191683800117855562000185565b8280016001018555821562000185579182015b828111156200018557825182559160200191906001019062000168565b506200019392915062000197565b5090565b5b8082111562000193576000815560010162000198565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001d657600080fd5b81516001600160401b0380821115620001f357620001f3620001ae565b604051601f8301601f19908116603f011681019082821181831017156200021e576200021e620001ae565b816040528381526020925086838588010111156200023b57600080fd5b600091505b838210156200025f578582018301518183018401529082019062000240565b83821115620002715760008385830101525b9695505050505050565b6000806000606084860312156200029157600080fd5b83516001600160401b0380821115620002a957600080fd5b620002b787838801620001c4565b94506020860151915080821115620002ce57600080fd5b50620002dd86828701620001c4565b604086015190935090506001600160a01b0381168114620002fd57600080fd5b809150509250925092565b600181811c908216806200031d57607f821691505b602082108114156200033f57634e487b7160e01b600052602260045260246000fd5b50919050565b61485980620003556000396000f3fe608060405234801561001057600080fd5b50600436106103fc5760003560e01c80638d3d0a2611610215578063c12d636b11610125578063ddd6d260116100b8578063fc0e74d111610087578063fc0e74d1146108c0578063fc7b9c18146108c8578063fcfff16f146108d0578063fd967f47146108d8578063ffa1ad74146108e157600080fd5b8063ddd6d2601461087f578063e00af4a714610892578063f3b27bc3146108a5578063fc0c546a146108ad57600080fd5b8063d7770b6d116100f4578063d7770b6d1461080d578063d8baf7cf14610820578063dd57366a14610833578063dd62ed3e1461084657600080fd5b8063c12d636b146107cc578063d4c3eea0146107df578063d505accf146107e7578063d53ddc26146107fa57600080fd5b80639fd5be18116101a8578063b64321ec11610177578063b64321ec14610778578063b6aa515b1461078b578063b6b55f251461079e578063b8cb343d146107b1578063c01e0d40146107b957600080fd5b80639fd5be1814610741578063a9059cbb1461074a578063a941a90e1461075d578063b49a60bb1461077057600080fd5b806395d89b41116101e457806395d89b411461070b57806399530b06146107135780639b6da8df1461071b5780639f2b28331461072e57600080fd5b80638d3d0a26146106ca5780638f15b414146106dd578063940c4082146106f0578063951dc22c1461070357600080fd5b80633e772925116103105780635c975abb116102a35780636cb56d19116102725780636cb56d191461065357806370a08231146106665780637ecebe001461068f5780638456cb59146106af5780638bc6beb2146106b757600080fd5b80635c975abb146106105780635f895e54146106245780636b453c1f1461062d5780636ba42aaa1461064057600080fd5b8063448a1047116102df578063448a1047146105ce5780634938649a146105e157806349eeb860146105f55780634a970be7146105fd57600080fd5b80633e772925146105a25780633f4ba83a146105ab5780634032b72b146105b357806341ccb049146105c657600080fd5b806316d3bfbb116103935780632df9eab9116103625780632df9eab91461055d5780632e1a7d4d14610565578063313ce5671461057857806332dd0f49146105875780633644e5151461059a57600080fd5b806316d3bfbb146104d057806318160ddd146104e9578063228bfd9f146104f157806323b872dd1461054a57600080fd5b80630c340a24116103cf5780630c340a241461046a5780630da3fe201461049557806311183052146104a857806314ae9f2e146104bd57600080fd5b806305bed0461461040157806306fdde0314610416578063095ea7b31461043457806309e7f0a214610457575b600080fd5b61041461040f366004614071565b610905565b005b61041e610bd1565b60405161042b91906140c9565b60405180910390f35b610447610442366004614111565b610c63565b604051901515815260200161042b565b61041461046536600461413d565b610c7a565b600a5461047d906001600160a01b031681565b6040516001600160a01b03909116815260200161042b565b6104146104a336600461415a565b610d0b565b6104b0610e0d565b60405161042b9190614173565b6104146104cb36600461413d565b610e93565b6104db6301e1338081565b60405190815260200161042b565b6002546104db565b6105046104ff36600461413d565b610f33565b604080519915158a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200161042b565b6104476105583660046141c0565b610fe3565b6104db611096565b61041461057336600461415a565b611113565b6040516012815260200161042b565b6104db61059536600461415a565b6111cf565b6104db6111db565b6104db601e5481565b6104146111e5565b6104146105c136600461413d565b611247565b6104b06112aa565b6104146105dc36600461415a565b6112b6565b600b5461044790600160a81b900460ff1681565b6104b061135c565b61041461060b366004614210565b611368565b600b5461044790600160a01b900460ff1681565b6104db601d5481565b61041461063b36600461413d565b6114b8565b61044761064e36600461413d565b61151b565b610414610661366004614259565b611528565b6104db61067436600461413d565b6001600160a01b031660009081526020819052604090205490565b6104db61069d36600461413d565b60096020526000908152604090205481565b610414611783565b600f5461047d906001600160a01b031681565b6104146106d836600461415a565b6117e3565b6104146106eb366004614349565b6118aa565b6104146106fe36600461413d565b611b74565b6104b0611c5a565b61041e611c66565b6104db611c75565b61041461072936600461415a565b611d4e565b6104db61073c36600461413d565b611e18565b6104db601f5481565b610447610758366004614111565b611e97565b61041461076b36600461415a565b611ea4565b6104b0611f51565b6104db61078636600461413d565b611f96565b61041461079936600461413d565b611fc9565b6104146107ac36600461415a565b61208a565b6104db61212e565b6104db6107c736600461415a565b612172565b600e5461047d906001600160a01b031681565b6104db612266565b6104146107f53660046143d2565b612300565b6104db61080836600461413d565b6124c0565b61041461081b36600461413d565b6124f3565b61041461082e36600461413d565b612547565b61044761084136600461413d565b6125aa565b6104db610854366004614259565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61041461088d36600461415a565b6125b7565b6104146108a036600461413d565b612621565b610414612756565b600d5461047d906001600160a01b031681565b610414612816565b6104db612876565b6104146128bb565b6104db61271081565b61041e60405180604001604052806005815260200164352e312e3160d81b81525081565b3361091160208261291b565b1560405180604001604052806002815260200161333360f01b815250906109545760405162461bcd60e51b815260040161094b91906140c9565b60405180910390fd5b508315610ac557600e5460405163228bfd9f60e01b81526001600160a01b038381166004830152600092839291169063228bfd9f906024016101206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dd9190614458565b505050509450945050505060006109f583838961293d565b90508015610ac157610a7f846001600160a01b031663c415b95c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3957600080fd5b505afa158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7191906144c8565b610a7a836129b0565b612a15565b60408051838152602081018990529081018290527f692ef79cc704efab4328e6c217b5fb3b1045d0a0314e3e8137029bcb2d59ce4a9060600160405180910390a15b5050505b600e5460405163a066654b60e01b81526001600160a01b038381166004830152602482018790526044820186905260648201859052600092839291169063a066654b906084016040805180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5c91906144e5565b90925090506000610b6d838861451f565b905081811015610b9d57610b9884610b858385614537565b600d546001600160a01b03169190612af4565b610bc8565b81811115610bc857610bc88430610bb48585614537565b600d546001600160a01b0316929190612b71565b50505050505050565b606060038054610be09061454e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0c9061454e565b8015610c595780601f10610c2e57610100808354040283529160200191610c59565b820191906000526020600020905b815481529060010190602001808311610c3c57829003601f168201915b5050505050905090565b6000610c70338484612baf565b5060015b92915050565b600a546001600160a01b03163314610cc35760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b610cce602082612cd4565b60405180604001604052806002815260200161313360f01b81525090610d075760405162461bcd60e51b815260040161094b91906140c9565b5050565b600a546001600160a01b03163314610d545760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b604080518082019091526002815261199960f11b602082015281610d8b5760405162461bcd60e51b815260040161094b91906140c9565b50601f5481141560405180604001604052806002815260200161333160f01b81525090610dcb5760405162461bcd60e51b815260040161094b91906140c9565b50601f5460408051918252602082018390527f25c9f41f0fb7a055d44b070262516fbd0111daea3b55d40fae1983827dc99292910160405180910390a1601f55565b600e546040805163088c182960e11b815290516060926001600160a01b0316916311183052916004808301926000929190829003018186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e8e9190810190614589565b905090565b600a546001600160a01b0316331480610eb45750610eb4335b60199061291b565b610eef5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b610efa601982612ce9565b604051806040016040528060028152602001610c4d60f21b81525090610d075760405162461bcd60e51b815260040161094b91906140c9565b600e5460405163228bfd9f60e01b81526001600160a01b038381166004830152600092839283928392839283928392839283929091169063228bfd9f906024016101206040518083038186803b158015610f8c57600080fd5b505afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190614458565b9850985098509850985098509850985098509193959799909294969850565b6000610ff0848484612cfe565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110755760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161094b565b61108985336110848685614537565b612baf565b60019150505b9392505050565b600e5460408051632df9eab960e01b815290516000926001600160a01b031691632df9eab9916004808301926020929190829003018186803b1580156110db57600080fd5b505afa1580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e919061463b565b6002600c5414156111665760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161094b565b6002600c55600b54600160a81b900460ff16156111b05760405162461bcd60e51b815260206004820152600860248201526739b43aba3237bbb760c11b604482015260640161094b565b6111be33612dd9565b612dd9565b6111c781612e1c565b506001600c55565b6000610c743383612ed8565b6000610e8e612f7c565b600a546001600160a01b0316331480611202575061120233610eac565b61123d5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b611245613029565b565b600a546001600160a01b0316331480611264575061126433610eac565b61129f5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b610cce601982612cd4565b6060610e8e6020613101565b6002600c5414156113095760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161094b565b6002600c55600b54600160a81b900460ff16156113535760405162461bcd60e51b815260206004820152600860248201526739b43aba3237bbb760c11b604482015260640161094b565b6111be3361310e565b6060610e8e601b613101565b6002600c5414156113bb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161094b565b6002600c55600b54600160a01b900460ff16156114035760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161094b565b600d546001600160a01b031663d505accf336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905260e401600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a36111b93390565b6114ac85613151565b50506001600c55505050565b600a546001600160a01b03163314806114d557506114d533610eac565b6115105760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b610cce601b82612cd4565b6000610c7460198361291b565b600a546001600160a01b031633146115715760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b306001600160a01b0316816001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b457600080fd5b505afa1580156115c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ec91906144c8565b6001600160a01b03161480156116835750306001600160a01b0316826001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167891906144c8565b6001600160a01b0316145b60405180604001604052806002815260200161313760f01b815250906116bc5760405162461bcd60e51b815260040161094b91906140c9565b50600e54604051636cb56d1960e01b81526001600160a01b038481166004830152838116602483015290911690636cb56d1990604401600060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505060405163ce5494bb60e01b81526001600160a01b0384811660048301528516925063ce5494bb9150602401600060405180830381600087803b15801561176757600080fd5b505af115801561177b573d6000803e3d6000fd5b505050505050565b600a546001600160a01b03163314806117a057506117a033610eac565b6117db5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b6112456131bf565b600a546001600160a01b0316331461182c5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b604080518082019091526002815261313160f01b60208201526127108211156118685760405162461bcd60e51b815260040161094b91906140c9565b50601d5460408051918252602082018390527f905d672396c48f9d1e13c57aec0819f00d39364ab4bf40a46a687aa607b67d81910160405180910390a1601d55565b600554610100900460ff16806118c3575060055460ff16155b6119265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161094b565b600554610100900460ff16158015611948576005805461ffff19166101011790555b604080518082019091526002815261031360f41b60208201526001600160a01b0384166119885760405162461bcd60e51b815260040161094b91906140c9565b50604080518082019091526002815261031360f41b60208201526001600160a01b0383166119c95760405162461bcd60e51b815260040161094b91906140c9565b506119d4858561323d565b611a82858051602091820120600781905546600881905560408051808201825260018152603160f81b9085015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81860152808201939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606084015260808301919091523060a0808401919091528151808403909101815260c090920190528051910120600655565b611a8a613264565b600d80546001600160a01b0319166001600160a01b038516179055611ab133601990612cd4565b60405180604001604052806002815260200161313360f01b81525090611aea5760405162461bcd60e51b815260040161094b91906140c9565b50611af6601b33612cd4565b60405180604001604052806002815260200161313360f01b81525090611b2f5760405162461bcd60e51b815260040161094b91906140c9565b50600e80546001600160a01b0319166001600160a01b03841617905560c8601d55611388601e556001601f558015611b6d576005805461ff00191690555b5050505050565b600a546001600160a01b03163314611bbd5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b604080518082019091526002815261031360f41b60208201526001600160a01b038216611bfd5760405162461bcd60e51b815260040161094b91906140c9565b50600f546040516001600160a01b038084169216907fe239974dad08ac696e723caf1886bd0b5afc0870088f9a1266082757f824927690600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6060610e8e6019613101565b606060048054610be09061454e565b6000611c8060025490565b1580611c915750611c8f612266565b155b15611d2757600d60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611ce457600080fd5b505afa158015611cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1c9190614654565b610e8e90600a614755565b600254611d32612266565b611d4490670de0b6b3a7640000614764565b610e8e9190614783565b600a546001600160a01b03163314611d975760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b601e5481141560405180604001604052806002815260200161333160f01b81525090611dd65760405162461bcd60e51b815260040161094b91906140c9565b50601e5460408051918252602082018390527fafe4d3ceb3295a8d4ef49288a92d32d94e39396e823d414b81caff61b9fc3990910160405180910390a1601e55565b600e54604051639f2b283360e01b81526001600160a01b0383811660048301526000921690639f2b2833906024015b60206040518083038186803b158015611e5f57600080fd5b505afa158015611e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c74919061463b565b6000610c70338484612cfe565b6002600c541415611ef75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161094b565b6002600c55600b54600160a01b900460ff1615611f3f5760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161094b565b611f483361310e565b6111c781613151565b600e546040805163b49a60bb60e01b815290516060926001600160a01b03169163b49a60bb916004808301926000929190829003018186803b158015610e5257600080fd5b600e54604051632d90c87b60e21b81526001600160a01b038381166004830152600092169063b64321ec90602401611e47565b600a546001600160a01b031633146120125760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b6001600160a01b0381166120685760405162461bcd60e51b815260206004820152601960248201527f70726f706f7365642d676f7665726e6f722d69732d7a65726f00000000000000604482015260640161094b565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6002600c5414156120dd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161094b565b6002600c55600b54600160a01b900460ff16156121255760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161094b565b611f4833612dd9565b600d546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156110db57600080fd5b6000601f54821015604051806040016040528060018152602001603160f81b815250906121b25760405162461bcd60e51b815260040161094b91906140c9565b506000612710600e60009054906101000a90046001600160a01b03166001600160a01b031663346162d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561220657600080fd5b505afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e919061463b565b6122489085614764565b6122529190614783565b905061108f6122618285614537565b6129b0565b600061227061212e565b600e60009054906101000a90046001600160a01b03166001600160a01b031663fc7b9c186040518163ffffffff1660e01b815260040160206040518083038186803b1580156122be57600080fd5b505afa1580156122d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f6919061463b565b610e8e919061451f565b834211156123505760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161094b565b6001600160a01b0387811660008181526009602090815260408083205481517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e090940190528251920191909120906123db612f7c565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050600061242182888888613359565b90508a6001600160a01b0316816001600160a01b0316146124845760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161094b565b61248f84600161451f565b6001600160a01b038c166000908152600960205260409020556124b38b8b8b612baf565b5050505050505050505050565b600e54604051636a9eee1360e11b81526001600160a01b038381166004830152600092169063d53ddc2690602401611e47565b600a546001600160a01b0316331461253c5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b604482015260640161094b565b610efa602082612ce9565b600a546001600160a01b0316331480612564575061256433610eac565b61259f5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b610efa601b82612ce9565b6000610c74601b8361291b565b801561261e57600e54604051633f89843760e11b8152336004820152602481018390526001600160a01b0390911690637f13086e906044015b600060405180830381600087803b15801561260a57600080fd5b505af1158015611b6d573d6000803e3d6000fd5b50565b600a546001600160a01b031633148061263e575061263e33610eac565b6126795760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b600d546040805180820190915260018152600760fb1b6020820152906001600160a01b03838116911614156126c15760405162461bcd60e51b815260040161094b91906140c9565b50600a546040516370a0823160e01b815230600482015261261e916001600160a01b0390811691908416906370a082319060240160206040518083038186803b15801561270d57600080fd5b505afa158015612721573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612745919061463b565b6001600160a01b0384169190612af4565b600b546001600160a01b031633146127b05760405162461bcd60e51b815260206004820152601960248201527f6e6f742d7468652d70726f706f7365642d676f7665726e6f7200000000000000604482015260640161094b565b600b54600a546040516001600160a01b0392831692909116907fd4459d5b8b913cab0244230fd9b1c08b6ceace7fe9230e60d0f74cbffdf849d090600090a3600b8054600a80546001600160a01b03199081166001600160a01b03841617909155169055565b600a546001600160a01b0316331480612833575061283333610eac565b61286e5760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b6112456134f9565b600e5460408051631f8f738360e31b815290516000926001600160a01b03169163fc7b9c18916004808301926020929190829003018186803b1580156110db57600080fd5b600a546001600160a01b03163314806128d857506128d833610eac565b6129135760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b096b5b2b2b832b960a11b604482015260640161094b565b61124561357a565b6001600160a01b0381166000908152600183016020526040812054151561108f565b600061294f6301e13380612710614764565b8361295a8642614537565b601d546129679190614764565b6129719190614764565b61297b9190614783565b90506000612710601e54846129909190614764565b61299a9190614783565b9050808211156129a8578091505b509392505050565b6000806129bb611c75565b6129cd84670de0b6b3a7640000614764565b6129d79190614783565b9050670de0b6b3a76400006129ea611c75565b6129f49083614764565b6129fe9190614783565b8311612a0a578061108f565b61108f81600161451f565b6001600160a01b038216612a6b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161094b565b8060026000828254612a7d919061451f565b90915550506001600160a01b03821660009081526020819052604081208054839290612aaa90849061451f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040516001600160a01b038316602482015260448101829052612b6c90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909316929092179091526135f6565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052612ba99085906323b872dd60e01b90608401612b20565b50505050565b6001600160a01b038316612c115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161094b565b6001600160a01b038216612c725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161094b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061108f836001600160a01b0384166136c8565b600061108f836001600160a01b038416613717565b600f546001600160a01b031615612dce57600f5460405163632447c960e01b81526001600160a01b0385811660048301529091169063632447c990602401600060405180830381600087803b158015612d5657600080fd5b505af1158015612d6a573d6000803e3d6000fd5b5050600f5460405163632447c960e01b81526001600160a01b038681166004830152909116925063632447c99150602401600060405180830381600087803b158015612db557600080fd5b505af1158015612dc9573d6000803e3d6000fd5b505050505b612b6c83838361380a565b600f546001600160a01b03161561261e57600f5460405163632447c960e01b81526001600160a01b0383811660048301529091169063632447c9906024016125f0565b6040805180820190915260018152601960f91b602082015281612e525760405162461bcd60e51b815260040161094b91906140c9565b50600080612e5f836139e2565b915091508015612e84576000612e74836129b0565b905083811015612e82578093505b505b612e8e3384613a89565b612e9782613bd8565b50604080518481526020810184905233917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a2505050565b600e5460405163228bfd9f60e01b81526001600160a01b038481166004830152600092839283929091169063228bfd9f906024016101206040518083038186803b158015612f2557600080fd5b505afa158015612f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5d9190614458565b5050505094509450505050612f7382828661293d565b95945050505050565b6000600854461415612f8f575060065490565b5060075460408051808201825260018152603160f81b60209182015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81830152808301939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608401524660808401523060a0808501919091528251808503909101815260c0909301909152815191012090565b600b54600160a01b900460ff1661306f5760405162461bcd60e51b815260206004820152600a6024820152691b9bdd0b5c185d5cd95960b21b604482015260640161094b565b600b54600160a81b900460ff16156130b45760405162461bcd60e51b815260206004820152600860248201526739b43aba3237bbb760c11b604482015260640161094b565b600b805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6060600061108f83613bf5565b600f546001600160a01b03161561261e57600f5460405163d279c19160e01b81526001600160a01b0383811660048301529091169063d279c191906024016125f0565b600061315c82612172565b905061317633600d546001600160a01b0316903085612b71565b6131803382612a15565b604080518281526020810184905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a25050565b600b54600160a01b900460ff16156132025760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161094b565b600b805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130e43390565b8151613250906003906020850190613fe1565b508051612b6c906004906020840190613fe1565b600554610100900460ff168061327d575060055460ff16155b6132e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161094b565b600554610100900460ff16158015613302576005805461ffff19166101011790555b600a80546001600160a01b0319163390811790915560405181906000907fd4459d5b8b913cab0244230fd9b1c08b6ceace7fe9230e60d0f74cbffdf849d0908290a350801561261e576005805461ff001916905550565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156133d65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161094b565b8360ff16601b14806133eb57508360ff16601c145b6134425760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161094b565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015613496573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612f735760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161094b565b600b54600160a81b900460ff161561353e5760405162461bcd60e51b815260206004820152600860248201526739b43aba3237bbb760c11b604482015260640161094b565b600b805461ffff60a01b191661010160a01b1790557f28b4c24cb1012c094cd2f59f98e89d791973295f8fda6eaa118022d6d318960a336130e4565b600b54600160a81b900460ff166135c25760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b9b43aba3237bbb760a11b604482015260640161094b565b600b805460ff60a81b191690557fece7583a70a505ef0e36d4dec768f5ae597713e09c26011022599ee01abdabfc336130e4565b600061364b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613c519092919063ffffffff16565b805190915015612b6c578080602001905181019061366991906147a5565b612b6c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161094b565b600081815260018301602052604081205461370f57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c74565b506000610c74565b6000818152600183016020526040812054801561380057600061373b600183614537565b855490915060009061374f90600190614537565b90508181146137b457600086600001828154811061376f5761376f6147c0565b9060005260206000200154905080876000018481548110613792576137926147c0565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806137c5576137c56147d6565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c74565b6000915050610c74565b6001600160a01b03831661386e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161094b565b6001600160a01b0382166138d05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161094b565b6001600160a01b038316600090815260208190526040902054818110156139485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161094b565b6139528282614537565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061398890849061451f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139d491815260200190565b60405180910390a350505050565b600080670de0b6b3a76400006139f6611c75565b613a009085614764565b613a0a9190614783565b91506000613a1661212e565b905080831115613a4c57613a32613a2d8285614537565b613c68565b613a3a61212e565b905080831115613a4c57809250600191505b6040805180820190915260018152603160f81b602082015283613a825760405162461bcd60e51b815260040161094b91906140c9565b5050915091565b6001600160a01b038216613ae95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161094b565b6001600160a01b03821660009081526020819052604090205481811015613b5d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161094b565b613b678282614537565b6001600160a01b03841660009081526020819052604081209190915560028054849290613b95908490614537565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612cc7565b6000613bf133600d546001600160a01b03169084612af4565b5090565b606081600001805480602002602001604051908101604052809291908181526020018280548015613c4557602002820191906000526020600020905b815481526020019060010190808311613c31575b50505050509050919050565b6060613c608484600085613e80565b949350505050565b6000806000806000613c78610e0d565b805190915060005b81811015613e76576000613c94858a614537565b90506000848381518110613caa57613caa6147c0565b6020908102919091010151600e54604051639f2b283360e01b81526001600160a01b038084166004830152929350911690639f2b28339060240160206040518083038186803b158015613cfc57600080fd5b505afa158015613d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d34919061463b565b9850881580613d495750613d4960208261291b565b15613d55575050613e64565b88821115613d61578891505b613d6961212e565b604051632e1a7d4d60e01b8152600481018490529098506001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b158015613dae57600080fd5b505af1925050508015613dbf575060015b613dca575050613e64565b87613dd361212e565b613ddd9190614537565b600e54604051632fb9ba3160e01b81526001600160a01b03848116600483015260248201849052929950911690632fb9ba3190604401600060405180830381600087803b158015613e2d57600080fd5b505af1158015613e41573d6000803e3d6000fd5b505050508686613e51919061451f565b9550898610613e61575050613e76565b50505b80613e6e816147ec565b915050613c80565b5050505050505050565b606082471015613ee15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161094b565b843b613f2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161094b565b600080866001600160a01b03168587604051613f4b9190614807565b60006040518083038185875af1925050503d8060008114613f88576040519150601f19603f3d011682016040523d82523d6000602084013e613f8d565b606091505b5091509150613f9d828286613fa8565b979650505050505050565b60608315613fb757508161108f565b825115613fc75782518084602001fd5b8160405162461bcd60e51b815260040161094b91906140c9565b828054613fed9061454e565b90600052602060002090601f01602090048101928261400f5760008555614055565b82601f1061402857805160ff1916838001178555614055565b82800160010185558215614055579182015b8281111561405557825182559160200191906001019061403a565b50613bf19291505b80821115613bf1576000815560010161405d565b60008060006060848603121561408657600080fd5b505081359360208301359350604090920135919050565b60005b838110156140b85781810151838201526020016140a0565b83811115612ba95750506000910152565b60208152600082518060208401526140e881604085016020870161409d565b601f01601f19169190910160400192915050565b6001600160a01b038116811461261e57600080fd5b6000806040838503121561412457600080fd5b823561412f816140fc565b946020939093013593505050565b60006020828403121561414f57600080fd5b813561108f816140fc565b60006020828403121561416c57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156141b45783516001600160a01b03168352928401929184019160010161418f565b50909695505050505050565b6000806000606084860312156141d557600080fd5b83356141e0816140fc565b925060208401356141f0816140fc565b929592945050506040919091013590565b60ff8116811461261e57600080fd5b600080600080600060a0868803121561422857600080fd5b8535945060208601359350604086013561424181614201565b94979396509394606081013594506080013592915050565b6000806040838503121561426c57600080fd5b8235614277816140fc565b91506020830135614287816140fc565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156142d1576142d1614292565b604052919050565b600082601f8301126142ea57600080fd5b813567ffffffffffffffff81111561430457614304614292565b614317601f8201601f19166020016142a8565b81815284602083860101111561432c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561435f57600080fd5b843567ffffffffffffffff8082111561437757600080fd5b614383888389016142d9565b9550602087013591508082111561439957600080fd5b506143a6878288016142d9565b93505060408501356143b7816140fc565b915060608501356143c7816140fc565b939692955090935050565b600080600080600080600060e0888a0312156143ed57600080fd5b87356143f8816140fc565b96506020880135614408816140fc565b95506040880135945060608801359350608088013561442681614201565b9699959850939692959460a0840135945060c09093013592915050565b8051801515811461445357600080fd5b919050565b60008060008060008060008060006101208a8c03121561447757600080fd5b6144808a614443565b985060208a0151975060408a0151965060608a0151955060808a0151945060a08a0151935060c08a0151925060e08a015191506101008a015190509295985092959850929598565b6000602082840312156144da57600080fd5b815161108f816140fc565b600080604083850312156144f857600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b6000821982111561453257614532614509565b500190565b60008282101561454957614549614509565b500390565b600181811c9082168061456257607f821691505b6020821081141561458357634e487b7160e01b600052602260045260246000fd5b50919050565b6000602080838503121561459c57600080fd5b825167ffffffffffffffff808211156145b457600080fd5b818501915085601f8301126145c857600080fd5b8151818111156145da576145da614292565b8060051b91506145eb8483016142a8565b818152918301840191848101908884111561460557600080fd5b938501935b8385101561462f578451925061461f836140fc565b828252938501939085019061460a565b98975050505050505050565b60006020828403121561464d57600080fd5b5051919050565b60006020828403121561466657600080fd5b815161108f81614201565b600181815b808511156146ac57816000190482111561469257614692614509565b8085161561469f57918102915b93841c9390800290614676565b509250929050565b6000826146c357506001610c74565b816146d057506000610c74565b81600181146146e657600281146146f05761470c565b6001915050610c74565b60ff84111561470157614701614509565b50506001821b610c74565b5060208310610133831016604e8410600b841016171561472f575081810a610c74565b6147398383614671565b806000190482111561474d5761474d614509565b029392505050565b600061108f60ff8416836146b4565b600081600019048311821515161561477e5761477e614509565b500290565b6000826147a057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156147b757600080fd5b61108f82614443565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141561480057614800614509565b5060010190565b6000825161481981846020870161409d565b919091019291505056fea26469706673582212204840ea22bb6e1c0abc34b30cda21913e79d221c09bab6fc36098f956bd92995f64736f6c63430008090033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b56657370657220506f6f6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000576506f6f6c000000000000000000000000000000000000000000000000000000