0 txs
0 calls
constructor
constructor(string _name, string _symbol, address[] _assets, uint256[] _assetWeights, address _factory, address _config)
functions
allowance
viewfunction allowance(address _owner, address _spender) view returns (uint256 allowance_)
assimilator
viewfunction assimilator(address _derivative) view returns (address assimilator_)
balanceOf
viewfunction balanceOf(address _account) view returns (uint256 balance_)
curve
viewfunction curve() view returns (int128 alpha, int128 beta, int128 delta, int128 epsilon, int128 lambda, uint256 totalSupply)
decimals
viewfunction decimals() view returns (uint8)
derivatives
viewfunction derivatives(uint256) view returns (address)
emergency
viewfunction emergency() view returns (bool)
frozen
viewfunction frozen() view returns (bool)
getWeth
viewfunction getWeth() view returns (address)
liquidity
viewfunction liquidity() view returns (uint256 total_, uint256[] individual_)
name
viewfunction name() view returns (string)
notEntered
viewfunction notEntered() view returns (bool)
numeraires
viewfunction numeraires(uint256) view returns (address)
owner
viewfunction owner() view returns (address)
reserves
viewfunction reserves(uint256) view returns (address)
supportsInterface
purefunction supportsInterface(bytes4 _interface) pure returns (bool supports_)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256 totalSupply_)
viewCurve
viewfunction viewCurve() view returns (uint256 alpha_, uint256 beta_, uint256 delta_, uint256 epsilon_, uint256 lambda_)
viewDeposit
viewfunction viewDeposit(uint256 _deposit) view returns (uint256, uint256[])
viewOriginSwap
viewfunction viewOriginSwap(address _origin, address _target, uint256 _originAmount) view returns (uint256 targetAmount_)
viewTargetSwap
viewfunction viewTargetSwap(address _origin, address _target, uint256 _targetAmount) view returns (uint256 originAmount_)
viewWithdraw
viewfunction viewWithdraw(uint256 _curvesToBurn) view returns (uint256[])
approve
nonpayablefunction approve(address _spender, uint256 _amount) returns (bool success_)
deposit
nonpayablefunction deposit(uint256 _deposit, uint256 _minQuoteAmount, uint256 _minBaseAmount, uint256 _maxQuoteAmount, uint256 _maxBaseAmount, uint256 _deadline) returns (uint256 curvesMinted_, uint256[] deposits_)
depositETH
payablefunction depositETH(uint256 _deposit, uint256 _minQuoteAmount, uint256 _minBaseAmount, uint256 _maxQuoteAmount, uint256 _maxBaseAmount, uint256 _deadline) payable returns (uint256 curvesMinted_, uint256[] deposits_)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(uint256 _curvesToBurn, uint256 _deadline) returns (uint256[] withdrawals_)
excludeDerivative
nonpayablefunction excludeDerivative(address _derivative)
originSwap
nonpayablefunction originSwap(address _origin, address _target, uint256 _originAmount, uint256 _minTargetAmount, uint256 _deadline) returns (uint256 targetAmount_)
originSwapFromETH
payablefunction originSwapFromETH(address _target, uint256 _minTargetAmount, uint256 _deadline) payable returns (uint256 targetAmount_)
originSwapToETH
nonpayablefunction originSwapToETH(address _origin, uint256 _originAmount, uint256 _minTargetAmount, uint256 _deadline) returns (uint256 targetAmount_)
setAssimilator
nonpayablefunction setAssimilator(address _baseCurrency, address _baseAssim, address _quoteCurrency, address _quoteAssim)
setEmergency
nonpayablefunction setEmergency(bool _emergency)
setFrozen
nonpayablefunction setFrozen(bool _toFreezeOrNotToFreeze)
setParams
nonpayablefunction setParams(uint256 _alpha, uint256 _beta, uint256 _feeAtHalt, uint256 _epsilon, uint256 _lambda)
targetSwap
nonpayablefunction targetSwap(address _origin, address _target, uint256 _maxOriginAmount, uint256 _targetAmount, uint256 _deadline) returns (uint256 originAmount_)
transfer
nonpayablefunction transfer(address _recipient, uint256 _amount) returns (bool success_)
transferFrom
nonpayablefunction transferFrom(address _sender, address _recipient, uint256 _amount) returns (bool success_)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
withdraw
nonpayablefunction withdraw(uint256 _curvesToBurn, uint256 _deadline) returns (uint256[] withdrawals_)
withdrawETH
nonpayablefunction withdrawETH(uint256 _curvesToBurn, uint256 _deadline) returns (uint256[] withdrawals_)
events
Approval
event Approval(address indexed _owner, address indexed spender, uint256 value)
AssetIncluded
event AssetIncluded(address indexed numeraire, address indexed reserve, uint256 weight)
AssimilatorIncluded
event AssimilatorIncluded(address indexed derivative, address indexed numeraire, address indexed reserve, address assimilator)
EmergencyAlarm
event EmergencyAlarm(bool isEmergency)
FrozenSet
event FrozenSet(bool isFrozen)
OwnershipTransfered
event OwnershipTransfered(address indexed previousOwner, address indexed newOwner)
ParametersSet
event ParametersSet(uint256 alpha, uint256 beta, uint256 delta, uint256 epsilon, uint256 lambda)
PartitionRedeemed
event PartitionRedeemed(address indexed token, address indexed redeemer, uint256 value)
Trade
event Trade(address indexed trader, address indexed origin, address indexed target, uint256 originAmount, uint256 targetAmount, int128 rawProtocolFee)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
No errors.
creation bytecode
0x60c06040526010805462ffffff191662010000179055348015610020575f5ffd5b5060405161471638038061471683398101604081905261003f916103e1565b306080526001600160a01b0382166100a75760405162461bcd60e51b815260206004820152602160248201527f43757276652f637572766520666163746f7279207a65726f20616464726573736044820152602160f81b606482015260840160405180910390fd5b600a80546001600160a01b03191633179055600b6100c5878261053f565b50600c6100d2868261053f565b50601080546301000000600160b81b03191663010000006001600160a01b038581169190910291909117909155601180546001600160a01b03191691831691909117905560405133905f907f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee67908290a3816001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a291906105f9565b6001600160a01b031660a052604051635931eef160e11b81527322222fd8fd35c8ff1a416dc47fd92540c06fb35d9063b263dde2906101f2905f90600e90600f90600d908b908b90600401610653565b5f6040518083038186803b158015610208575f5ffd5b505af415801561021a573d5f5f3e3d5ffd5b505050505050505050506106d1565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561026557610265610229565b604052919050565b5f82601f83011261027c575f5ffd5b81516001600160401b0381111561029557610295610229565b6102a8601f8201601f191660200161023d565b8181528460208386010111156102bc575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6001600160401b038211156102f0576102f0610229565b5060051b60200190565b80516001600160a01b0381168114610310575f5ffd5b919050565b5f82601f830112610324575f5ffd5b8151610337610332826102d8565b61023d565b8082825260208201915060208360051b860101925085831115610358575f5ffd5b602085015b8381101561037c5761036e816102fa565b83526020928301920161035d565b5095945050505050565b5f82601f830112610395575f5ffd5b81516103a3610332826102d8565b8082825260208201915060208360051b8601019250858311156103c4575f5ffd5b602085015b8381101561037c5780518352602092830192016103c9565b5f5f5f5f5f5f60c087890312156103f6575f5ffd5b86516001600160401b0381111561040b575f5ffd5b61041789828a0161026d565b602089015190975090506001600160401b03811115610434575f5ffd5b61044089828a0161026d565b604089015190965090506001600160401b0381111561045d575f5ffd5b61046989828a01610315565b606089015190955090506001600160401b03811115610486575f5ffd5b61049289828a01610386565b9350506104a1608088016102fa565b91506104af60a088016102fa565b90509295509295509295565b600181811c908216806104cf57607f821691505b6020821081036104ed57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561053a57805f5260205f20601f840160051c810160208510156105185750805b601f840160051c820191505b81811015610537575f8155600101610524565b50505b505050565b81516001600160401b0381111561055857610558610229565b61056c8161056684546104bb565b846104f3565b6020601f82116001811461059e575f83156105875750848201515b5f19600385901b1c1916600184901b178455610537565b5f84815260208120601f198516915b828110156105cd57878501518255602094850194600190920191016105ad565b50848210156105ea57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610609575f5ffd5b610612826102fa565b9392505050565b5f8151808452602084019350602083015f5b8281101561064957815186526020958601959091019060010161062b565b5093949350505050565b5f60c0820188835287602084015286604084015285606084015260c0608084015280855180835260e0850191506020870192505f5b818110156106af5783516001600160a01b0316835260209384019390920191600101610688565b505083810360a08501526106c38186610619565b9a9950505050505050505050565b60805160a051613fde6107385f395f8181610335015281816112f30152818161136d015281816115d9015281816116b4015281816117dd0152818161181b01528181612035015281816120a0015281816120e0015261300c01525f6133ae0152613fde5ff3fe608060405260043610610241575f3560e01c806370a0823111610134578063a8e9d528116100b3578063caa6fea411610078578063caa6fea414610760578063d828bb881461077e578063dd62ed3e1461079d578063de3e2e24146107e1578063e5cf8a5c14610800578063f2fde38b1461081f575f5ffd5b8063a8e9d528146106c5578063a9059cbb146106e4578063c0046e3914610703578063c7cdea3714610722578063c912ff7a14610741575f5ffd5b80638334278d116100f95780638334278d14610635578063838e6a22146106545780638da5cb5b1461067357806395d89b4114610692578063a3f5d8cc146106a6575f5ffd5b806370a08231146105295780637165485d1461055d57806372b4129a146105d857806379a390a5146105f75780637e932d3214610616575f5ffd5b806323b872dd116101c0578063525d0da711610185578063525d0da71461047d5780635872278a1461049c578063595520c7146104bb5780636919ba27146104f75780636f2ef95b1461050a575f5ffd5b806323b872dd146103cf578063313ce567146103ee5780633cae77f714610414578063441a3e701461044b5780634fe5da711461046a575f5ffd5b80630b2583c8116102065780630b2583c8146102fa578063107c279f1461032757806318160ddd1461036d5780631a686502146103815780631f276b6e146103a3575f5ffd5b806301ffc9a71461024c5780630501d55614610280578063054f7d9c146102a157806306fdde03146102ba578063095ea7b3146102db575f5ffd5b3661024857005b5f5ffd5b348015610257575f5ffd5b5061026b6102663660046136ec565b61083e565b60405190151581526020015b60405180910390f35b34801561028b575f5ffd5b5061029f61029a366004613723565b61088f565b005b3480156102ac575f5ffd5b5060105461026b9060ff1681565b3480156102c5575f5ffd5b506102ce6109a0565b604051610277919061373e565b3480156102e6575f5ffd5b5061026b6102f5366004613787565b610a2c565b348015610305575f5ffd5b506103196103143660046137b1565b610b0a565b604051908152602001610277565b348015610332575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610277565b348015610378575f5ffd5b50600754610319565b34801561038c575f5ffd5b50610395610e24565b604051610277929190613838565b3480156103ae575f5ffd5b506103c26103bd366004613850565b610ea5565b6040516102779190613870565b3480156103da575f5ffd5b5061026b6103e9366004613882565b610fc7565b3480156103f9575f5ffd5b50610402601281565b60405160ff9091168152602001610277565b34801561041f575f5ffd5b5061035561042e3660046138c0565b6001600160a01b039081165f908152600560205260409020541690565b348015610456575f5ffd5b506103c2610465366004613850565b6110d5565b6103956104783660046138db565b61115b565b348015610488575f5ffd5b50610319610497366004613882565b611932565b3480156104a7575f5ffd5b506103956104b63660046138db565b611a75565b3480156104c6575f5ffd5b506104cf611e54565b604080519586526020860194909452928401919091526060830152608082015260a001610277565b61031961050536600461391a565b611ee2565b348015610515575f5ffd5b5061039561052436600461394c565b6121db565b348015610534575f5ffd5b506103196105433660046138c0565b6001600160a01b03165f9081526008602052604090205490565b348015610568575f5ffd5b505f5460015460025460075461059b93600f81810b94600160801b92839004820b9481830b9493909104820b92910b9086565b60408051600f97880b815295870b602087015293860b9385019390935290840b606084015290920b608082015260a081019190915260c001610277565b3480156105e3575f5ffd5b506103196105f23660046137b1565b612421565b348015610602575f5ffd5b5061029f610611366004613963565b61267b565b348015610621575f5ffd5b5061029f610630366004613723565b6127bf565b348015610640575f5ffd5b5061035561064f36600461394c565b6128c0565b34801561065f575f5ffd5b5061031961066e366004613882565b6128e8565b34801561067e575f5ffd5b50600a54610355906001600160a01b031681565b34801561069d575f5ffd5b506102ce6129e8565b3480156106b1575f5ffd5b5060105461026b9062010000900460ff1681565b3480156106d0575f5ffd5b506103556106df36600461394c565b6129f5565b3480156106ef575f5ffd5b5061026b6106fe366004613787565b612a04565b34801561070e575f5ffd5b5061035561071d36600461394c565b612ab7565b34801561072d575f5ffd5b506103c261073c366004613850565b612ac6565b34801561074c575f5ffd5b5061029f61075b3660046138c0565b612b91565b34801561076b575f5ffd5b5060105461026b90610100900460ff1681565b348015610789575f5ffd5b5061029f6107983660046139bc565b612d77565b3480156107a8575f5ffd5b506103196107b73660046139f3565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b3480156107ec575f5ffd5b506103196107fb366004613a2a565b612eb8565b34801561080b575f5ffd5b506103c261081a36600461394c565b613104565b34801561082a575f5ffd5b5061029f6108393660046138c0565b61322a565b5f6301ffc9a760e01b6001600160e01b03198316148061086e57506307f5828d60e41b6001600160e01b03198316145b8061088957506336372b0760e01b6001600160e01b03198316145b92915050565b600a546001600160a01b031633148061092c575060115f9054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109179190613a62565b6001600160a01b0316336001600160a01b0316145b6109515760405162461bcd60e51b815260040161094890613a7d565b60405180910390fd5b60405181151581527fa44450e52bea871e50cfee059fbe027c26ff43fd7534c06b7de61d90b58ab3c19060200160405180910390a1601080549115156101000261ff0019909216919091179055565b600b80546109ad90613ab4565b80601f01602080910402602001604051908101604052809291908181526020018280546109d990613ab4565b8015610a245780601f106109fb57610100808354040283529160200191610a24565b820191905f5260205f20905b815481529060010190602001808311610a0757829003601f168201915b505050505081565b6010545f9062010000900460ff16610a565760405162461bcd60e51b815260040161094890613aec565b6010805462ff000019169055610a6a6133a3565b60405163e60ac42960e01b81525f60048201526001600160a01b038416602482015260448101839052736ee60644b83bc048d9137b0fe328744546bfb1359063e60ac429906064015b602060405180830381865af4158015610ace573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af29190613b16565b6010805462ff00001916620100001790559392505050565b5f81804210610b2b5760405162461bcd60e51b815260040161094890613b31565b60115f9054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9f9190613b16565b15610bbc5760405162461bcd60e51b815260040161094890613b68565b60105460ff1615610bdf5760405162461bcd60e51b815260040161094890613bc5565b610be76133a3565b601054610100900460ff1615610c0f5760405162461bcd60e51b815260040161094890613c15565b60105462010000900460ff16610c375760405162461bcd60e51b815260040161094890613aec565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a8116825289811660208084018290528385018b905233606085018190526301000000909604909216608084015283516370a0823160e01b81526004810195909552925191935f93926370a08231926024808401939192918290030181865afa158015610cc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cea9190613c72565b60405163fd17568b60e01b81529091507351fdb00985168ffee4033ec99286eb1bc29b76c19063fd17568b90610d28905f9086908290600401613cc6565b602060405180830381865af4158015610d43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d679190613c72565b5060608201516040516370a0823160e01b81526001600160a01b0391821660048201525f918a16906370a0823190602401602060405180830381865afa158015610db3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd79190613c72565b9050610de38282613cfe565b945086851015610e055760405162461bcd60e51b815260040161094890613d11565b50506010805462ff000019166201000017905550909695505050505050565b604051633745793960e11b81525f600482018190529060609073d6a079fb361624d9021816b694b6a0b3f58a0f3690636e8af272906024015f60405180830381865af4158015610e76573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e9d9190810190613df8565b915091509091565b601054606090610100900460ff16610ecf5760405162461bcd60e51b815260040161094890613c15565b81804210610eef5760405162461bcd60e51b815260040161094890613b31565b60105462010000900460ff16610f175760405162461bcd60e51b815260040161094890613aec565b6010805462ff000019169055610f2b6133a3565b60405163eaadf2b560e01b81525f6004820181905260248201869052604482015273cef1faf438fde21c253afead5e8709f8a3cc17039063eaadf2b5906064015b5f60405180830381865af4158015610f86573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fad9190810190613e3d565b9150506010805462ff000019166201000017905592915050565b6010545f9062010000900460ff16610ff15760405162461bcd60e51b815260040161094890613aec565b6010805462ff0000191690556110056133a3565b601054610100900460ff161561102d5760405162461bcd60e51b815260040161094890613c15565b6040516303a90f6960e31b81525f60048201526001600160a01b0380861660248301528416604482015260648101839052736ee60644b83bc048d9137b0fe328744546bfb13590631d487b4890608401602060405180830381865af4158015611098573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bc9190613b16565b6010805462ff0000191662010000179055949350505050565b6060818042106110f75760405162461bcd60e51b815260040161094890613b31565b60105462010000900460ff1661111f5760405162461bcd60e51b815260040161094890613aec565b6010805462ff0000191690556111336133a3565b601054610100900460ff1615610f2b5760405162461bcd60e51b815260040161094890613c15565b5f60608280421061117e5760405162461bcd60e51b815260040161094890613b31565b60115f9054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f29190613b16565b1561120f5760405162461bcd60e51b815260040161094890613b68565b60105460ff16156112325760405162461bcd60e51b815260040161094890613bc5565b60105462010000900460ff1661125a5760405162461bcd60e51b815260040161094890613aec565b6010805462ff00001916905561126e6133a3565b601054610100900460ff16156112965760405162461bcd60e51b815260040161094890613c15565b5f89116112e05760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610948565b6112e9896121db565b80935081945050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561134a575f5ffd5b505af115801561135c573d5f5f3e3d5ffd5b506113999350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915030905033346133d9565b6113a161369a565b89815260208101899052604081018890526080810187905260a08101869052825183905f906113d2576113d2613e6f565b60200260200101518160c0018181525050826001815181106113f6576113f6613e6f565b6020026020010151816060018181525050600f5f8154811061141a5761141a613e6f565b5f9182526020822001546001600160a01b031660e0830152600f805490919061144557611445613e6f565b5f918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611493573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b79190613c72565b610100820152600f805460019081106114d2576114d2613e6f565b5f918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611520573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115449190613c72565b610120820152604051629d2ea960e41b815273cef1faf438fde21c253afead5e8709f8a3cc1703906309d2ea9090611582905f908590600401613e83565b5f60405180830381865af415801561159c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115c39190810190613df8565b600480549296509094505f916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190839061160957611609613e6f565b5f918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa158015611654573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116789190613a62565b6001600160a01b0316036116b257835f8151811061169857611698613e6f565b6020026020010151346116ab9190613cfe565b90506117ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f6004016001815481106116f2576116f2613e6f565b5f918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa15801561173d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117619190613a62565b6001600160a01b031603611782578360018151811061169857611698613e6f565b60405162461bcd60e51b815260206004820152601860248201527f43757276652f4465706f73697420455448206661696c656400000000000000006044820152606401610948565b8015611911576118056001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846133d9565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015611864575f5ffd5b505af1158015611876573d5f5f3e3d5ffd5b50506040515f925033915083908381818185875af1925050503d805f81146118b9576040519150601f19603f3d011682016040523d82523d5f602084013e6118be565b606091505b505090508061190f5760405162461bcd60e51b815260206004820152601960248201527f43757276652f455448207472616e73666572206661696c6564000000000000006044820152606401610948565b505b5050506010805462ff00001916620100001790559097909650945050505050565b601154604080516306a8e1cd60e41b815290515f926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015611979573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199d9190613b16565b156119ba5760405162461bcd60e51b815260040161094890613b68565b60105460ff16156119dd5760405162461bcd60e51b815260040161094890613bc5565b6040516315be82e960e21b81525f60048201526001600160a01b03808616602483015284166044820152606481018390527351fdb00985168ffee4033ec99286eb1bc29b76c1906356fa0ba4906084015b602060405180830381865af4158015611a49573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6d9190613c72565b949350505050565b5f606082804210611a985760405162461bcd60e51b815260040161094890613b31565b60115f9054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0c9190613b16565b15611b295760405162461bcd60e51b815260040161094890613b68565b60105460ff1615611b4c5760405162461bcd60e51b815260040161094890613bc5565b60105462010000900460ff16611b745760405162461bcd60e51b815260040161094890613aec565b6010805462ff000019169055611b886133a3565b601054610100900460ff1615611bb05760405162461bcd60e51b815260040161094890613c15565b5f8911611bfa5760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610948565b611c03896121db565b9093509150611c1061369a565b89815260208101899052604081018890526080810187905260a08101869052825183905f90611c4157611c41613e6f565b60200260200101518160c001818152505082600181518110611c6557611c65613e6f565b6020026020010151816060018181525050600f5f81548110611c8957611c89613e6f565b5f9182526020822001546001600160a01b031660e0830152600f8054909190611cb457611cb4613e6f565b5f918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d269190613c72565b610100820152600f80546001908110611d4157611d41613e6f565b5f918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db39190613c72565b610120820152604051629d2ea960e41b815273cef1faf438fde21c253afead5e8709f8a3cc1703906309d2ea9090611df1905f908590600401613e83565b5f60405180830381865af4158015611e0b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e329190810190613df8565b6010805462ff0000191662010000179055909b909a5098505050505050505050565b5f5f5f5f5f7322222fd8fd35c8ff1a416dc47fd92540c06fb35d63faa50b5d5f6040518263ffffffff1660e01b8152600401611e9291815260200190565b60a060405180830381865af4158015611ead573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed19190613f0c565b945094509450945094509091929394565b5f81804210611f035760405162461bcd60e51b815260040161094890613b31565b60115f9054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f53573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f779190613b16565b15611f945760405162461bcd60e51b815260040161094890613b68565b60105460ff1615611fb75760405162461bcd60e51b815260040161094890613bc5565b611fbf6133a3565b601054610100900460ff1615611fe75760405162461bcd60e51b815260040161094890613c15565b60105462010000900460ff1661200f5760405162461bcd60e51b815260040161094890613aec565b6010805462ff00001916905560408051630d0e30db60e41b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d0e30db09134916004808201925f9290919082900301818588803b15801561207d575f5ffd5b505af115801561208f573d5f5f3e3d5ffd5b506120cc9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915030905033346133d9565b6040805160a0810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682528781166020830152348284015233606083015260105463010000009004166080820152905163fd17568b60e01b81527351fdb00985168ffee4033ec99286eb1bc29b76c19063fd17568b90612160905f9085908290600401613cc6565b602060405180830381865af415801561217b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219f9190613c72565b9250848310156121c15760405162461bcd60e51b815260040161094890613d11565b50506010805462ff00001916620100001790559392505050565b5f606060115f9054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122529190613b16565b1561226f5760405162461bcd60e51b815260040161094890613b68565b60105460ff16156122925760405162461bcd60e51b815260040161094890613bc5565b6040805160028082526060820183525f92839291906020830190803683370190505060405163822f39d560e01b81525f60048201526024810187905290915073cef1faf438fde21c253afead5e8709f8a3cc17039063822f39d5906044015f60405180830381865af415801561230a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123319190810190613df8565b90925090505f82612351876ec097ce7bc90715b34b9f1000000000613f48565b61235b9190613f5f565b90506ec097ce7bc90715b34b9f100000000081835f8151811061238057612380613e6f565b60200260200101516123929190613f48565b61239c9190613f5f565b825f815181106123ae576123ae613e6f565b6020026020010181815250506ec097ce7bc90715b34b9f100000000081836001815181106123de576123de613e6f565b60200260200101516123f09190613f48565b6123fa9190613f5f565b8260018151811061240d5761240d613e6f565b602090810291909101015250939492505050565b5f818042106124425760405162461bcd60e51b815260040161094890613b31565b60115f9054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612492573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b69190613b16565b156124d35760405162461bcd60e51b815260040161094890613b68565b60105460ff16156124f65760405162461bcd60e51b815260040161094890613bc5565b6124fe6133a3565b601054610100900460ff16156125265760405162461bcd60e51b815260040161094890613c15565b60105462010000900460ff1661254e5760405162461bcd60e51b815260040161094890613aec565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a811682528981166020830152818301889052336060830152630100000090930490921660808301525163498e2a2560e11b81527351fdb00985168ffee4033ec99286eb1bc29b76c19063931c544a906125ce905f908590600401613f7e565b602060405180830381865af41580156125e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260d9190613c72565b92508583111561265f5760405162461bcd60e51b815260206004820152601d60248201527f43757276652f61626f76652d6d61782d6f726967696e2d616d6f756e740000006044820152606401610948565b50506010805462ff000019166201000017905595945050505050565b600a546001600160a01b0316331480612718575060115f9054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127039190613a62565b6001600160a01b0316336001600160a01b0316145b6127345760405162461bcd60e51b815260040161094890613a7d565b604051632e6ce08560e11b81525f60048201526001600160a01b03808616602483015280851660448301528084166064830152821660848201527322222fd8fd35c8ff1a416dc47fd92540c06fb35d90635cd9c10a9060a4015f6040518083038186803b1580156127a3575f5ffd5b505af41580156127b5573d5f5f3e3d5ffd5b5050505050505050565b600a546001600160a01b031633148061285c575060115f9054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612823573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128479190613a62565b6001600160a01b0316336001600160a01b0316145b6128785760405162461bcd60e51b815260040161094890613a7d565b60405181151581527f7c029deaca9b6c66abb68e5f874a812822f0fcaa52a890f980a7ab1afb5edba69060200160405180910390a16010805460ff1916911515919091179055565b600f81815481106128cf575f80fd5b5f918252602090912001546001600160a01b0316905081565b601154604080516306a8e1cd60e41b815290515f926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa15801561292f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129539190613b16565b156129705760405162461bcd60e51b815260040161094890613b68565b60105460ff16156129935760405162461bcd60e51b815260040161094890613bc5565b604051637dba2aed60e11b81525f60048201526001600160a01b03808616602483015284166044820152606481018390527351fdb00985168ffee4033ec99286eb1bc29b76c19063fb7455da90608401611a2e565b600c80546109ad90613ab4565b600e81815481106128cf575f80fd5b6010545f9062010000900460ff16612a2e5760405162461bcd60e51b815260040161094890613aec565b6010805462ff000019169055612a426133a3565b601054610100900460ff1615612a6a5760405162461bcd60e51b815260040161094890613c15565b60405163a4bcd45960e01b81525f60048201526001600160a01b038416602482015260448101839052736ee60644b83bc048d9137b0fe328744546bfb1359063a4bcd45990606401610ab3565b600d81815481106128cf575f80fd5b606081804210612ae85760405162461bcd60e51b815260040161094890613b31565b60105462010000900460ff16612b105760405162461bcd60e51b815260040161094890613aec565b6010805462ff000019169055612b246133a3565b601054610100900460ff1615612b4c5760405162461bcd60e51b815260040161094890613c15565b60405163eaadf2b560e01b81525f6004820152602481018590526001604482015273cef1faf438fde21c253afead5e8709f8a3cc17039063eaadf2b590606401610f6c565b600a546001600160a01b0316331480612c2e575060115f9054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c199190613a62565b6001600160a01b0316336001600160a01b0316145b612c4a5760405162461bcd60e51b815260040161094890613a7d565b5f5b600e54811015612d5057600e8181548110612c6957612c69613e6f565b5f918252602090912001546001600160a01b0390811690831603612ccf5760405162461bcd60e51b815260206004820152601d60248201527f43757276652f63616e6e6f742d64656c6574652d6e756d6572616972650000006044820152606401610948565b600f8181548110612ce257612ce2613e6f565b5f918252602090912001546001600160a01b0390811690831603612d485760405162461bcd60e51b815260206004820152601b60248201527f43757276652f63616e6e6f742d64656c6574652d7265736572766500000000006044820152606401610948565b600101612c4c565b506001600160a01b03165f90815260056020526040902080546001600160a81b0319169055565b600a546001600160a01b0316331480612e14575060115f9054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dff9190613a62565b6001600160a01b0316336001600160a01b0316145b612e305760405162461bcd60e51b815260040161094890613a7d565b60405163231888b760e01b81525f60048201526024810186905260448101859052606481018490526084810183905260a481018290527322222fd8fd35c8ff1a416dc47fd92540c06fb35d9063231888b79060c4015f6040518083038186803b158015612e9b575f5ffd5b505af4158015612ead573d5f5f3e3d5ffd5b505050505050505050565b5f81804210612ed95760405162461bcd60e51b815260040161094890613b31565b60115f9054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f4d9190613b16565b15612f6a5760405162461bcd60e51b815260040161094890613b68565b60105460ff1615612f8d5760405162461bcd60e51b815260040161094890613bc5565b612f956133a3565b601054610100900460ff1615612fbd5760405162461bcd60e51b815260040161094890613c15565b60105462010000900460ff16612fe55760405162461bcd60e51b815260040161094890613aec565b6010805462ff00001916908190556040805160a0810182526001600160a01b0389811682527f000000000000000000000000000000000000000000000000000000000000000081166020830152818301899052336060830152630100000090930490921660808301525163fd17568b60e01b81527351fdb00985168ffee4033ec99286eb1bc29b76c19063fd17568b90613088905f908590600190600401613cc6565b602060405180830381865af41580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190613c72565b9250848310156130e95760405162461bcd60e51b815260040161094890613d11565b50506010805462ff0000191662010000179055949350505050565b601154604080516306a8e1cd60e41b815290516060926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa15801561314c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131709190613b16565b1561318d5760405162461bcd60e51b815260040161094890613b68565b60105460ff16156131b05760405162461bcd60e51b815260040161094890613bc5565b6040516330771ac760e11b81525f60048201526024810183905273cef1faf438fde21c253afead5e8709f8a3cc1703906360ee358e906044015f60405180830381865af4158015613203573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108899190810190613e3d565b600a546001600160a01b03163314806132c7575060115f9054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561328e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132b29190613a62565b6001600160a01b0316336001600160a01b0316145b6132e35760405162461bcd60e51b815260040161094890613a7d565b6001600160a01b0381166133485760405162461bcd60e51b815260206004820152602660248201527f43757276652f6e65772d6f776e65722d63616e6e6f742d62652d7a65726f2d6160448201526564647265737360d01b6064820152608401610948565b600a546040516001600160a01b038084169216907f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee67905f90a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146133d7575f5ffd5b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613433908590613439565b50505050565b5f61348d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135119092919063ffffffff16565b905080515f14806134ad5750808060200190518101906134ad9190613b16565b61350c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610948565b505050565b6060611a6d84845f85613526565b9392505050565b6060824710156135875760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610948565b5f5f866001600160a01b031685876040516135a29190613f92565b5f6040518083038185875af1925050503d805f81146135dc576040519150601f19603f3d011682016040523d82523d5f602084013e6135e1565b606091505b50915091506135f2878383876135fd565b979650505050505050565b6060831561366b5782515f03613664576001600160a01b0385163b6136645760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610948565b5081611a6d565b611a6d83838151156136805781518083602001fd5b8060405162461bcd60e51b8152600401610948919061373e565b6040518061014001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f81526020015f81525090565b5f602082840312156136fc575f5ffd5b81356001600160e01b03198116811461351f575f5ffd5b8015158114613720575f5ffd5b50565b5f60208284031215613733575f5ffd5b813561351f81613713565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114613720575f5ffd5b5f5f60408385031215613798575f5ffd5b82356137a381613773565b946020939093013593505050565b5f5f5f5f5f60a086880312156137c5575f5ffd5b85356137d081613773565b945060208601356137e081613773565b94979496505050506040830135926060810135926080909101359150565b5f8151808452602084019350602083015f5b8281101561382e578151865260209586019590910190600101613810565b5093949350505050565b828152604060208201525f611a6d60408301846137fe565b5f5f60408385031215613861575f5ffd5b50508035926020909101359150565b602081525f61351f60208301846137fe565b5f5f5f60608486031215613894575f5ffd5b833561389f81613773565b925060208401356138af81613773565b929592945050506040919091013590565b5f602082840312156138d0575f5ffd5b813561351f81613773565b5f5f5f5f5f5f60c087890312156138f0575f5ffd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f5f5f6060848603121561392c575f5ffd5b833561393781613773565b95602085013595506040909401359392505050565b5f6020828403121561395c575f5ffd5b5035919050565b5f5f5f5f60808587031215613976575f5ffd5b843561398181613773565b9350602085013561399181613773565b925060408501356139a181613773565b915060608501356139b181613773565b939692955090935050565b5f5f5f5f5f60a086880312156139d0575f5ffd5b505083359560208501359550604085013594606081013594506080013592509050565b5f5f60408385031215613a04575f5ffd5b8235613a0f81613773565b91506020830135613a1f81613773565b809150509250929050565b5f5f5f5f60808587031215613a3d575f5ffd5b8435613a4881613773565b966020860135965060408601359560600135945092505050565b5f60208284031215613a72575f5ffd5b815161351f81613773565b60208082526019908201527f43757276652f63616c6c65722d69732d6e6f742d6f776e657200000000000000604082015260600190565b600181811c90821680613ac857607f821691505b602082108103613ae657634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526010908201526f10dd5c9d994bdc994b595b9d195c995960821b604082015260600190565b5f60208284031215613b26575f5ffd5b815161351f81613713565b60208082526018908201527f43757276652f74782d646561646c696e652d7061737365640000000000000000604082015260600190565b60208082526039908201527f43757276652f66726f7a656e2d676c6f62616c6c792d6f6e6c792d616c6c6f7760408201527f696e672d70726f706f7274696f6e616c2d776974686472617700000000000000606082015260800190565b60208082526030908201527f43757276652f66726f7a656e2d6f6e6c792d616c6c6f77696e672d70726f706f60408201526f7274696f6e616c2d776974686472617760801b606082015260800190565b6020808252603d908201527f43757276652f656d657267656e63792d6f6e6c792d616c6c6f77696e672d656d60408201527f657267656e63792d70726f706f7274696f6e616c2d7769746864726177000000606082015260800190565b5f60208284031215613c82575f5ffd5b5051919050565b80516001600160a01b0390811683526020808301518216908401526040808301519084015260608083015182169084015260809182015116910152565b83815260e08101613cda6020830185613c89565b82151560c0830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561088957610889613cea565b6020808252601d908201527f43757276652f62656c6f772d6d696e2d7461726765742d616d6f756e74000000604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613d6b575f5ffd5b815167ffffffffffffffff811115613d8557613d85613d48565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715613db257613db2613d48565b604052918252602081850181019290810186841115613dcf575f5ffd5b6020860192505b83831015613dee578251815260209283019201613dd6565b5095945050505050565b5f5f60408385031215613e09575f5ffd5b8251602084015190925067ffffffffffffffff811115613e27575f5ffd5b613e3385828601613d5c565b9150509250929050565b5f60208284031215613e4d575f5ffd5b815167ffffffffffffffff811115613e63575f5ffd5b611a6d84828501613d5c565b634e487b7160e01b5f52603260045260245ffd5b5f6101608201905083825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e0830151613eec6101008401826001600160a01b03169052565b506101008301516101208301526101208301516101408301529392505050565b5f5f5f5f5f60a08688031215613f20575f5ffd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b808202811582820484141761088957610889613cea565b5f82613f7957634e487b7160e01b5f52601260045260245ffd5b500490565b82815260c0810161351f6020830184613c89565b5f82518060208501845e5f92019182525091905056fea2646970667358221220da77d3df8adb211ba23dbd595f0c84763de5e4633e3b339b3c1500ffa0ebafee64736f6c634300081b003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000668367b627f56a51b8c023143c76094ed5d500df00000000000000000000000090a3913ff4c5149e6c4eb808687e595f258ce4990000000000000000000000000000000000000000000000000000000000000012536564676520494452582f555344432076330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001273656467652d696472782d757364632d76330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000018bc5bcc660cf2b9ce3cd51a404afe1a0cbd3c22000000000000000000000000eb912b92c46f334c84bc6063c0eb46ec2d3436c300000000000000000000000018bc5bcc660cf2b9ce3cd51a404afe1a0cbd3c22000000000000000000000000eb912b92c46f334c84bc6063c0eb46ec2d3436c300000000000000000000000018bc5bcc660cf2b9ce3cd51a404afe1a0cbd3c22000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913000000000000000000000000d1b70c38c5ea9046acad9492d46a05ba0db897e9000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913000000000000000000000000d1b70c38c5ea9046acad9492d46a05ba0db897e9000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000006f05b59d3b20000