Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- IFOInitializable
- Optimization enabled
- true
- Compiler version
- v0.6.12+commit.27d51765
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2022-04-29T09:59:18.552836Z
Contract source code
// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;pragma experimental ABIEncoderV2;/** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with GSN meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address payable) {return msg.sender;}function _msgData() internal view virtual returns (bytes memory) {this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691return msg.data;}}// File: @openzeppelin/contracts/access/Ownable.sol/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"AdminTokenRecovery","inputs":[{"type":"address","name":"tokenAddress","internalType":"address","indexed":false},{"type":"uint256","name":"amountTokens","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AdminWithdraw","inputs":[{"type":"uint256","name":"amountLP","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountOfferingToken","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false},{"type":"uint8","name":"pid","internalType":"uint8","indexed":true}],"anonymous":false},{"type":"event","name":"Harvest","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"offeringAmount","internalType":"uint256","indexed":false},{"type":"uint256","name":"excessAmount","internalType":"uint256","indexed":false},{"type":"uint8","name":"pid","internalType":"uint8","indexed":true}],"anonymous":false},{"type":"event","name":"NewHarvestBlocks","inputs":[{"type":"uint256","name":"harvestBlock","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewStartAndEndBlocks","inputs":[{"type":"uint256","name":"startBlock","internalType":"uint256","indexed":false},{"type":"uint256","name":"endBlock","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"PointParametersSet","inputs":[{"type":"uint256","name":"campaignId","internalType":"uint256","indexed":false},{"type":"uint256","name":"numberPoints","internalType":"uint256","indexed":false},{"type":"uint256","name":"thresholdPoints","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"PoolParametersSet","inputs":[{"type":"uint256","name":"offeringAmountPool","internalType":"uint256","indexed":false},{"type":"uint256","name":"raisingAmountPool","internalType":"uint256","indexed":false},{"type":"uint8","name":"pid","internalType":"uint8","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"IFO_FACTORY","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAX_BUFFER_BLOCKS","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"NUMBER_POOLS","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"campaignId","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"depositPool","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"},{"type":"uint8","name":"_pid","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"endBlock","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"finalWithdraw","inputs":[{"type":"uint256","name":"_lpAmount","internalType":"uint256"},{"type":"uint256","name":"_offerAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"harvestBlock","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"harvestPool","inputs":[{"type":"uint8","name":"_pid","internalType":"uint8"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"address","name":"_lpToken","internalType":"address"},{"type":"address","name":"_offeringToken","internalType":"address"},{"type":"address","name":"_mojitoProfileAddress","internalType":"address"},{"type":"uint256","name":"_startBlock","internalType":"uint256"},{"type":"uint256","name":"_endBlock","internalType":"uint256"},{"type":"uint256","name":"_maxBufferBlocks","internalType":"uint256"},{"type":"address","name":"_adminAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isInitialized","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IKRC20"}],"name":"lpToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract MojitoProfile"}],"name":"mojitoProfile","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"numberPoints","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IKRC20"}],"name":"offeringToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"recoverWrongTokens","inputs":[{"type":"address","name":"_tokenAddress","internalType":"address"},{"type":"uint256","name":"_tokenAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setPool","inputs":[{"type":"uint256","name":"_offeringAmountPool","internalType":"uint256"},{"type":"uint256","name":"_raisingAmountPool","internalType":"uint256"},{"type":"uint256","name":"_limitPerUserInLP","internalType":"uint256"},{"type":"bool","name":"_hasTax","internalType":"bool"},{"type":"uint8","name":"_pid","internalType":"uint8"},{"type":"address","name":"_whitelister","internalType":"address"},{"type":"address","name":"_vester","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"startBlock","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"thresholdPoints","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalTokensOffered","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateHarvestBlocks","inputs":[{"type":"uint256","name":"_harvestBlock","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updatePointParameters","inputs":[{"type":"uint256","name":"_campaignId","internalType":"uint256"},{"type":"uint256","name":"_numberPoints","internalType":"uint256"},{"type":"uint256","name":"_thresholdPoints","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateStartAndEndBlocks","inputs":[{"type":"uint256","name":"_startBlock","internalType":"uint256"},{"type":"uint256","name":"_endBlock","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"tuple","name":"","internalType":"struct IIFOV2.PoolCharacteristics","components":[{"type":"uint256","name":"raisingAmountPool","internalType":"uint256"},{"type":"uint256","name":"offeringAmountPool","internalType":"uint256"},{"type":"uint256","name":"limitPerUserInLP","internalType":"uint256"},{"type":"bool","name":"hasTax","internalType":"bool"},{"type":"uint256","name":"totalAmountPool","internalType":"uint256"},{"type":"uint256","name":"sumTaxesOverflow","internalType":"uint256"},{"type":"address","name":"whitelister","internalType":"address"},{"type":"address","name":"vester","internalType":"address"}]}],"name":"viewPoolInformation","inputs":[{"type":"uint256","name":"_pid","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"viewPoolTaxRateOverflow","inputs":[{"type":"uint256","name":"_pid","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256[]","name":"","internalType":"uint256[]"}],"name":"viewUserAllocationPools","inputs":[{"type":"address","name":"_user","internalType":"address"},{"type":"uint8[]","name":"_pids","internalType":"uint8[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256[]","name":"","internalType":"uint256[]"},{"type":"bool[]","name":"","internalType":"bool[]"}],"name":"viewUserInfo","inputs":[{"type":"address","name":"_user","internalType":"address"},{"type":"uint8[]","name":"_pids","internalType":"uint8[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256[3][]","name":"","internalType":"uint256[3][]"}],"name":"viewUserOfferingAndRefundingAmountsForPools","inputs":[{"type":"address","name":"_user","internalType":"address"},{"type":"uint8[]","name":"_pids","internalType":"uint8[]"}]}]
Contract Creation Code
0x60a060405234801561001057600080fd5b506001600090815561002061007a565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3503360601b60805261007e565b3390565b60805160601c613305620000a16000398061091b52806110d752506133056000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063760b31801161010f5780639f1b5248116100a2578063f076b0ad11610071578063f076b0ad146103ad578063f2fde38b146103b5578063f7b119a9146103c8578063f9cd5c12146103db576101e5565b80639f1b52481461036a578063a83e79751461037d578063b781360714610385578063ca463ca41461038d576101e5565b80638da5cb5b116100de5780638da5cb5b1461033f5780638ed5b0fc14610347578063915dfc311461034f5780639513997f14610357576101e5565b8063760b3180146102fe5780637edd5e34146103065780637f1bdd76146103195780638754bbc61461032c576101e5565b80633f138d4b1161018757806349681dad1161015657806349681dad146102c55780634af3c9b7146102cd5780635fcbd285146102ee578063715018a6146102f6576101e5565b80633f138d4b1461028257806345de0f771461029557806346ab91bf1461029d57806348cd4cb1146102bd576101e5565b806323f93574116101c357806323f93574146102325780632ee520d01461024757806337f859b81461025a578063392e53cd1461026d576101e5565b806306acd65f146101ea578063083c6323146102085780632374876c1461021d575b600080fd5b6101f26103fb565b6040516101ff919061242c565b60405180910390f35b61021061040a565b6040516101ff9190613201565b61023061022b3660046123bb565b610410565b005b61023a6106fa565b6040516101ff9190613247565b6102306102553660046122a4565b6106ff565b6102106102683660046122a4565b6107c0565b61027561081d565b6040516101ff9190612571565b61023061029036600461225e565b61082d565b6101f2610919565b6102b06102ab3660046122a4565b61093d565b6040516101ff919061319c565b6102106109cd565b6102106109d3565b6102e06102db3660046121dd565b6109d9565b6040516101ff929190612519565b6101f2610b1a565b610230610b29565b610210610bb2565b6102306103143660046122f5565b610bb8565b610230610327366004612387565b610c68565b61023061033a366004612169565b6110a2565b6101f2611180565b61021061118f565b610210611195565b6102306103653660046122d4565b61119b565b6102306103783660046122d4565b611298565b61021061147f565b6101f2611485565b6103a061039b3660046121dd565b611494565b6040516101ff919061249e565b6102106115bd565b6102306103c336600461214e565b6115c3565b6102306103d6366004612320565b611684565b6103ee6103e93660046121dd565b611890565b6040516101ff9190612506565b6005546001600160a01b031681565b60075481565b6002600054141561043c5760405162461bcd60e51b81526004016104339061300b565b60405180910390fd5b600260005561044a33611934565b156104675760405162461bcd60e51b815260040161043390612662565b3332146104865760405162461bcd60e51b815260040161043390612dd2565b60085443116104a75760405162461bcd60e51b815260040161043390612cf0565b600260ff8216106104ca5760405162461bcd60e51b815260040161043390612b9d565b336000908152601e6020908152604080832060ff851684529091529020546105045760405162461bcd60e51b815260040161043390612aa0565b336000908152601e6020908152604080832060ff808616855292529091206001015416156105445760405162461bcd60e51b815260040161043390612f76565b61054d3361193a565b336000818152601e6020908152604080832060ff8616845290915281206001908101805460ff1916909117905590819081906105899085611a36565b9194509250905080156105dc576105c081600d8660ff16600281106105aa57fe5b6008020160050154611c0b90919063ffffffff16565b600d8560ff16600281106105d057fe5b60080201600501819055505b821561068b576000600d8560ff16600281106105f457fe5b60080201600701546001600160a01b031690508061062857600454610623906001600160a01b03163386611c39565b610689565b604051637d0dabb560e01b81526001600160a01b03821690637d0dabb5906106569033908890600401612440565b600060405180830381600087803b15801561067057600080fd5b505af1158015610684573d6000803e3d6000fd5b505050505b505b81156106a8576003546106a8906001600160a01b03163384611c39565b8360ff16336001600160a01b03167f51524c2e5edfedf8b01b29719c661e4fbe27e71734e7cd773dabb7cb712fb3b385856040516106e792919061320a565b60405180910390a3505060016000555050565b600281565b610707611c94565b6001600160a01b0316610718611180565b6001600160a01b03161461073e5760405162461bcd60e51b815260040161043390612b68565b600654431061075f5760405162461bcd60e51b8152600401610433906130e9565b80600754106107805760405162461bcd60e51b815260040161043390612efc565b60088190556040517fb22cba2fc2aea10ed7f6b831e399a560a482f697c3d97de952482224da8bf845906107b5908390613201565b60405180910390a150565b6000600d82600281106107cf57fe5b600802016003015460ff166107e657506000610818565b610815600d83600281106107f657fe5b6008020160040154600d846002811061080b57fe5b6008020154611c98565b90505b919050565b600554600160a01b900460ff1681565b610835611c94565b6001600160a01b0316610846611180565b6001600160a01b03161461086c5760405162461bcd60e51b815260040161043390612b68565b6003546001600160a01b038381169116141561089a5760405162461bcd60e51b8152600401610433906128b1565b6004546001600160a01b03838116911614156108c85760405162461bcd60e51b815260040161043390612605565b6108dc6001600160a01b0383163383611c39565b7f74545154aac348a3eac92596bd1971957ca94795f4e954ec5f613b55fab78129828260405161090d929190612440565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6109456120af565b600d826002811061095257fe5b6040805161010081018252600892909202929092018054825260018101546020830152600281015492820192909252600382015460ff161515606082015260048201546080820152600582015460a082015260068201546001600160a01b0390811660c083015260079092015490911660e082015292915050565b60065481565b600a5481565b606080808367ffffffffffffffff811180156109f457600080fd5b50604051908082528060200260200182016040528015610a1e578160200160208202803683370190505b50905060608467ffffffffffffffff81118015610a3a57600080fd5b50604051908082528060200260200182016040528015610a64578160200160208202803683370190505b50905060005b600260ff82161015610b0d576001600160a01b0388166000908152601e6020908152604080832060ff85168085529252909120548451909185918110610aac57fe5b6020908102919091018101919091526001600160a01b0389166000908152601e8252604080822060ff8086168085529190945291206001015484519216918491908110610af557fe5b91151560209283029190910190910152600101610a6a565b5090969095509350505050565b6003546001600160a01b031681565b610b31611c94565b6001600160a01b0316610b42611180565b6001600160a01b031614610b685760405162461bcd60e51b815260040161043390612b68565b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b600c5481565b610bc0611c94565b6001600160a01b0316610bd1611180565b6001600160a01b031614610bf75760405162461bcd60e51b815260040161043390612b68565b6007544310610c185760405162461bcd60e51b8152600401610433906125af565b600a8290556009839055600b8190556040517f2058a318dbdfd2edd92a32cfa0ee233a30b165b83b421830109cb22ae86f674590610c5b90859085908590613218565b60405180910390a1505050565b60026000541415610c8b5760405162461bcd60e51b81526004016104339061300b565b6002600055610c9933611934565b15610cb65760405162461bcd60e51b815260040161043390612662565b333214610cd55760405162461bcd60e51b815260040161043390612dd2565b60055460405163ea0d5dcd60e01b81526001600160a01b039091169063ea0d5dcd90610d0590339060040161242c565b60206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612288565b610d715760405162461bcd60e51b8152600401610433906127d4565b600260ff821610610d945760405162461bcd60e51b815260040161043390612d38565b610d9e8133611d37565b610dba5760405162461bcd60e51b815260040161043390612732565b6000600d8260ff1660028110610dcc57fe5b6008020160010154118015610df557506000600d8260ff1660028110610dee57fe5b6008020154115b610e115760405162461bcd60e51b815260040161043390612789565b6006544311610e325760405162461bcd60e51b815260040161043390613042565b6007544310610e535760405162461bcd60e51b815260040161043390612af2565b60008211610e735760405162461bcd60e51b8152600401610433906129de565b6000600d8260ff1660028110610e8557fe5b60080201600701546001600160a01b0316905080610f3d57600c54600480546040516370a0823160e01b81526001600160a01b03909116916370a0823191610ecf9130910161242c565b60206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f91906122bc565b1015610f3d5760405162461bcd60e51b815260040161043390612993565b600354610f55906001600160a01b0316333086611de9565b336000908152601e6020908152604080832060ff86168452909152902054610f7d9084611c0b565b336000908152601e6020908152604080832060ff8716808552925282209290925590600d9060028110610fac57fe5b6008020160020154111561100e57600d8260ff1660028110610fca57fe5b6008020160020154336000908152601e6020908152604080832060ff87168452909152902054111561100e5760405162461bcd60e51b81526004016104339061313f565b61103883600d8460ff166002811061102257fe5b6008020160040154611c0b90919063ffffffff16565b600d8360ff166002811061104857fe5b60080201600401819055508160ff16336001600160a01b03167ff763e680fce25a97ffd55d8b705370c98b47b2285f7b3b2900c43606fd418045856040516110909190613201565b60405180910390a35050600160005550565b600554600160a01b900460ff16156110cc5760405162461bcd60e51b815260040161043390612c42565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111145760405162461bcd60e51b815260040161043390612831565b60058054600380546001600160a01b03808c166001600160a01b031992831617909255600480548b841690831617905590881660ff60a01b19909216600160a01b17161790556006849055600783905560088390556002829055611177816115c3565b50505050505050565b6001546001600160a01b031690565b60095481565b60025481565b6111a3611c94565b6001600160a01b03166111b4611180565b6001600160a01b0316146111da5760405162461bcd60e51b815260040161043390612b68565b600254430181106111fd5760405162461bcd60e51b815260040161043390612eb1565b600654431061121e5760405162461bcd60e51b815260040161043390612e2f565b80821061123d5760405162461bcd60e51b815260040161043390613078565b81431061125c5760405162461bcd60e51b815260040161043390612a2f565b600682905560078190556040517f7cd0ab87d19036f3dfadadb232c78aa4879dda3f0c994a9d637532410ee2ce069061090d908490849061320a565b6112a0611c94565b6001600160a01b03166112b1611180565b6001600160a01b0316146112d75760405162461bcd60e51b815260040161043390612b68565b6003546040516370a0823160e01b81526001600160a01b03909116906370a082319061130790309060040161242c565b60206040518083038186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135791906122bc565b8211156113765760405162461bcd60e51b815260040161043390612bed565b600480546040516370a0823160e01b81526001600160a01b03909116916370a08231916113a59130910161242c565b60206040518083038186803b1580156113bd57600080fd5b505afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f591906122bc565b8111156114145760405162461bcd60e51b815260040161043390612c93565b811561143157600354611431906001600160a01b03163384611c39565b801561144e5760045461144e906001600160a01b03163383611c39565b7f94ebb62a252249c867ecb758d386f50a95be7e8df9e1c52917c9cf494327dd7d828260405161090d92919061320a565b600b5481565b6004546001600160a01b031681565b6060808267ffffffffffffffff811180156114ae57600080fd5b506040519080825280602002602001820160405280156114e857816020015b6114d5612108565b8152602001906001900390816114cd5790505b50905060005b60ff81168411156115b257600080600080600d89898760ff1681811061151057fe5b905060200201602081019061152591906123bb565b60ff166002811061153257fe5b600802015411156115725761156a8989898760ff1681811061155057fe5b905060200201602081019061156591906123bb565b611a36565b919450925090505b604051806060016040528084815260200183815260200182815250858560ff168151811061159c57fe5b60209081029190910101525050506001016114ee565b5090505b9392505050565b60085481565b6115cb611c94565b6001600160a01b03166115dc611180565b6001600160a01b0316146116025760405162461bcd60e51b815260040161043390612b68565b6001600160a01b0381166116285760405162461bcd60e51b8152600401610433906126b5565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b61168c611c94565b6001600160a01b031661169d611180565b6001600160a01b0316146116c35760405162461bcd60e51b815260040161043390612b68565b60065443106116e45760405162461bcd60e51b815260040161043390612d88565b600260ff8416106117075760405162461bcd60e51b815260040161043390612945565b86600d8460ff166002811061171857fe5b600802016001018190555085600d8460ff166002811061173457fe5b600802015584600d60ff85166002811061174a57fe5b600802016002018190555083600d8460ff166002811061176657fe5b6008020160030160006101000a81548160ff02191690831515021790555081600d8460ff166002811061179557fe5b6008020160060160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600d8460ff16600281106117d157fe5b6008020160070160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600080600090505b600260ff821610156118445761183a600d8260ff166002811061182357fe5b600802016001015483611c0b90919063ffffffff16565b9150600101611804565b50600c8190556040517fddaf243a142670be60c19ff7116b5d8b124717b29bb4cc03cead42161614105b9061187e908a908a90889061322e565b60405180910390a15050505050505050565b6060808267ffffffffffffffff811180156118aa57600080fd5b506040519080825280602002602001820160405280156118d4578160200160208202803683370190505b50905060005b60ff81168411156115b2576119128686868460ff168181106118f857fe5b905060200201602081019061190d91906123bb565b611e10565b828260ff168151811061192157fe5b60209081029190910101526001016118da565b3b151590565b6001600160a01b0381166000908152601d602052604090205460ff16611a33576000805b600260ff8216101561199d57336000908152601e6020908152604080832060ff85168452909152902054611993908390611c0b565b915060010161195e565b50600b54811115611a31576001600160a01b038083166000908152601d602052604090819020805460ff19166001179055600554600a546009549251630dee0bfb60e11b81529190931692631bdc17f6926119fe9233929190600401612459565b600060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b505050505b505b50565b600080600080600080600d8760ff1660028110611a4f57fe5b6008020154600d60ff891660028110611a6457fe5b60080201600401541115611b94576000611a7e8989611e10565b9050611ab964e8d4a51000611ab383600d8c60ff1660028110611a9d57fe5b6008020160010154611ea990919063ffffffff16565b90611ee3565b93506000611ae564e8d4a51000611ab384600d8d60ff1660028110611ada57fe5b600802015490611ea9565b6001600160a01b038b166000908152601e6020908152604080832060ff8e168452909152902054909150611b199082611f15565b9350600d8960ff1660028110611b2b57fe5b600802016003015460ff1615611b8d576000611b68600d8b60ff1660028110611b5057fe5b6008020160040154600d8c60ff166002811061080b57fe5b9050611b7d64e8d4a51000611ab38784611ea9565b9350611b898585611f15565b9450505b5050611bfd565b506000905080611bfa600d60ff891660028110611bad57fe5b6008020154611ab3600d60ff8b1660028110611bc557fe5b60080201600101546001600160a01b038c166000908152601e6020908152604080832060ff8f16845290915290205490611ea9565b92505b919450925090509250925092565b600082820183811015611c305760405162461bcd60e51b8152600401610433906126fb565b90505b92915050565b611c8f8363a9059cbb60e01b8484604051602401611c58929190612440565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f3d565b505050565b3390565b600080611ca58484611ee3565b90506105dc8110611cbd57631dcd6500915050611c33565b6103e88110611cd357633b9aca00915050611c33565b6101f48110611ce9576377359400915050611c33565b60fa8110611cfe57639502f900915050611c33565b60648110611d135763b2d05e00915050611c33565b60328110611d295764012a05f200915050611c33565b6402540be400915050611c33565b600080600d8460ff1660028110611d4a57fe5b60080201600601546001600160a01b03169050801580611de15750604051633af32abf60e01b81526001600160a01b03821690633af32abf90611d9190869060040161242c565b60206040518083038186803b158015611da957600080fd5b505afa158015611dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de19190612288565b949350505050565b611e0a846323b872dd60e01b858585604051602401611c589392919061247a565b50505050565b600080600d8360ff1660028110611e2357fe5b60080201600401541115611ea157611e9a611e61620f4240600d8560ff1660028110611e4b57fe5b6008020160040154611ea990919063ffffffff16565b6001600160a01b0385166000908152601e6020908152604080832060ff88168452909152902054611ab390670de0b6b3a7640000611ea9565b9050611c33565b506000611c33565b600082611eb857506000611c33565b82820282848281611ec557fe5b0414611c305760405162461bcd60e51b815260040161043390612b27565b6000808211611f045760405162461bcd60e51b81526004016104339061290e565b818381611f0d57fe5b049392505050565b600082821115611f375760405162461bcd60e51b81526004016104339061287a565b50900390565b6060611f92826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fcc9092919063ffffffff16565b805190915015611c8f5780806020019051810190611fb09190612288565b611c8f5760405162461bcd60e51b815260040161043390612fc1565b6060611de1848460008585611fe085611934565b611ffc5760405162461bcd60e51b815260040161043390612e7a565b60006060866001600160a01b031685876040516120199190612410565b60006040518083038185875af1925050503d8060008114612056576040519150601f19603f3d011682016040523d82523d6000602084013e61205b565b606091505b509150915061206b828286612076565b979650505050505050565b606083156120855750816115b6565b8251156120955782518084602001fd5b8160405162461bcd60e51b8152600401610433919061257c565b604051806101000160405280600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b60405180606001604052806003906020820280368337509192915050565b80356001600160a01b0381168114611c3357600080fd5b803560ff81168114611c3357600080fd5b60006020828403121561215f578081fd5b6115b68383612126565b600080600080600080600060e0888a031215612183578283fd5b61218d8989612126565b965061219c8960208a01612126565b95506121ab8960408a01612126565b9450606088013593506080880135925060a088013591506121cf8960c08a01612126565b905092959891949750929550565b6000806000604084860312156121f1578283fd5b6121fb8585612126565b9250602084013567ffffffffffffffff80821115612217578384fd5b818601915086601f83011261222a578384fd5b813581811115612238578485fd5b876020808302850101111561224b578485fd5b6020830194508093505050509250925092565b60008060408385031215612270578182fd5b61227a8484612126565b946020939093013593505050565b600060208284031215612299578081fd5b8151611c3081613281565b6000602082840312156122b5578081fd5b5035919050565b6000602082840312156122cd578081fd5b5051919050565b600080604083850312156122e6578182fd5b50508035926020909101359150565b600080600060608486031215612309578283fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561233a578283fd5b873596506020880135955060408801359450606088013561235a81613281565b93506123698960808a0161213d565b92506123788960a08a01612126565b91506121cf8960c08a01612126565b60008060408385031215612399578182fd5b82359150602083013560ff811681146123b0578182fd5b809150509250929050565b6000602082840312156123cc578081fd5b6115b6838361213d565b6000815180845260208085019450808401835b83811015612405578151875295820195908201906001016123e9565b509495945050505050565b60008251612422818460208701613255565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b818110156124fa57835183875b60038110156124e4578251825291870191908701906001016124c7565b50505092840192606092909201916001016124ba565b50909695505050505050565b6000602082526115b660208301846123d6565b60006040825261252c60408301856123d6565b828103602084810191909152845180835285820192820190845b81811015612564578451151583529383019391830191600101612546565b5090979650505050505050565b901515815260200190565b600060208252825180602084015261259b816040850160208701613255565b601f01601f19169190910160400192915050565b60208082526036908201527f49464f496e697469616c697a61626c653a3a757064617465506f696e74506172604082015275185b595d195c9cce88125193c81a185cc8195b99195960521b606082015260800190565b6020808252603e908201527f49464f496e697469616c697a61626c653a3a7265636f76657257726f6e67546f60408201527f6b656e733a2043616e6e6f74206265206f66666572696e6720746f6b656e0000606082015260800190565b60208082526033908201527f49464f496e697469616c697a61626c653a3a6e6f74436f6e74726163743a20436040820152721bdb9d1c9858dd081b9bdd08185b1b1bddd959606a1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260439082015260008051602061329083398151915260408201527f6869732061646472657373206973206e6f7420696e207468652077686974656c6060820152621a5cdd60ea1b608082015260a00190565b6020808252602b908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a205060408201526a1bdbdb081b9bdd081cd95d60aa1b606082015260800190565b6020808252603a908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204d60408201527f757374206861766520616e206163746976652070726f66696c65000000000000606082015260800190565b60208082526029908201527f49464f496e697469616c697a61626c653a3a696e697469616c697a653a204e6f6040820152687420666163746f727960b81b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526038908201527f49464f496e697469616c697a61626c653a3a7265636f76657257726f6e67546f60408201527f6b656e733a2043616e6e6f74206265204c5020746f6b656e0000000000000000606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b6020808252602e908201527f49464f496e697469616c697a61626c653a3a736574506f6f6c3a20506f6f6c2060408201526d191bd95cc81b9bdd08195e1a5cdd60921b606082015260800190565b6020808252603c9082015260008051602061329083398151915260408201527f6f6b656e73206e6f74206465706f73697465642070726f7065726c7900000000606082015260800190565b60208082526031908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204160408201527006d6f756e74206d757374206265203e203607c1b606082015260800190565b6020808252605b908201526000805160206132b083398151915260408201527f456e64426c6f636b733a204e6577207374617274426c6f636b206d757374206260608201527f6520686967686572207468616e2063757272656e7420626c6f636b0000000000608082015260a00190565b60208082526032908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a20446040820152716964206e6f7420706172746963697061746560701b606082015260800190565b60208082526027908201526000805160206132908339815191526040820152666f6f206c61746560c81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a204e60408201526f1bdb881d985b1a59081c1bdbdb081a5960821b606082015260800190565b60208082526035908201527f49464f496e697469616c697a61626c653a3a66696e616c57697468647261773a604082015274204e6f7420656e6f756768204c5020746f6b656e7360581b606082015260800190565b60208082526031908201527f49464f496e697469616c697a61626c653a3a696e697469616c697a653a20416c6040820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b606082015260800190565b6020808252603b908201527f49464f496e697469616c697a61626c653a3a66696e616c57697468647261773a60408201527f204e6f7420656e6f756768206f66666572696e6720746f6b656e730000000000606082015260800190565b60208082526028908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a20546040820152676f6f206561726c7960c01b606082015260800190565b60208082526030908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204e60408201526f1bdb881d985b1a59081c1bdbdb081a5960821b606082015260800190565b6020808252602a908201527f49464f496e697469616c697a61626c653a3a736574506f6f6c3a2049464f2068604082015269185cc81cdd185c9d195960b21b606082015260800190565b60208082526039908201527f49464f496e697469616c697a61626c653a3a6e6f74436f6e74726163743a205060408201527f726f787920636f6e7472616374206e6f7420616c6c6f77656400000000000000606082015260800190565b6020808252603a908201526000805160206132b083398151915260408201527f456e64426c6f636b733a2049464f206861732073746172746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252603b908201526000805160206132b083398151915260408201527f456e64426c6f636b733a20456e64426c6f636b20746f6f206661720000000000606082015260800190565b60208082526054908201527f49464f496e697469616c697a61626c653a3a757064617465486172766573744260408201527f6c6f636b733a204e65772068617276657374426c6f636b206d75737420626520606082015273686967686572207468616e20656e64426c6f636b60601b608082015260a00190565b6020808252602b908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a204160408201526a6c726561647920646f6e6560a81b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526028908201526000805160206132908339815191526040820152676f6f206561726c7960c01b606082015260800190565b60208082526059908201526000805160206132b083398151915260408201527f456e64426c6f636b733a204e6577207374617274426c6f636b206d757374206260608201527f65206c6f776572207468616e206e657720656e64426c6f636b00000000000000608082015260a00190565b60208082526036908201527f49464f496e697469616c697a61626c653a3a75706461746548617276657374426040820152751b1bd8dadcce88125193c81a185cc81cdd185c9d195960521b606082015260800190565b6020808252603a908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204e60408201527f657720616d6f756e742061626f76652075736572206c696d6974000000000000606082015260800190565b8151815260208083015190820152604080830151908201526060808301511515908201526080808301519082015260a0808301519082015260c0808301516001600160a01b039081169183019190915260e09283015116918101919091526101000190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b928352602083019190915260ff16604082015260600190565b60ff91909116815260200190565b60005b83811015613270578181015183820152602001613258565b83811115611e0a5750506000910152565b8015158114611a3357600080fdfe49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a205449464f496e697469616c697a61626c653a3a7570646174655374617274416e64a26469706673582212200fc44f4c45ad0b5a0349ada0a1ded444fbce43eeb4d1d3c4e2111ede6b269d2364736f6c634300060c0033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c8063760b31801161010f5780639f1b5248116100a2578063f076b0ad11610071578063f076b0ad146103ad578063f2fde38b146103b5578063f7b119a9146103c8578063f9cd5c12146103db576101e5565b80639f1b52481461036a578063a83e79751461037d578063b781360714610385578063ca463ca41461038d576101e5565b80638da5cb5b116100de5780638da5cb5b1461033f5780638ed5b0fc14610347578063915dfc311461034f5780639513997f14610357576101e5565b8063760b3180146102fe5780637edd5e34146103065780637f1bdd76146103195780638754bbc61461032c576101e5565b80633f138d4b1161018757806349681dad1161015657806349681dad146102c55780634af3c9b7146102cd5780635fcbd285146102ee578063715018a6146102f6576101e5565b80633f138d4b1461028257806345de0f771461029557806346ab91bf1461029d57806348cd4cb1146102bd576101e5565b806323f93574116101c357806323f93574146102325780632ee520d01461024757806337f859b81461025a578063392e53cd1461026d576101e5565b806306acd65f146101ea578063083c6323146102085780632374876c1461021d575b600080fd5b6101f26103fb565b6040516101ff919061242c565b60405180910390f35b61021061040a565b6040516101ff9190613201565b61023061022b3660046123bb565b610410565b005b61023a6106fa565b6040516101ff9190613247565b6102306102553660046122a4565b6106ff565b6102106102683660046122a4565b6107c0565b61027561081d565b6040516101ff9190612571565b61023061029036600461225e565b61082d565b6101f2610919565b6102b06102ab3660046122a4565b61093d565b6040516101ff919061319c565b6102106109cd565b6102106109d3565b6102e06102db3660046121dd565b6109d9565b6040516101ff929190612519565b6101f2610b1a565b610230610b29565b610210610bb2565b6102306103143660046122f5565b610bb8565b610230610327366004612387565b610c68565b61023061033a366004612169565b6110a2565b6101f2611180565b61021061118f565b610210611195565b6102306103653660046122d4565b61119b565b6102306103783660046122d4565b611298565b61021061147f565b6101f2611485565b6103a061039b3660046121dd565b611494565b6040516101ff919061249e565b6102106115bd565b6102306103c336600461214e565b6115c3565b6102306103d6366004612320565b611684565b6103ee6103e93660046121dd565b611890565b6040516101ff9190612506565b6005546001600160a01b031681565b60075481565b6002600054141561043c5760405162461bcd60e51b81526004016104339061300b565b60405180910390fd5b600260005561044a33611934565b156104675760405162461bcd60e51b815260040161043390612662565b3332146104865760405162461bcd60e51b815260040161043390612dd2565b60085443116104a75760405162461bcd60e51b815260040161043390612cf0565b600260ff8216106104ca5760405162461bcd60e51b815260040161043390612b9d565b336000908152601e6020908152604080832060ff851684529091529020546105045760405162461bcd60e51b815260040161043390612aa0565b336000908152601e6020908152604080832060ff808616855292529091206001015416156105445760405162461bcd60e51b815260040161043390612f76565b61054d3361193a565b336000818152601e6020908152604080832060ff8616845290915281206001908101805460ff1916909117905590819081906105899085611a36565b9194509250905080156105dc576105c081600d8660ff16600281106105aa57fe5b6008020160050154611c0b90919063ffffffff16565b600d8560ff16600281106105d057fe5b60080201600501819055505b821561068b576000600d8560ff16600281106105f457fe5b60080201600701546001600160a01b031690508061062857600454610623906001600160a01b03163386611c39565b610689565b604051637d0dabb560e01b81526001600160a01b03821690637d0dabb5906106569033908890600401612440565b600060405180830381600087803b15801561067057600080fd5b505af1158015610684573d6000803e3d6000fd5b505050505b505b81156106a8576003546106a8906001600160a01b03163384611c39565b8360ff16336001600160a01b03167f51524c2e5edfedf8b01b29719c661e4fbe27e71734e7cd773dabb7cb712fb3b385856040516106e792919061320a565b60405180910390a3505060016000555050565b600281565b610707611c94565b6001600160a01b0316610718611180565b6001600160a01b03161461073e5760405162461bcd60e51b815260040161043390612b68565b600654431061075f5760405162461bcd60e51b8152600401610433906130e9565b80600754106107805760405162461bcd60e51b815260040161043390612efc565b60088190556040517fb22cba2fc2aea10ed7f6b831e399a560a482f697c3d97de952482224da8bf845906107b5908390613201565b60405180910390a150565b6000600d82600281106107cf57fe5b600802016003015460ff166107e657506000610818565b610815600d83600281106107f657fe5b6008020160040154600d846002811061080b57fe5b6008020154611c98565b90505b919050565b600554600160a01b900460ff1681565b610835611c94565b6001600160a01b0316610846611180565b6001600160a01b03161461086c5760405162461bcd60e51b815260040161043390612b68565b6003546001600160a01b038381169116141561089a5760405162461bcd60e51b8152600401610433906128b1565b6004546001600160a01b03838116911614156108c85760405162461bcd60e51b815260040161043390612605565b6108dc6001600160a01b0383163383611c39565b7f74545154aac348a3eac92596bd1971957ca94795f4e954ec5f613b55fab78129828260405161090d929190612440565b60405180910390a15050565b7f0000000000000000000000000f2cd60d99e4ef8bbaf6983fb6cc8304d6e616a781565b6109456120af565b600d826002811061095257fe5b6040805161010081018252600892909202929092018054825260018101546020830152600281015492820192909252600382015460ff161515606082015260048201546080820152600582015460a082015260068201546001600160a01b0390811660c083015260079092015490911660e082015292915050565b60065481565b600a5481565b606080808367ffffffffffffffff811180156109f457600080fd5b50604051908082528060200260200182016040528015610a1e578160200160208202803683370190505b50905060608467ffffffffffffffff81118015610a3a57600080fd5b50604051908082528060200260200182016040528015610a64578160200160208202803683370190505b50905060005b600260ff82161015610b0d576001600160a01b0388166000908152601e6020908152604080832060ff85168085529252909120548451909185918110610aac57fe5b6020908102919091018101919091526001600160a01b0389166000908152601e8252604080822060ff8086168085529190945291206001015484519216918491908110610af557fe5b91151560209283029190910190910152600101610a6a565b5090969095509350505050565b6003546001600160a01b031681565b610b31611c94565b6001600160a01b0316610b42611180565b6001600160a01b031614610b685760405162461bcd60e51b815260040161043390612b68565b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b600c5481565b610bc0611c94565b6001600160a01b0316610bd1611180565b6001600160a01b031614610bf75760405162461bcd60e51b815260040161043390612b68565b6007544310610c185760405162461bcd60e51b8152600401610433906125af565b600a8290556009839055600b8190556040517f2058a318dbdfd2edd92a32cfa0ee233a30b165b83b421830109cb22ae86f674590610c5b90859085908590613218565b60405180910390a1505050565b60026000541415610c8b5760405162461bcd60e51b81526004016104339061300b565b6002600055610c9933611934565b15610cb65760405162461bcd60e51b815260040161043390612662565b333214610cd55760405162461bcd60e51b815260040161043390612dd2565b60055460405163ea0d5dcd60e01b81526001600160a01b039091169063ea0d5dcd90610d0590339060040161242c565b60206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612288565b610d715760405162461bcd60e51b8152600401610433906127d4565b600260ff821610610d945760405162461bcd60e51b815260040161043390612d38565b610d9e8133611d37565b610dba5760405162461bcd60e51b815260040161043390612732565b6000600d8260ff1660028110610dcc57fe5b6008020160010154118015610df557506000600d8260ff1660028110610dee57fe5b6008020154115b610e115760405162461bcd60e51b815260040161043390612789565b6006544311610e325760405162461bcd60e51b815260040161043390613042565b6007544310610e535760405162461bcd60e51b815260040161043390612af2565b60008211610e735760405162461bcd60e51b8152600401610433906129de565b6000600d8260ff1660028110610e8557fe5b60080201600701546001600160a01b0316905080610f3d57600c54600480546040516370a0823160e01b81526001600160a01b03909116916370a0823191610ecf9130910161242c565b60206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f91906122bc565b1015610f3d5760405162461bcd60e51b815260040161043390612993565b600354610f55906001600160a01b0316333086611de9565b336000908152601e6020908152604080832060ff86168452909152902054610f7d9084611c0b565b336000908152601e6020908152604080832060ff8716808552925282209290925590600d9060028110610fac57fe5b6008020160020154111561100e57600d8260ff1660028110610fca57fe5b6008020160020154336000908152601e6020908152604080832060ff87168452909152902054111561100e5760405162461bcd60e51b81526004016104339061313f565b61103883600d8460ff166002811061102257fe5b6008020160040154611c0b90919063ffffffff16565b600d8360ff166002811061104857fe5b60080201600401819055508160ff16336001600160a01b03167ff763e680fce25a97ffd55d8b705370c98b47b2285f7b3b2900c43606fd418045856040516110909190613201565b60405180910390a35050600160005550565b600554600160a01b900460ff16156110cc5760405162461bcd60e51b815260040161043390612c42565b336001600160a01b037f0000000000000000000000000f2cd60d99e4ef8bbaf6983fb6cc8304d6e616a716146111145760405162461bcd60e51b815260040161043390612831565b60058054600380546001600160a01b03808c166001600160a01b031992831617909255600480548b841690831617905590881660ff60a01b19909216600160a01b17161790556006849055600783905560088390556002829055611177816115c3565b50505050505050565b6001546001600160a01b031690565b60095481565b60025481565b6111a3611c94565b6001600160a01b03166111b4611180565b6001600160a01b0316146111da5760405162461bcd60e51b815260040161043390612b68565b600254430181106111fd5760405162461bcd60e51b815260040161043390612eb1565b600654431061121e5760405162461bcd60e51b815260040161043390612e2f565b80821061123d5760405162461bcd60e51b815260040161043390613078565b81431061125c5760405162461bcd60e51b815260040161043390612a2f565b600682905560078190556040517f7cd0ab87d19036f3dfadadb232c78aa4879dda3f0c994a9d637532410ee2ce069061090d908490849061320a565b6112a0611c94565b6001600160a01b03166112b1611180565b6001600160a01b0316146112d75760405162461bcd60e51b815260040161043390612b68565b6003546040516370a0823160e01b81526001600160a01b03909116906370a082319061130790309060040161242c565b60206040518083038186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135791906122bc565b8211156113765760405162461bcd60e51b815260040161043390612bed565b600480546040516370a0823160e01b81526001600160a01b03909116916370a08231916113a59130910161242c565b60206040518083038186803b1580156113bd57600080fd5b505afa1580156113d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f591906122bc565b8111156114145760405162461bcd60e51b815260040161043390612c93565b811561143157600354611431906001600160a01b03163384611c39565b801561144e5760045461144e906001600160a01b03163383611c39565b7f94ebb62a252249c867ecb758d386f50a95be7e8df9e1c52917c9cf494327dd7d828260405161090d92919061320a565b600b5481565b6004546001600160a01b031681565b6060808267ffffffffffffffff811180156114ae57600080fd5b506040519080825280602002602001820160405280156114e857816020015b6114d5612108565b8152602001906001900390816114cd5790505b50905060005b60ff81168411156115b257600080600080600d89898760ff1681811061151057fe5b905060200201602081019061152591906123bb565b60ff166002811061153257fe5b600802015411156115725761156a8989898760ff1681811061155057fe5b905060200201602081019061156591906123bb565b611a36565b919450925090505b604051806060016040528084815260200183815260200182815250858560ff168151811061159c57fe5b60209081029190910101525050506001016114ee565b5090505b9392505050565b60085481565b6115cb611c94565b6001600160a01b03166115dc611180565b6001600160a01b0316146116025760405162461bcd60e51b815260040161043390612b68565b6001600160a01b0381166116285760405162461bcd60e51b8152600401610433906126b5565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b61168c611c94565b6001600160a01b031661169d611180565b6001600160a01b0316146116c35760405162461bcd60e51b815260040161043390612b68565b60065443106116e45760405162461bcd60e51b815260040161043390612d88565b600260ff8416106117075760405162461bcd60e51b815260040161043390612945565b86600d8460ff166002811061171857fe5b600802016001018190555085600d8460ff166002811061173457fe5b600802015584600d60ff85166002811061174a57fe5b600802016002018190555083600d8460ff166002811061176657fe5b6008020160030160006101000a81548160ff02191690831515021790555081600d8460ff166002811061179557fe5b6008020160060160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600d8460ff16600281106117d157fe5b6008020160070160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600080600090505b600260ff821610156118445761183a600d8260ff166002811061182357fe5b600802016001015483611c0b90919063ffffffff16565b9150600101611804565b50600c8190556040517fddaf243a142670be60c19ff7116b5d8b124717b29bb4cc03cead42161614105b9061187e908a908a90889061322e565b60405180910390a15050505050505050565b6060808267ffffffffffffffff811180156118aa57600080fd5b506040519080825280602002602001820160405280156118d4578160200160208202803683370190505b50905060005b60ff81168411156115b2576119128686868460ff168181106118f857fe5b905060200201602081019061190d91906123bb565b611e10565b828260ff168151811061192157fe5b60209081029190910101526001016118da565b3b151590565b6001600160a01b0381166000908152601d602052604090205460ff16611a33576000805b600260ff8216101561199d57336000908152601e6020908152604080832060ff85168452909152902054611993908390611c0b565b915060010161195e565b50600b54811115611a31576001600160a01b038083166000908152601d602052604090819020805460ff19166001179055600554600a546009549251630dee0bfb60e11b81529190931692631bdc17f6926119fe9233929190600401612459565b600060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b505050505b505b50565b600080600080600080600d8760ff1660028110611a4f57fe5b6008020154600d60ff891660028110611a6457fe5b60080201600401541115611b94576000611a7e8989611e10565b9050611ab964e8d4a51000611ab383600d8c60ff1660028110611a9d57fe5b6008020160010154611ea990919063ffffffff16565b90611ee3565b93506000611ae564e8d4a51000611ab384600d8d60ff1660028110611ada57fe5b600802015490611ea9565b6001600160a01b038b166000908152601e6020908152604080832060ff8e168452909152902054909150611b199082611f15565b9350600d8960ff1660028110611b2b57fe5b600802016003015460ff1615611b8d576000611b68600d8b60ff1660028110611b5057fe5b6008020160040154600d8c60ff166002811061080b57fe5b9050611b7d64e8d4a51000611ab38784611ea9565b9350611b898585611f15565b9450505b5050611bfd565b506000905080611bfa600d60ff891660028110611bad57fe5b6008020154611ab3600d60ff8b1660028110611bc557fe5b60080201600101546001600160a01b038c166000908152601e6020908152604080832060ff8f16845290915290205490611ea9565b92505b919450925090509250925092565b600082820183811015611c305760405162461bcd60e51b8152600401610433906126fb565b90505b92915050565b611c8f8363a9059cbb60e01b8484604051602401611c58929190612440565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f3d565b505050565b3390565b600080611ca58484611ee3565b90506105dc8110611cbd57631dcd6500915050611c33565b6103e88110611cd357633b9aca00915050611c33565b6101f48110611ce9576377359400915050611c33565b60fa8110611cfe57639502f900915050611c33565b60648110611d135763b2d05e00915050611c33565b60328110611d295764012a05f200915050611c33565b6402540be400915050611c33565b600080600d8460ff1660028110611d4a57fe5b60080201600601546001600160a01b03169050801580611de15750604051633af32abf60e01b81526001600160a01b03821690633af32abf90611d9190869060040161242c565b60206040518083038186803b158015611da957600080fd5b505afa158015611dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de19190612288565b949350505050565b611e0a846323b872dd60e01b858585604051602401611c589392919061247a565b50505050565b600080600d8360ff1660028110611e2357fe5b60080201600401541115611ea157611e9a611e61620f4240600d8560ff1660028110611e4b57fe5b6008020160040154611ea990919063ffffffff16565b6001600160a01b0385166000908152601e6020908152604080832060ff88168452909152902054611ab390670de0b6b3a7640000611ea9565b9050611c33565b506000611c33565b600082611eb857506000611c33565b82820282848281611ec557fe5b0414611c305760405162461bcd60e51b815260040161043390612b27565b6000808211611f045760405162461bcd60e51b81526004016104339061290e565b818381611f0d57fe5b049392505050565b600082821115611f375760405162461bcd60e51b81526004016104339061287a565b50900390565b6060611f92826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fcc9092919063ffffffff16565b805190915015611c8f5780806020019051810190611fb09190612288565b611c8f5760405162461bcd60e51b815260040161043390612fc1565b6060611de1848460008585611fe085611934565b611ffc5760405162461bcd60e51b815260040161043390612e7a565b60006060866001600160a01b031685876040516120199190612410565b60006040518083038185875af1925050503d8060008114612056576040519150601f19603f3d011682016040523d82523d6000602084013e61205b565b606091505b509150915061206b828286612076565b979650505050505050565b606083156120855750816115b6565b8251156120955782518084602001fd5b8160405162461bcd60e51b8152600401610433919061257c565b604051806101000160405280600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b60405180606001604052806003906020820280368337509192915050565b80356001600160a01b0381168114611c3357600080fd5b803560ff81168114611c3357600080fd5b60006020828403121561215f578081fd5b6115b68383612126565b600080600080600080600060e0888a031215612183578283fd5b61218d8989612126565b965061219c8960208a01612126565b95506121ab8960408a01612126565b9450606088013593506080880135925060a088013591506121cf8960c08a01612126565b905092959891949750929550565b6000806000604084860312156121f1578283fd5b6121fb8585612126565b9250602084013567ffffffffffffffff80821115612217578384fd5b818601915086601f83011261222a578384fd5b813581811115612238578485fd5b876020808302850101111561224b578485fd5b6020830194508093505050509250925092565b60008060408385031215612270578182fd5b61227a8484612126565b946020939093013593505050565b600060208284031215612299578081fd5b8151611c3081613281565b6000602082840312156122b5578081fd5b5035919050565b6000602082840312156122cd578081fd5b5051919050565b600080604083850312156122e6578182fd5b50508035926020909101359150565b600080600060608486031215612309578283fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561233a578283fd5b873596506020880135955060408801359450606088013561235a81613281565b93506123698960808a0161213d565b92506123788960a08a01612126565b91506121cf8960c08a01612126565b60008060408385031215612399578182fd5b82359150602083013560ff811681146123b0578182fd5b809150509250929050565b6000602082840312156123cc578081fd5b6115b6838361213d565b6000815180845260208085019450808401835b83811015612405578151875295820195908201906001016123e9565b509495945050505050565b60008251612422818460208701613255565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b818110156124fa57835183875b60038110156124e4578251825291870191908701906001016124c7565b50505092840192606092909201916001016124ba565b50909695505050505050565b6000602082526115b660208301846123d6565b60006040825261252c60408301856123d6565b828103602084810191909152845180835285820192820190845b81811015612564578451151583529383019391830191600101612546565b5090979650505050505050565b901515815260200190565b600060208252825180602084015261259b816040850160208701613255565b601f01601f19169190910160400192915050565b60208082526036908201527f49464f496e697469616c697a61626c653a3a757064617465506f696e74506172604082015275185b595d195c9cce88125193c81a185cc8195b99195960521b606082015260800190565b6020808252603e908201527f49464f496e697469616c697a61626c653a3a7265636f76657257726f6e67546f60408201527f6b656e733a2043616e6e6f74206265206f66666572696e6720746f6b656e0000606082015260800190565b60208082526033908201527f49464f496e697469616c697a61626c653a3a6e6f74436f6e74726163743a20436040820152721bdb9d1c9858dd081b9bdd08185b1b1bddd959606a1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260439082015260008051602061329083398151915260408201527f6869732061646472657373206973206e6f7420696e207468652077686974656c6060820152621a5cdd60ea1b608082015260a00190565b6020808252602b908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a205060408201526a1bdbdb081b9bdd081cd95d60aa1b606082015260800190565b6020808252603a908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204d60408201527f757374206861766520616e206163746976652070726f66696c65000000000000606082015260800190565b60208082526029908201527f49464f496e697469616c697a61626c653a3a696e697469616c697a653a204e6f6040820152687420666163746f727960b81b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526038908201527f49464f496e697469616c697a61626c653a3a7265636f76657257726f6e67546f60408201527f6b656e733a2043616e6e6f74206265204c5020746f6b656e0000000000000000606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b6020808252602e908201527f49464f496e697469616c697a61626c653a3a736574506f6f6c3a20506f6f6c2060408201526d191bd95cc81b9bdd08195e1a5cdd60921b606082015260800190565b6020808252603c9082015260008051602061329083398151915260408201527f6f6b656e73206e6f74206465706f73697465642070726f7065726c7900000000606082015260800190565b60208082526031908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204160408201527006d6f756e74206d757374206265203e203607c1b606082015260800190565b6020808252605b908201526000805160206132b083398151915260408201527f456e64426c6f636b733a204e6577207374617274426c6f636b206d757374206260608201527f6520686967686572207468616e2063757272656e7420626c6f636b0000000000608082015260a00190565b60208082526032908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a20446040820152716964206e6f7420706172746963697061746560701b606082015260800190565b60208082526027908201526000805160206132908339815191526040820152666f6f206c61746560c81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a204e60408201526f1bdb881d985b1a59081c1bdbdb081a5960821b606082015260800190565b60208082526035908201527f49464f496e697469616c697a61626c653a3a66696e616c57697468647261773a604082015274204e6f7420656e6f756768204c5020746f6b656e7360581b606082015260800190565b60208082526031908201527f49464f496e697469616c697a61626c653a3a696e697469616c697a653a20416c6040820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b606082015260800190565b6020808252603b908201527f49464f496e697469616c697a61626c653a3a66696e616c57697468647261773a60408201527f204e6f7420656e6f756768206f66666572696e6720746f6b656e730000000000606082015260800190565b60208082526028908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a20546040820152676f6f206561726c7960c01b606082015260800190565b60208082526030908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204e60408201526f1bdb881d985b1a59081c1bdbdb081a5960821b606082015260800190565b6020808252602a908201527f49464f496e697469616c697a61626c653a3a736574506f6f6c3a2049464f2068604082015269185cc81cdd185c9d195960b21b606082015260800190565b60208082526039908201527f49464f496e697469616c697a61626c653a3a6e6f74436f6e74726163743a205060408201527f726f787920636f6e7472616374206e6f7420616c6c6f77656400000000000000606082015260800190565b6020808252603a908201526000805160206132b083398151915260408201527f456e64426c6f636b733a2049464f206861732073746172746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252603b908201526000805160206132b083398151915260408201527f456e64426c6f636b733a20456e64426c6f636b20746f6f206661720000000000606082015260800190565b60208082526054908201527f49464f496e697469616c697a61626c653a3a757064617465486172766573744260408201527f6c6f636b733a204e65772068617276657374426c6f636b206d75737420626520606082015273686967686572207468616e20656e64426c6f636b60601b608082015260a00190565b6020808252602b908201527f49464f496e697469616c697a61626c653a3a68617276657374506f6f6c3a204160408201526a6c726561647920646f6e6560a81b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526028908201526000805160206132908339815191526040820152676f6f206561726c7960c01b606082015260800190565b60208082526059908201526000805160206132b083398151915260408201527f456e64426c6f636b733a204e6577207374617274426c6f636b206d757374206260608201527f65206c6f776572207468616e206e657720656e64426c6f636b00000000000000608082015260a00190565b60208082526036908201527f49464f496e697469616c697a61626c653a3a75706461746548617276657374426040820152751b1bd8dadcce88125193c81a185cc81cdd185c9d195960521b606082015260800190565b6020808252603a908201527f49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a204e60408201527f657720616d6f756e742061626f76652075736572206c696d6974000000000000606082015260800190565b8151815260208083015190820152604080830151908201526060808301511515908201526080808301519082015260a0808301519082015260c0808301516001600160a01b039081169183019190915260e09283015116918101919091526101000190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b928352602083019190915260ff16604082015260600190565b60ff91909116815260200190565b60005b83811015613270578181015183820152602001613258565b83811115611e0a5750506000910152565b8015158114611a3357600080fdfe49464f496e697469616c697a61626c653a3a6465706f736974506f6f6c3a205449464f496e697469616c697a61626c653a3a7570646174655374617274416e64a26469706673582212200fc44f4c45ad0b5a0349ada0a1ded444fbce43eeb4d1d3c4e2111ede6b269d2364736f6c634300060c0033