0 txs
0 calls
constructor
constructor()
functions
borrowTargetFactorNumerator
viewfunction borrowTargetFactorNumerator() view returns (uint256)
bVault
viewfunction bVault() view returns (address)
collateralFactorNumerator
viewfunction collateralFactorNumerator() view returns (uint256)
comptroller
viewfunction comptroller() view returns (address)
controller
viewfunction controller() view returns (address)
cToken
viewfunction cToken() view returns (address)
depositArbCheck
purefunction depositArbCheck() pure returns (bool)
factorDenominator
viewfunction factorDenominator() view returns (uint256)
feeDenominator
viewfunction feeDenominator() view returns (uint256)
fold
viewfunction fold() view returns (bool)
governance
viewfunction governance() view returns (address)
harvestMSIG
viewfunction harvestMSIG() view returns (address)
investedUnderlyingBalance
viewfunction investedUnderlyingBalance() view returns (uint256)
nextImplementation
viewfunction nextImplementation() view returns (address)
nextImplementationDelay
viewfunction nextImplementationDelay() view returns (uint256)
nextImplementationTimestamp
viewfunction nextImplementationTimestamp() view returns (uint256)
pausedInvesting
viewfunction pausedInvesting() view returns (bool)
pendingFee
viewfunction pendingFee() view returns (uint256)
platformFeeNumerator
viewfunction platformFeeNumerator() view returns (uint256)
profitSharingNumerator
viewfunction profitSharingNumerator() view returns (uint256)
rewardPool
viewfunction rewardPool() view returns (address)
rewardToken
viewfunction rewardToken() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
sell
viewfunction sell() view returns (bool)
shouldUpgrade
viewfunction shouldUpgrade() view returns (bool, address)
storedBalance
viewfunction storedBalance() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
strategistFeeNumerator
viewfunction strategistFeeNumerator() view returns (uint256)
totalFeeNumerator
viewfunction totalFeeNumerator() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
universalLiquidator
viewfunction universalLiquidator() view returns (address)
unsalvagableTokens
viewfunction unsalvagableTokens(address token) view returns (bool)
vault
viewfunction vault() view returns (address)
_setCollateralFactorNumerator
nonpayablefunction _setCollateralFactorNumerator(uint256 _numerator)
addRewardToken
nonpayablefunction addRewardToken(address _token)
continueInvesting
nonpayablefunction continueInvesting()
currentBalance
nonpayablefunction currentBalance() returns (uint256)
doHardWork
nonpayablefunction doHardWork()
emergencyExit
nonpayablefunction emergencyExit()
finalizeUpgrade
nonpayablefunction finalizeUpgrade()
initialize
nonpayablefunction initialize()
initialize
nonpayablefunction initialize(address _storage, address _underlying, address _vault, address _rewardPool, address _rewardToken, address _strategist)
initialize
nonpayablefunction initialize(address _storage)
initializeBaseStrategy
nonpayablefunction initializeBaseStrategy(address _storage, address _underlying, address _vault, address _cToken, address _comptroller, address _rewardToken, uint256 _borrowTargetFactorNumerator, uint256 _collateralFactorNumerator, uint256 _factorDenominator, bool _fold)
initializeStrategy
nonpayablefunction initializeStrategy(address _storage, address _vault)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[], uint256[] amounts, uint256[] feeAmounts, bytes)
salvage
nonpayablefunction salvage(address recipient, address token, uint256 amount)
scheduleUpgrade
nonpayablefunction scheduleUpgrade(address impl)
setBorrowTargetFactorNumerator
nonpayablefunction setBorrowTargetFactorNumerator(uint256 _numerator)
setFold
nonpayablefunction setFold(bool _fold)
setStorage
nonpayablefunction setStorage(address _store)
toggleMerklOperator
nonpayablefunction toggleMerklOperator(address merklClaim, address operator)
withdrawAllToVault
nonpayablefunction withdrawAllToVault()
withdrawToVault
nonpayablefunction withdrawToVault(uint256 amountUnderlying)
events
PlatformFeeLogInReward
event PlatformFeeLogInReward(address indexed treasury, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitsNotCollected
event ProfitsNotCollected(address indexed rewardToken, bool sell, bool floor)
ProfitsNotCollected
event ProfitsNotCollected(bool sell, bool floor)
StrategistFeeLogInReward
event StrategistFeeLogInReward(address indexed strategist, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061003c60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe266107bc565b7f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe251461006a5761006a6107e3565b61009560017fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dd6107bc565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc146100c3576100c36107e3565b6100ee60017fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5316107bc565b7fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5301461011c5761011c6107e3565b61014760017fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d426107bc565b7fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4114610175576101756107e3565b6101a060017fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bc06107bc565b7fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf146101ce576101ce6107e3565b6101f960017f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b96107bc565b7f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b814610227576102276107e3565b61025260017f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb76107bc565b7f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb614610280576102806107e3565b6102ab60017fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591b6107bc565b7fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a146102d9576102d96107e3565b61030460017fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02a6107bc565b7fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02914610332576103326107e3565b61035d60017f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3c6107bc565b7f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3b1461038b5761038b6107e3565b6103b660017f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844486107bc565b7f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb84447146103e4576103e46107e3565b61040f60017f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22f6107bc565b7f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e1461043d5761043d6107e3565b61046860017f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b326107bc565b7f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b3114610496576104966107e3565b6104c160017f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458e6107bc565b7f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d146104ef576104ef6107e3565b61051a60017f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d5696107bc565b7f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d56814610548576105486107e3565b61057360017f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e2366107bc565b7f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235146105a1576105a16107e3565b6105cc60017f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a36107bc565b7f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2146105fa576105fa6107e3565b61062560017f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd986107bc565b7f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd9714610653576106536107e3565b61067e60017f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64b6107bc565b7f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a146106ac576106ac6107e3565b6106d760017f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ef6107bc565b7f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ee14610705576107056107e3565b61073060017fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1ce6107bc565b7fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd1461075e5761075e6107e3565b61078960017f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44bb6107bc565b7f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba146107b7576107b76107e3565b6107f9565b818103818111156107dd57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b6159b4806108086000396000f3fe6080604052600436106102695760003560e01c806303140ff41461027557806306974e8d1461029d57806309ff18f0146102bf5780630c80447a146102d45780631113ef52146102f6578063180b0d7e146103165780631c03e6cc1461032b5780631fe4a6861461034b57806320d1ceaf1461036057806320d88ac714610375578063394b71cf1461038a5780633f282b8d146103ac57806345710074146103cc57806345d01e4a146103f15780634d352ab2146104065780634ed65416146104265780634fa5d85414610446578063501859461461045b5780635641ec031461047b5780635aa6e675146104905780635fe3b567146104a5578063643090bc146104ba57806366666aa9146104cf57806369e527da146104e45780636f307dc3146104f9578063759098881461050e57806375f6d6ce146105235780637bb7bed1146105435780638129fc1c1461056357806382de9c1b146105785780639137c1a71461058d5780639a138d6d146105ad5780639a508c8e146105cd5780639d16acfd146105e2578063a836569314610616578063b5d7a94f1461062b578063b60f151a14610640578063b8d3370b14610655578063bfd131f11461066a578063c23ff8b61461067f578063c2a2a07b1461069f578063c4d66de8146106b3578063cc2a9a5b146106d3578063ce845d1d146106f3578063ce8c42e814610708578063d3df8aa414610728578063db6204851461073d578063e684f46a14610752578063e9eca99414610767578063ec0956061461077c578063f04f2707146107a4578063f77c4791146107c4578063f7c618c1146107d9578063fbfa77cf146107ee57600080fd5b3661027057005b600080fd5b34801561028157600080fd5b5061028a610803565b6040519081526020015b60405180910390f35b3480156102a957600080fd5b506102b2610873565b6040516102949190614db4565b3480156102cb57600080fd5b506102b26108de565b3480156102e057600080fd5b506102f46102ef366004614ddd565b6108f6565b005b34801561030257600080fd5b506102f4610311366004614dfa565b6109b5565b34801561032257600080fd5b5061028a610abf565b34801561033757600080fd5b506102f4610346366004614ddd565b610b06565b34801561035757600080fd5b506102b2610be7565b34801561036c57600080fd5b5061028a610bff565b34801561038157600080fd5b5061028a610c46565b34801561039657600080fd5b506102b26000805160206158df83398151915281565b3480156103b857600080fd5b506102f46103c7366004614e3b565b610c5e565b3480156103d857600080fd5b506103e1610d70565b6040519015158152602001610294565b3480156103fd57600080fd5b5061028a610d89565b34801561041257600080fd5b506102f4610421366004614e54565b610e2b565b34801561043257600080fd5b506102f4610441366004614e9b565b610f2e565b34801561045257600080fd5b506102f4611256565b34801561046757600080fd5b506103e1610476366004614ddd565b6112fe565b34801561048757600080fd5b506102f4611368565b34801561049c57600080fd5b506102b261140c565b3480156104b157600080fd5b506102b2611453565b3480156104c657600080fd5b5061028a61146b565b3480156104db57600080fd5b506102b2611483565b3480156104f057600080fd5b506102b261149b565b34801561050557600080fd5b506102b26114b3565b34801561051a57600080fd5b5061028a6114cb565b34801561052f57600080fd5b506102f461053e366004614f50565b6114e3565b34801561054f57600080fd5b506102b261055e366004614e3b565b61158b565b34801561056f57600080fd5b506102f46115b5565b34801561058457600080fd5b5061028a611644565b34801561059957600080fd5b506102f46105a8366004614ddd565b61165c565b3480156105b957600080fd5b506102f46105c8366004614e54565b61174b565b3480156105d957600080fd5b506102f461183f565b3480156105ee57600080fd5b506105f76118d7565b6040805192151583526001600160a01b03909116602083015201610294565b34801561062257600080fd5b5061028a611923565b34801561063757600080fd5b5061028a61196a565b34801561064c57600080fd5b5061028a611982565b34801561066157600080fd5b5061028a6119c9565b34801561067657600080fd5b506102f46119ef565b34801561068b57600080fd5b506102f461069a366004614e3b565b611b23565b3480156106ab57600080fd5b5060016103e1565b3480156106bf57600080fd5b506102f46106ce366004614ddd565b611ca3565b3480156106df57600080fd5b506102f46106ee366004614f6d565b611d18565b3480156106ff57600080fd5b5061028a611dd4565b34801561071457600080fd5b506102f4610723366004614e3b565b611ed9565b34801561073457600080fd5b506103e16120bd565b34801561074957600080fd5b506102f46120d6565b34801561075e57600080fd5b506103e1612170565b34801561077357600080fd5b5061028a612189565b34801561078857600080fd5b506102b273f3d1a027e858976634f81b7c41b09a05a46eda2181565b3480156107b057600080fd5b506102f46107bf366004615134565b6121a1565b3480156107d057600080fd5b506102b2612423565b3480156107e557600080fd5b506102b261246a565b3480156107fa57600080fd5b506102b2612482565b600061080d612423565b6001600160a01b03166303140ff46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190615252565b905090565b600061087d612423565b6001600160a01b03166306974e8d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061526b565b600061086e60008051602061575f8339815191525490565b6108fe61249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109299190614db4565b602060405180830381865afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190615288565b61098f5760405162461bcd60e51b8152600401610986906152a5565b60405180910390fd5b610998816124ad565b6109b26109ad6109a6611923565b42906124c4565b6124d7565b50565b6109bd61249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109e89190614db4565b602060405180830381865afa158015610a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a299190615288565b610a455760405162461bcd60e51b8152600401610986906152a5565b610a4e826112fe565b15610aa65760405162461bcd60e51b815260206004820152602260248201527f746f6b656e20697320646566696e6564206173206e6f742073616c76616761626044820152616c6560f01b6064820152608401610986565b610aba6001600160a01b03831684836124ee565b505050565b6000610ac9612423565b6001600160a01b031663180b0d7e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b610b0e61249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610b399190614db4565b602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190615288565b610b965760405162461bcd60e51b8152600401610986906152a5565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b600061086e60008051602061577f8339815191525490565b6000610c09612423565b6001600160a01b03166320d1ceaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061595f8339815191525490565b610c6661249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610c919190614db4565b602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd29190615288565b610cee5760405162461bcd60e51b8152600401610986906152a5565b610cf661196a565b8110610d595760405162461bcd60e51b815260206004820152602c60248201527f5461726765742073686f756c64206265206c6f776572207468616e20636f6c6c60448201526b185d195c985b081b1a5b5a5d60a21b6064820152608401610986565b6109b260008051602061591f833981519152829055565b600061086e6000805160206156df833981519152612544565b600080610d946114b3565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610dbf9190614db4565b602060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e009190615252565b9050610e25610e0d61146b565b610e1f610e18612189565b84906124c4565b90612557565b91505090565b600054610100900460ff1680610e44575060005460ff16155b610e605760405162461bcd60e51b8152600401610986906152cd565b600054610100900460ff16158015610e82576000805461ffff19166101011790555b7382af49447d8a07e3bd95bd0d56f35241523fbab17368a34332983f4bf866768dd6d6e638b02ef5e1f073317c1a5739f39046e20b08ac9beea3f10fd4332673c1eb7689147c81ac840d4ff0d298489fc7986d52610eef8785888686866102da6102ed6103e86001610f2e565b60408051602081019091526001600160a01b0382168152610f139060019081614d3a565b50505050508015610aba576000805461ff0019169055505050565b600054610100900460ff1680610f47575060005460ff16155b610f635760405162461bcd60e51b8152600401610986906152cd565b600054610100900460ff16158015610f85576000805461ffff19166101011790555b610fa78b8b8b8a8a73f3d1a027e858976634f81b7c41b09a05a46eda21611d18565b896001600160a01b0316886001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611013919061526b565b6001600160a01b03161461105f5760405162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b6044820152606401610986565b61106888612563565b6110718761257a565b8284106110d55760405162461bcd60e51b815260206004820152602c60248201527f4e756d657261746f722073686f756c6420626520736d616c6c6572207468616e60448201526b103232b737b6b4b730ba37b960a11b6064820152608401610986565b83851061112e5760405162461bcd60e51b815260206004820152602160248201527f5461726765742073686f756c64206265206c6f776572207468616e206c696d696044820152601d60fa1b6064820152608401610986565b61113783612591565b61114e60008051602061573f833981519152859055565b61116560008051602061591f833981519152869055565b61117d60008051602061589f833981519152836125a8565b6040805160018082528183019092526000916020808301908036833701905050905088816000815181106111b3576111b361531b565b6001600160a01b039283166020918202929092010152604051631853304760e31b81529089169063c2998238906111ee908490600401615376565b6000604051808303816000875af115801561120d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112359190810190615389565b50508015611249576000805461ff00191690555b5050505050505050505050565b61125e612482565b6001600160a01b0316336001600160a01b031614806112955750611280612423565b6001600160a01b0316336001600160a01b0316145b806112b857506112a361140c565b6001600160a01b0316336001600160a01b0316145b6112d45760405162461bcd60e51b81526004016109869061541e565b6112dc6125c2565b6112e46126bf565b6112ec6127c5565b6112f4612b80565b6112fc612c68565b565b600061130861246a565b6001600160a01b0316826001600160a01b0316148061133f575061132a6114b3565b6001600160a01b0316826001600160a01b0316145b80611362575061134d61149b565b6001600160a01b0316826001600160a01b0316145b92915050565b61137061249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161139b9190614db4565b602060405180830381865afa1580156113b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dc9190615288565b6113f85760405162461bcd60e51b8152600401610986906152a5565b6114026000612c8b565b6112f46001612cbe565b600061141661249a565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e60008051602061585f8339815191525490565b600061086e6000805160206158ff8339815191525490565b600061086e60008051602061579f8339815191525490565b600061086e6000805160206156ff8339815191525490565b600061086e6000805160206158bf8339815191525490565b600061086e60008051602061591f8339815191525490565b6114eb61249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016115169190614db4565b602060405180830381865afa158015611533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115579190615288565b6115735760405162461bcd60e51b8152600401610986906152a5565b6109b260008051602061589f833981519152826125a8565b6001818154811061159b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff16806115ce575060005460ff16155b6115ea5760405162461bcd60e51b8152600401610986906152cd565b600054610100900460ff1615801561160c576000805461ffff19166101011790555b60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe255580156109b2576000805461ff001916905550565b600061086e60008051602061581f8339815191525490565b61166461249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161168f9190614db4565b602060405180830381865afa1580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d09190615288565b6116ec5760405162461bcd60e51b8152600401610986906152a5565b6001600160a01b0381166117425760405162461bcd60e51b815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d70747900006044820152606401610986565b6109b281612cd6565b61175361249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161177e9190614db4565b602060405180830381865afa15801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf9190615288565b6117db5760405162461bcd60e51b8152600401610986906152a5565b60405163bdac7ca360e01b81526001600160a01b0383169063bdac7ca3906118099030908590600401615443565b600060405180830381600087803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b505050505050565b61184761249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016118729190614db4565b602060405180830381865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b39190615288565b6118cf5760405162461bcd60e51b8152600401610986906152a5565b6112fc612ce8565b6000806118e2611644565b158015906118f657506118f3611644565b42115b8015611913575060006119076108de565b6001600160a01b031614155b61191b6108de565b915091509091565b600061192d612423565b6001600160a01b031663a83656936040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061573f8339815191525490565b600061198c612423565b6001600160a01b031663b60f151a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e6119d6611982565b6119e96119e1610bff565b6119e9610803565b906124c4565b6119f7612482565b6001600160a01b0316336001600160a01b03161480611a2e5750611a19612423565b6001600160a01b0316336001600160a01b0316145b80611a515750611a3c61140c565b6001600160a01b0316336001600160a01b0316145b611a6d5760405162461bcd60e51b81526004016109869061541e565b6000611a776114b3565b9050611a836001612c8b565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611ab2903090600401614db4565b602060405180830381865afa158015611acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af39190615252565b90508015611b1757611b17611b06612482565b6001600160a01b03841690836124ee565b611b1f612c68565b5050565b611b2b61249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401611b569190614db4565b602060405180830381865afa158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190615288565b611bb35760405162461bcd60e51b8152600401610986906152a5565b611bbb610c46565b811115611c185760405162461bcd60e51b815260206004820152602560248201527f436f6c6c61746572616c20666163746f722063616e6e6f742062652074686973604482015264040d0d2ced60db1b6064820152608401610986565b611c206114cb565b8111611c8c5760405162461bcd60e51b815260206004820152603560248201527f436f6c6c61746572616c20666163746f722073686f756c642062652068696768604482015274195c881d1a185b88189bdc9c9bddc81d185c99d95d605a1b6064820152608401610986565b6109b260008051602061573f833981519152829055565b600054610100900460ff1680611cbc575060005460ff16155b611cd85760405162461bcd60e51b8152600401610986906152cd565b600054610100900460ff16158015611cfa576000805461ffff19166101011790555b611d0382612cfc565b8015611b1f576000805461ff00191690555050565b600054610100900460ff1680611d31575060005460ff16155b611d4d5760405162461bcd60e51b8152600401610986906152cd565b600054610100900460ff16158015611d6f576000805461ffff19166101011790555b611d7887611ca3565b611d8186612d64565b611d8a85612d7b565b611d9384612d92565b611d9c83612da9565b611da582612dc0565b611daf6001612dd7565b611db96000612cbe565b8015611dcb576000805461ff00191690555b50505050505050565b600080611ddf61149b565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401611e0f9190614db4565b6020604051808303816000875af1158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e529190615252565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401611e829190614db4565b6020604051808303816000875af1158015611ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec59190615252565b9050611ed18282612557565b935050505090565b611ee1612482565b6001600160a01b0316336001600160a01b03161480611f185750611f03612423565b6001600160a01b0316336001600160a01b0316145b80611f3b5750611f2661140c565b6001600160a01b0316336001600160a01b0316145b611f575760405162461bcd60e51b81526004016109869061541e565b611f5f612def565b6000611f696114b3565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f999190614db4565b602060405180830381865afa158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda9190615252565b9050808311611fff57610aba611fee612482565b6001600160a01b03841690856124ee565b600061200b8483612557565b905061201681612e65565b612032612021612482565b6001600160a01b03851690866124ee565b6040516370a0823160e01b81526001600160a01b038416906370a082319061205e903090600401614db4565b602060405180830381865afa15801561207b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209f9190615252565b915081156120af576120af612b80565b6120b7612c68565b50505050565b600061086e60008051602061583f833981519152612544565b6120de61249a565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016121099190614db4565b602060405180830381865afa158015612126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214a9190615288565b6121665760405162461bcd60e51b8152600401610986906152a5565b6112fc6000612cbe565b600061086e60008051602061589f833981519152612544565b600061086e60008051602061587f8339815191525490565b336000805160206158df833981519152146121bb57600080fd5b60005462010000900460ff1615806121dd57506000546301000000900460ff16155b6122205760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206f6e652063616e206265207472756560601b6044820152606401610986565b60005462010000900460ff168061224057506000546301000000900460ff165b6122815760405162461bcd60e51b81526020600482015260126024820152714f6e652068617320746f206265207472756560701b6044820152606401610986565b600061228b6114b3565b905060006122d6846000815181106122a5576122a561531b565b6020026020010151866000815181106122c0576122c061531b565b60200260200101516124c490919063ffffffff16565b60005490915062010000900460ff161561231b5761230d856000815181106123005761230061531b565b6020026020010151612fe8565b612316816131f5565b612401565b600061232561149b565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016123559190614db4565b6020604051808303816000875af1158015612374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123989190615252565b905060006123c0886000815181106123b2576123b261531b565b602002602001015183613278565b90506123d76001600160a01b03861684600061328e565b6123eb6001600160a01b038616848361328e565b6123f481613391565b6123fd84613449565b5050505b6118376001600160a01b0383166000805160206158df833981519152836124ee565b600061242d61249a565b6001600160a01b031663f77c47916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e6000805160206157ff8339815191525490565b600061086e6000805160206157bf8339815191525490565b60008051602061571f8339815191525490565b6109b260008051602061575f833981519152829055565b60006124d08284615473565b9392505050565b6109b260008051602061581f833981519152829055565b610aba8363a9059cbb60e01b848460405160240161250d929190615486565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261353b565b600061254e825490565b60011492915050565b60006124d0828461549f565b6109b26000805160206156ff833981519152829055565b6109b260008051602061585f833981519152829055565b6109b260008051602061595f833981519152829055565b611b1f82826125b85760006125bb565b60015b60ff169055565b6125ca612def565b60006125d461146b565b905060648111156109b2576125e881613449565b60006125f26114b3565b905061266a82826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016126249190614db4565b602060405180830381865afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126659190615252565b613278565b915060006126916126796119c9565b61268b612684610abf565b8690613610565b9061361c565b905061269d8282613628565b610aba6000805160206158ff8339815191526126bb85610e1f61146b565b9055565b60006126c9611453565b6001600160a01b03166361252fd16040518163ffffffff1660e01b8152600401600060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261272e91908101906154b2565b905060005b8151811015611b1f5760008282815181106127505761275061531b565b60200260200101519050806001600160a01b031663ca37271b306040518263ffffffff1660e01b81526004016127869190614db4565b600060405180830381600087803b1580156127a057600080fd5b505af11580156127b4573d6000803e3d6000fd5b505060019093019250612733915050565b6127cd610d70565b612815577f408a4b113351e616bb41bad991f29bbad84b43c3810e7492a6bc7c6388dfe0c26127fa610d70565b604080519115158252600060208301520160405180910390a1565b600061281f61246a565b9050600061282b610873565b905060006128376114b3565b905060005b6001548110156129ad5760006001828154811061285b5761285b61531b565b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190612896903090600401614db4565b602060405180830381865afa1580156128b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d79190615252565b90506000811180156128fb5750856001600160a01b0316826001600160a01b031614155b156129a3576129156001600160a01b03831686600061328e565b6129296001600160a01b038316868361328e565b60405163d5bcb9b560e01b81526001600160a01b0386169063d5bcb9b59061295e9085908a9086906001903090600401615546565b6020604051808303816000875af115801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a19190615252565b505b505060010161283c565b506040516370a0823160e01b81526000906001600160a01b038516906370a08231906129dd903090600401614db4565b602060405180830381865afa1580156129fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1e9190615252565b9050655af3107a4000811015612a345750505050565b612a3e8482613628565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612a6d903090600401614db4565b602060405180830381865afa158015612a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aae9190615252565b905080600003612abf575050505050565b846001600160a01b0316836001600160a01b031614612b7957612aed6001600160a01b03861685600061328e565b612b016001600160a01b038616858361328e565b60405163d5bcb9b560e01b81526001600160a01b0385169063d5bcb9b590612b36908890879086906001903090600401615546565b6020604051808303816000875af1158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118379190615252565b5050505050565b612b886120bd565b15612bc75760405162461bcd60e51b815260206004820152600f60248201526e656d657267656e637920737461746560881b6044820152606401610986565b6000612bd16114b3565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612c019190614db4565b602060405180830381865afa158015612c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c429190615252565b90508015612c5357612c5381612fe8565b612c5b612170565b15611b1f57611b1f6139de565b6000612c72611dd4565b90506109b260008051602061587f833981519152829055565b8015612cae57612c996125c2565b612ca16126bf565b612ca96127c5565b612cb6565b612cb6612def565b6109b2613fb7565b6109b260008051602061583f833981519152826125a8565b60008051602061571f83398151915255565b612cf260006124ad565b6112fc60006124d7565b600054610100900460ff1680612d15575060005460ff16155b612d315760405162461bcd60e51b8152600401610986906152cd565b600054610100900460ff16158015612d53576000805461ffff19166101011790555b612d5c82612cd6565b611d036115b5565b6109b26000805160206158bf833981519152829055565b6109b26000805160206157bf833981519152829055565b6109b260008051602061579f833981519152829055565b6109b26000805160206157ff833981519152829055565b6109b260008051602061577f833981519152829055565b6109b26000805160206156df833981519152826125a8565b6000612df9612189565b612e01611dd4565b1115612e3f576000612e1c612e14612189565b610e1f611dd4565b9050612e3b612e29610abf565b61268b612e346119c9565b8490613610565b9150505b612e5d6000805160206158ff8339815191526126bb836119e961146b565b6109b2612c68565b6000612e6f6114b3565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e9f9190614db4565b602060405180830381865afa158015612ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee09190615252565b9050612f0683612eee612170565b612ef957600061424c565b612f016114cb565b61424c565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190612f35903090600401614db4565b602060405180830381865afa158015612f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f769190615252565b905083612f838284612557565b10156120b75760405162461bcd60e51b815260206004820152602e60248201527f556e61626c6520746f2077697468647261772074686520656e7469726520616d60448201526d6f756e74556e6465726c79696e6760901b6064820152608401610986565b80600003612ff35750565b6000612ffd6114b3565b9050600061300961149b565b90506000613015611453565b6001600160a01b03166302c3bcbb836040518263ffffffff1660e01b81526004016130409190614db4565b602060405180830381865afa15801561305d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130819190615252565b90508060000361309057506000195b600061316d670de0b6b3a764000061268b856001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156130e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131059190615252565b866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131679190615252565b90613610565b905081811061317d575050505050565b846131888383612557565b1161319f5761319c6002610e1f8484612557565b94505b6131b46001600160a01b03851684600061328e565b6131c86001600160a01b038516848761328e565b60405163140e25ad60e31b8152600481018690526001600160a01b0384169063a0712d6890602401612b36565b806000036132005750565b61320861149b565b6001600160a01b031663c5ebeaec826040518263ffffffff1660e01b815260040161323591815260200190565b6020604051808303816000875af1158015613254573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f9190615252565b600081831061328757816124d0565b5090919050565b8015806133075750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906132c49030908690600401615443565b602060405180830381865afa1580156132e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133059190615252565b155b6133725760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610986565b610aba8363095ea7b360e01b848460405160240161250d929190615486565b8060000361339c5750565b60006133a66114b3565b905060006133b261149b565b90506133c96001600160a01b03831682600061328e565b6133dd6001600160a01b038316828561328e565b60405163073a938160e11b8152600481018490526001600160a01b03821690630e752702906024015b6020604051808303816000875af1158015613425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b79190615252565b806000036134545750565b600061345e61149b565b90506000816001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156134a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c69190615252565b9050806134db84670de0b6b3a7640000613610565b101561350e5760405163db006a7560e01b8152600160048201526001600160a01b0383169063db006a7590602401613406565b60405163852a12e360e01b8152600481018490526001600160a01b0383169063852a12e390602401613406565b6000613590826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145939092919063ffffffff16565b90508051600014806135b15750808060200190518101906135b19190615288565b610aba5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610986565b60006124d08284615576565b60006124d0828461558d565b60648111156138bb57600061363b610abf565b9050600061364e8261268b612684610803565b905060006136688361268b613661610bff565b8790613610565b905060006136828461268b61367b611982565b8890613610565b9050600061368e610be7565b9050600061369a612423565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fb919061526b565b9050876001600160a01b03166000805160206156bf833981519152888542604051613728939291906155af565b60405180910390a2876001600160a01b0316816001600160a01b031660008051602061593f833981519152898742604051613765939291906155af565b60405180910390a3876001600160a01b0316826001600160a01b03166000805160206157df8339815191528988426040516137a2939291906155af565b60405180910390a360006137b4612423565b6001600160a01b031663a98e929c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613815919061526b565b905061382c6001600160a01b038a1682600061328e565b6138406001600160a01b038a16828a61328e565b604051631112a1b760e11b81526001600160a01b038a81166004830152602482018690526044820188905260648201879052821690632225436e90608401600060405180830381600087803b15801561389857600080fd5b505af11580156138ac573d6000803e3d6000fd5b50505050505050505050505050565b816001600160a01b03166000805160206156bf833981519152600080426040516138e7939291906155af565b60405180910390a2816001600160a01b0316613901612423565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613962919061526b565b6001600160a01b031660008051602061593f8339815191526000804260405161398d939291906155af565b60405180910390a3816001600160a01b03166139a7610be7565b6001600160a01b03166000805160206157df833981519152600080426040516139d2939291906155af565b60405180910390a35050565b60006139e861149b565b905060006139f4610c46565b90506000613a006114cb565b90506000836001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401613a309190614db4565b6020604051808303816000875af1158015613a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a739190615252565b90506000846001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401613aa39190614db4565b6020604051808303816000875af1158015613ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae69190615252565b90506000613af48383612557565b90506000613b0f613b058787612557565b61268b8488613610565b905080831115613b2a57613b236000612e65565b5081613db3565b6000613b34611453565b90506000816001600160a01b0316634a5844328a6040518263ffffffff1660e01b8152600401613b649190614db4565b602060405180830381865afa158015613b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba59190615252565b90506000826001600160a01b03166302c3bcbb8b6040518263ffffffff1660e01b8152600401613bd59190614db4565b602060405180830381865afa158015613bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c169190615252565b905081600003613c265760001991505b80600003613c3357506000195b60008a6001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c979190615252565b90506000613d4c670de0b6b3a764000061268b8e6001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d0e9190615252565b8f6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613143573d6000803e3d6000fd5b9050600084831015613d9857613d676002610e1f8786612557565b905083821015613d9057613d89613d836002610e1f8786612557565b82613278565b9050613d9c565b506000613d9c565b5060005b613daa876126658b846124c4565b96505050505050505b6000613dbf8285612557565b90506000613dcb6114b3565b90506000816001600160a01b03166370a082316000805160206158df8339815191526040518263ffffffff1660e01b8152600401613e099190614db4565b602060405180830381865afa158015613e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4a9190615252565b905080831115613e6257613e5d846145aa565b613fab565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505060408051600060208201819052929350016040516020818303038152906040529050613ecf6114b3565b83600081518110613ee257613ee261531b565b60200260200101906001600160a01b031690816001600160a01b0316815250508582600081518110613f1657613f1661531b565b60209081029190910101526000805462ff0000191662010000179055604051632e1c224f60e11b81526000805160206158df83398151915290635c38449e90613f69903090879087908790600401615615565b600060405180830381600087803b158015613f8357600080fd5b505af1158015613f97573d6000803e3d6000fd5b50506000805462ff00001916905550505050505b50505050505050505050565b6000613fc161149b565b90506000816001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140279190615252565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016140579190614db4565b6020604051808303816000875af1158015614076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061409a9190615252565b90506000836001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016140ca9190614db4565b6020604051808303816000875af11580156140e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061410d9190615252565b9050600061412661411c61146b565b610e1f8585612557565b905061413c6141358286613278565b600061424c565b846001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561417a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419e9190615252565b604051633af9e66960e01b81529094506001600160a01b03861690633af9e669906141cd903090600401614db4565b6020604051808303816000875af11580156141ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142109190615252565b925061421a61146b565b6142248486613278565b1115612b7957612b7961424761423d60016119e961146b565b610e1f8688613278565b613449565b600061425661149b565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016142869190614db4565b6020604051808303816000875af11580156142a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c99190615252565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016142f99190614db4565b6020604051808303816000875af1158015614318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061433c9190615252565b905060008061434b8484612557565b905060006143598289612557565b905061437461436a88610e1f610c46565b61268b838a613610565b9250505060008183101561438a57506000614397565b6143948383612557565b90505b60006143a16114b3565b90506000816001600160a01b03166370a082316000805160206158df8339815191526040518263ffffffff1660e01b81526004016143df9190614db4565b602060405180830381865afa1580156143fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144209190615252565b90508083111561443957614434898561485b565b614588565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805160006020820181905292935001604051602081830303815290604052905084836000815181106144b2576144b261531b565b60200260200101906001600160a01b031690816001600160a01b03168152505085826000815181106144e6576144e661531b565b60209081029190910101526000805463ff00000019166301000000179055604051632e1c224f60e11b81526000805160206158df83398151915290635c38449e9061453b903090879087908790600401615615565b600060405180830381600087803b15801561455557600080fd5b505af1158015614569573d6000803e3d6000fd5b50506000805463ff000000191690555061458490508c613449565b5050505b505050505050505050565b60606145a28484600085614bc1565b949350505050565b60006145b46114b3565b905060006145c061149b565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016145f09190614db4565b6020604051808303816000875af115801561460f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146339190615252565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016146639190614db4565b6020604051808303816000875af1158015614682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a69190615252565b90505b84821015612b795760006146bd8684612557565b905060006146db84610e1f6146d0610c46565b61268b61367b61196a565b90506146ef6146ea8383613278565b6131f5565b6040516370a0823160e01b81526000906001600160a01b038816906370a082319061471e903090600401614db4565b602060405180830381865afa15801561473b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061475f9190615252565b905080156147705761477081612fe8565b6040516305eff7ef60e21b81526001600160a01b038716906317bfdfbc9061479c903090600401614db4565b6020604051808303816000875af11580156147bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147df9190615252565b604051633af9e66960e01b81529095506001600160a01b03871690633af9e6699061480e903090600401614db4565b6020604051808303816000875af115801561482d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148519190615252565b93505050506146a9565b60006148656114b3565b9050600061487161149b565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016148a19190614db4565b6020604051808303816000875af11580156148c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e49190615252565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016149149190614db4565b6020604051808303816000875af1158015614933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149579190615252565b90505b84821115614b1e57600061497a61496f61196a565b61268b612684610c46565b905060006149888488612557565b905060006149a36149998585612557565b6126658b856124c4565b90506149ae81613449565b6040516370a0823160e01b81526000906001600160a01b038916906370a08231906149dd903090600401614db4565b602060405180830381865afa1580156149fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a1e9190615252565b9050614a32614a2d8483613278565b613391565b6040516305eff7ef60e21b81526001600160a01b038816906317bfdfbc90614a5e903090600401614db4565b6020604051808303816000875af1158015614a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa19190615252565b604051633af9e66960e01b81529096506001600160a01b03881690633af9e66990614ad0903090600401614db4565b6020604051808303816000875af1158015614aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b139190615252565b94505050505061495a565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190614b4d903090600401614db4565b602060405180830381865afa158015614b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b8e9190615252565b905086811015611dcb576000614ba48883612557565b90506000614bb28486612557565b90506145886142478383613278565b606082471015614c225760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610986565b600080866001600160a01b03168587604051614c3e919061568f565b60006040518083038185875af1925050503d8060008114614c7b576040519150601f19603f3d011682016040523d82523d6000602084013e614c80565b606091505b5091509150614c9187838387614c9c565b979650505050505050565b60608315614d0b578251600003614d04576001600160a01b0385163b614d045760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610986565b50816145a2565b6145a28383815115614d205781518083602001fd5b8060405162461bcd60e51b815260040161098691906156ab565b828054828255906000526020600020908101928215614d8f579160200282015b82811115614d8f57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614d5a565b50614d9b929150614d9f565b5090565b5b80821115614d9b5760008155600101614da0565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146109b257600080fd5b600060208284031215614def57600080fd5b81356124d081614dc8565b600080600060608486031215614e0f57600080fd5b8335614e1a81614dc8565b92506020840135614e2a81614dc8565b929592945050506040919091013590565b600060208284031215614e4d57600080fd5b5035919050565b60008060408385031215614e6757600080fd5b8235614e7281614dc8565b91506020830135614e8281614dc8565b809150509250929050565b80151581146109b257600080fd5b6000806000806000806000806000806101408b8d031215614ebb57600080fd5b8a35614ec681614dc8565b995060208b0135614ed681614dc8565b985060408b0135614ee681614dc8565b975060608b0135614ef681614dc8565b965060808b0135614f0681614dc8565b955060a08b0135614f1681614dc8565b945060c08b0135935060e08b013592506101008b013591506101208b0135614f3d81614e8d565b809150509295989b9194979a5092959850565b600060208284031215614f6257600080fd5b81356124d081614e8d565b60008060008060008060c08789031215614f8657600080fd5b8635614f9181614dc8565b95506020870135614fa181614dc8565b94506040870135614fb181614dc8565b93506060870135614fc181614dc8565b92506080870135614fd181614dc8565b915060a0870135614fe181614dc8565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561502d5761502d614fef565b604052919050565b60006001600160401b0382111561504e5761504e614fef565b5060051b60200190565b600082601f83011261506957600080fd5b813561507c61507782615035565b615005565b8082825260208201915060208360051b86010192508583111561509e57600080fd5b602085015b838110156150bb5780358352602092830192016150a3565b5095945050505050565b600082601f8301126150d657600080fd5b81356001600160401b038111156150ef576150ef614fef565b615102601f8201601f1916602001615005565b81815284602083860101111561511757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561514a57600080fd5b84356001600160401b0381111561516057600080fd5b8501601f8101871361517157600080fd5b803561517f61507782615035565b8082825260208201915060208360051b8501019250898311156151a157600080fd5b6020840193505b828410156151cc5783356151bb81614dc8565b8252602093840193909101906151a8565b965050505060208501356001600160401b038111156151ea57600080fd5b6151f687828801615058565b93505060408501356001600160401b0381111561521257600080fd5b61521e87828801615058565b92505060608501356001600160401b0381111561523a57600080fd5b615246878288016150c5565b91505092959194509250565b60006020828403121561526457600080fd5b5051919050565b60006020828403121561527d57600080fd5b81516124d081614dc8565b60006020828403121561529a57600080fd5b81516124d081614e8d565b6020808252600e908201526d4e6f7420676f7665726e616e636560901b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561536c5781516001600160a01b0316865260209586019590910190600101615345565b5093949350505050565b6020815260006124d06020830184615331565b60006020828403121561539b57600080fd5b81516001600160401b038111156153b157600080fd5b8201601f810184136153c257600080fd5b80516153d061507782615035565b8082825260208201915060208360051b8501019250868311156153f257600080fd5b6020840193505b828410156154145783518252602093840193909101906153f9565b9695505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b808201808211156113625761136261545d565b6001600160a01b03929092168252602082015260400190565b818103818111156113625761136261545d565b6000602082840312156154c457600080fd5b81516001600160401b038111156154da57600080fd5b8201601f810184136154eb57600080fd5b80516154f961507782615035565b8082825260208201915060208360051b85010192508683111561551b57600080fd5b6020840193505b8284101561541457835161553581614dc8565b825260209384019390910190615522565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b80820281158282048414176113625761136261545d565b6000826155aa57634e487b7160e01b600052601260045260246000fd5b500490565b9283526020830191909152604082015260600190565b60005b838110156155e05781810151838201526020016155c8565b50506000910152565b600081518084526156018160208601602086016155c5565b601f01601f19169290920160200192915050565b6001600160a01b038516815260806020820181905260009061563990830186615331565b82810360408401528451808252602080870192019060005b8181101561566f578351835260209384019390920191600101615651565b5050838103606085015261568381866155e9565b98975050505050505050565b600082516156a18184602087016155c5565b9190910192915050565b6020815260006124d060208301846155e956fe1072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb6316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d568a7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844476a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b8efd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4111b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cddae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22ea07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a21841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44baa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e530000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c80af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97a65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cda9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c74e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3eea26469706673582212206994675774aec93ee4de0019c04f1d5498fd921b0bc9314e8c5065086117bfe364736f6c634300081a0033