Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- LicenseStorage
- Optimization enabled
- true
- Compiler version
- v0.8.9+commit.e5eed63a
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2024-12-19T15:42:12.035678Z
Contract source code
// Sources flattened with hardhat v2.22.10 https://hardhat.org// SPDX-License-Identifier: MIT// File contracts/interfaces/ILicenseStorage.sol// Original license: SPDX_License_Identifier: MITpragma solidity ^0.8.0;interface ILicenseStorage{function version() external view returns (uint32);/// @notice initializes storage for specific VL, depends on rarity/// @param _tokenID token id of specific ValidatorLicense/// @param _rarity rarity of ValidatorLicensefunction initializeStorage(uint256 _tokenID, uint8 _rarity) payable external;/// @notice withdraws payment from specific VL storage during decoding process/// @param _tokenID token id of specific ValidatorLicense/// @param _amount amount of GUNs that will be transferred/// @param _to payment receiverfunction getPaymentFromLicenseStorage(uint256 _tokenID, uint256 _amount, address payable _to) external payable returns(bool);function getStorageCurrentValue(uint256 _tokenID) external view returns(uint256);function getStorageThreshold() external view returns(uint256);}// File contracts/interfaces/IValidatorLicense.sol// Original license: SPDX_License_Identifier: MITpragma solidity ^0.8.0;/// @notice Interface for ValidatorLicenseContractinterface IValidatorLicense{/// @notice this event is emitted when admin mints ValidatorLicense
Contract ABI
[{"type":"error","name":"ContractsIsNotPaused","inputs":[]},{"type":"error","name":"ContractsIsPaused","inputs":[]},{"type":"error","name":"IncorrectCaller","inputs":[{"type":"address","name":"caller","internalType":"address"},{"type":"address","name":"correctInvoker","internalType":"address"}]},{"type":"error","name":"IncorrectDistribution","inputs":[]},{"type":"error","name":"IncorrectRarity","inputs":[{"type":"uint8","name":"rarity","internalType":"uint8"}]},{"type":"error","name":"IncorrectValue","inputs":[{"type":"uint256","name":"value","internalType":"uint256"},{"type":"uint256","name":"minAmount","internalType":"uint256"}]},{"type":"error","name":"InsufficientBalance","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"},{"type":"uint256","name":"balance","internalType":"uint256"}]},{"type":"error","name":"InvalidRole","inputs":[{"type":"address","name":"caller","internalType":"address"},{"type":"bytes32","name":"role","internalType":"bytes32"}]},{"type":"event","name":"FillLicenseStorage","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"GetPaymentFromLicenseStorage","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"LicenseStorageActivated","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"LicenseStorageDeactivated","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"LicenseStorageFrozen","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"LicenseStorageInitialize","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true},{"type":"uint256","name":"storageAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENT_DENOMINATOR","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"decoderAddress","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"fillLicenseStorage","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"fillLicenseStorage","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"fillLicenseStorageManually","inputs":[{"type":"uint256[]","name":"_tokenIDs","internalType":"uint256[]"},{"type":"uint256[]","name":"_amounts","internalType":"uint256[]"}]},{"type":"function","stateMutability":"payable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"getPaymentFromLicenseStorage","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"},{"type":"uint256","name":"_amount","internalType":"uint256"},{"type":"address","name":"_to","internalType":"address payable"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getStorageCeilingValue","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getStorageCurrentValue","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getStorageThreshold","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"address","name":"_validatorLicenseContractAddress","internalType":"address"},{"type":"address","name":"_platformSettingsContractAddress","internalType":"address"},{"type":"uint256","name":"_storageThreshold","internalType":"uint256"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"initializeStorage","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"},{"type":"uint8","name":"_rarity","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"currentValue","internalType":"uint256"},{"type":"uint256","name":"ceilingValue","internalType":"uint256"}],"name":"internalStorages","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lockedTokensWithRarityAncient","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lockedTokensWithRarityCommon","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lockedTokensWithRarityEpic","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lockedTokensWithRarityLegendary","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lockedTokensWithRarityRare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"platformSettingsContractAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDecoderAddress","inputs":[{"type":"address","name":"_contractAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setStorageThreshold","inputs":[{"type":"uint256","name":"_storageThreshold","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"storageThreshold","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"validatorLicenseContractAddress","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint32","name":"","internalType":"uint32"}],"name":"version","inputs":[]}]
Contract Creation Code
0x608060405234801561001057600080fd5b506119c1806100206000396000f3fe6080604052600436106101405760003560e01c806368f700cb116100b6578063c6a319fa1161006f578063c6a319fa1461036c578063c6cc7fd41461038c578063d8f5fb711461039f578063d97aa939146103b6578063e0a39d28146103e3578063f7d00423146103f657600080fd5b806368f700cb146102c55780637eb84bfb146102db5780639e6c2959146102f2578063a1cdc2f914610307578063a4712cbd14610337578063ad637bbf1461035757600080fd5b80632e787d9c116101085780632e787d9c146101ff5780633407fc51146102165780635023bd921461024e57806354fd4d50146102645780635ce5b444146102825780636744be5d146102a557600080fd5b80630bba49bd146101455780631794bb3c14610193578063200ec3bc146101b557806322c31645146101d957806326c5f50c146101ec575b600080fd5b34801561015157600080fd5b50610179610160366004611662565b6004602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b34801561019f57600080fd5b506101b36101ae366004611693565b610416565b005b3480156101c157600080fd5b506101cb60015481565b60405190815260200161018a565b6101b36101e73660046116d4565b610506565b6101b36101fa3660046117bb565b6108ff565b34801561020b57600080fd5b506101cb621e848081565b34801561022257600080fd5b50600554610236906001600160a01b031681565b6040516001600160a01b03909116815260200161018a565b34801561025a57600080fd5b506101cb61c35081565b34801561027057600080fd5b50604051620f4243815260200161018a565b61029561029036600461181f565b6109e9565b604051901515815260200161018a565b3480156102b157600080fd5b50600254610236906001600160a01b031681565b3480156102d157600080fd5b506101cb614e2081565b3480156102e757600080fd5b506101cb62030d4081565b3480156102fe57600080fd5b506101cb606481565b34801561031357600080fd5b506101cb610322366004611662565b60009081526004602052604090206001015490565b34801561034357600080fd5b506101b3610352366004611662565b610d1e565b34801561036357600080fd5b506001546101cb565b34801561037857600080fd5b50600354610236906001600160a01b031681565b6101b361039a366004611858565b610f65565b3480156103ab57600080fd5b506101cb6207a12081565b3480156103c257600080fd5b506101cb6103d1366004611662565b60009081526004602052604090205490565b6101b36103f1366004611662565b610f75565b34801561040257600080fd5b506101b361041136600461187a565b611228565b600054610100900460ff168061042f575060005460ff16155b6104975760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff161580156104b9576000805461ffff19166101011790555b600280546001600160a01b038087166001600160a01b031992831617909255600380549286169290911691909117905560018290558015610500576000805461ff00191690555b50505050565b6002546001600160a01b03163314610546576002546040516326030a7d60e11b81523360048201526001600160a01b03909116602482015260440161048e565b600060ff82166105e957600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d6919061189e565b6105e290614e206118cd565b9050610882565b8160ff166001141561068757600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561064357600080fd5b505afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b919061189e565b6105e29061c3506118cd565b8160ff166002141561072657600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e157600080fd5b505afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610719919061189e565b6105e29062030d406118cd565b8160ff16600314156107c557600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b8919061189e565b6105e2906207a1206118cd565b8160ff166004141561086457600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610857919061189e565b6105e290621e84806118cd565b60405163263c4b5b60e01b815260ff8316600482015260240161048e565b8034146108ab57604051635928816d60e11b81523460048201526024810182905260440161048e565b600083815260046020526040908190203490819055905184917f6cb3b490831bdbb26c0b75960819c19bf3b1f9a065a44188167a8859e3fb1700916108f291815260200190565b60405180910390a2505050565b805182511461092157604051635c3810af60e01b815260040160405180910390fd5b6000805b825181101561096557828181518110610940576109406118ec565b6020026020010151826109539190611902565b915061095e8161191a565b9050610925565b5034811461098f57604051635928816d60e11b81526004810182905234602482015260440161048e565b60005b8351811015610500576109d98482815181106109b0576109b06118ec565b60200260200101518483815181106109ca576109ca6118ec565b6020026020010151600161148c565b6109e28161191a565b9050610992565b6003546040805163be16545960e01b815290516000926001600160a01b0316916391d1485491839163be165459916004808301926020929190829003018186803b158015610a3657600080fd5b505afa158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610aab57600080fd5b505afa158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae39190611935565b610b8d576003546040805163be16545960e01b8152905133926001600160a01b03169163be165459916004808301926020929190829003018186803b158015610b2b57600080fd5b505afa158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b63919061189e565b6040516316b4d34b60e31b81526001600160a01b039092166004830152602482015260440161048e565b600084815260046020526040902054831115610bd85760008481526004602081905260409182902054915163cf47918160e01b8152908101859052602481019190915260440161048e565b6000826001600160a01b03168460405160006040518083038185875af1925050503d8060008114610c25576040519150601f19603f3d011682016040523d82523d6000602084013e610c2a565b606091505b5050600086815260046020526040812080549293508692909190610c4f908490611957565b90915550506001546000868152600460205260409020541015610ccb5760025460405163906aff1b60e01b8152600481018790526001600160a01b039091169063906aff1b90602401600060405180830381600087803b158015610cb257600080fd5b505af1158015610cc6573d6000803e3d6000fd5b505050505b6000858152600460205260409081902054905186917f952c0096d6c27d931ec7456813c8733b4ea21c796ed13ada346719b17074bf5a91610d0e91815260200190565b60405180910390a2949350505050565b6003546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015610d6b57600080fd5b505afa158015610d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da3919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610de057600080fd5b505afa158015610df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e189190611935565b80610f1857506003546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea3919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610ee057600080fd5b505afa158015610ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f189190611935565b610f60576003546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610b2b57600080fd5b600155565b610f718282600061148c565b5050565b6003546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015610fc257600080fd5b505afa158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f9190611935565b8061116f57506003546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561113757600080fd5b505afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190611935565b6111b7576003546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610b2b57600080fd5b600081815260046020526040812080543492906111d5908490611902565b90915550506000818152600460205260409081902054905182917fba9e24070b89850f0e0e9dc1aecc5521e1c8e51e6c3e5ac172b5ddc817e0451c9161121d91815260200190565b60405180910390a250565b6003546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156112ea57600080fd5b505afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113229190611935565b8061142257506003546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561137557600080fd5b505afa158015611389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ad919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156113ea57600080fd5b505afa1580156113fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114229190611935565b61146a576003546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610b2b57600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516331a9108f60e11b8152600481018590526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156114d057600080fd5b505afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611508919061196e565b6001600160a01b0316336001600160a01b0316146115c7576002546040516331a9108f60e11b8152600481018590526001600160a01b0390911690636352211e9060240160206040518083038186803b15801561156457600080fd5b505afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c919061196e565b6040516326030a7d60e11b81526001600160a01b03909116600482015233602482015260440161048e565b3482141580156115d5575080155b156115fc57604051635928816d60e11b81526004810183905234602482015260440161048e565b6000838152600460205260408120805484929061161a908490611902565b90915550506000838152600460205260409081902054905184917fba9e24070b89850f0e0e9dc1aecc5521e1c8e51e6c3e5ac172b5ddc817e0451c916108f291815260200190565b60006020828403121561167457600080fd5b5035919050565b6001600160a01b038116811461169057600080fd5b50565b6000806000606084860312156116a857600080fd5b83356116b38161167b565b925060208401356116c38161167b565b929592945050506040919091013590565b600080604083850312156116e757600080fd5b82359150602083013560ff811681146116ff57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261173157600080fd5b8135602067ffffffffffffffff8083111561174e5761174e61170a565b8260051b604051601f19603f830116810181811084821117156117735761177361170a565b60405293845285810183019383810192508785111561179157600080fd5b83870191505b848210156117b057813583529183019190830190611797565b979650505050505050565b600080604083850312156117ce57600080fd5b823567ffffffffffffffff808211156117e657600080fd5b6117f286838701611720565b9350602085013591508082111561180857600080fd5b5061181585828601611720565b9150509250929050565b60008060006060848603121561183457600080fd5b8335925060208401359150604084013561184d8161167b565b809150509250925092565b6000806040838503121561186b57600080fd5b50508035926020909101359150565b60006020828403121561188c57600080fd5b81356118978161167b565b9392505050565b6000602082840312156118b057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156118e7576118e76118b7565b500290565b634e487b7160e01b600052603260045260246000fd5b60008219821115611915576119156118b7565b500190565b600060001982141561192e5761192e6118b7565b5060010190565b60006020828403121561194757600080fd5b8151801515811461189757600080fd5b600082821015611969576119696118b7565b500390565b60006020828403121561198057600080fd5b81516118978161167b56fea2646970667358221220143d045f1ca5d37ed5a88adc0ddfc7afe50565bfcb0259ed6d60adf98e310a2e64736f6c63430008090033
Deployed ByteCode
0x6080604052600436106101405760003560e01c806368f700cb116100b6578063c6a319fa1161006f578063c6a319fa1461036c578063c6cc7fd41461038c578063d8f5fb711461039f578063d97aa939146103b6578063e0a39d28146103e3578063f7d00423146103f657600080fd5b806368f700cb146102c55780637eb84bfb146102db5780639e6c2959146102f2578063a1cdc2f914610307578063a4712cbd14610337578063ad637bbf1461035757600080fd5b80632e787d9c116101085780632e787d9c146101ff5780633407fc51146102165780635023bd921461024e57806354fd4d50146102645780635ce5b444146102825780636744be5d146102a557600080fd5b80630bba49bd146101455780631794bb3c14610193578063200ec3bc146101b557806322c31645146101d957806326c5f50c146101ec575b600080fd5b34801561015157600080fd5b50610179610160366004611662565b6004602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b34801561019f57600080fd5b506101b36101ae366004611693565b610416565b005b3480156101c157600080fd5b506101cb60015481565b60405190815260200161018a565b6101b36101e73660046116d4565b610506565b6101b36101fa3660046117bb565b6108ff565b34801561020b57600080fd5b506101cb621e848081565b34801561022257600080fd5b50600554610236906001600160a01b031681565b6040516001600160a01b03909116815260200161018a565b34801561025a57600080fd5b506101cb61c35081565b34801561027057600080fd5b50604051620f4243815260200161018a565b61029561029036600461181f565b6109e9565b604051901515815260200161018a565b3480156102b157600080fd5b50600254610236906001600160a01b031681565b3480156102d157600080fd5b506101cb614e2081565b3480156102e757600080fd5b506101cb62030d4081565b3480156102fe57600080fd5b506101cb606481565b34801561031357600080fd5b506101cb610322366004611662565b60009081526004602052604090206001015490565b34801561034357600080fd5b506101b3610352366004611662565b610d1e565b34801561036357600080fd5b506001546101cb565b34801561037857600080fd5b50600354610236906001600160a01b031681565b6101b361039a366004611858565b610f65565b3480156103ab57600080fd5b506101cb6207a12081565b3480156103c257600080fd5b506101cb6103d1366004611662565b60009081526004602052604090205490565b6101b36103f1366004611662565b610f75565b34801561040257600080fd5b506101b361041136600461187a565b611228565b600054610100900460ff168061042f575060005460ff16155b6104975760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff161580156104b9576000805461ffff19166101011790555b600280546001600160a01b038087166001600160a01b031992831617909255600380549286169290911691909117905560018290558015610500576000805461ff00191690555b50505050565b6002546001600160a01b03163314610546576002546040516326030a7d60e11b81523360048201526001600160a01b03909116602482015260440161048e565b600060ff82166105e957600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d6919061189e565b6105e290614e206118cd565b9050610882565b8160ff166001141561068757600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561064357600080fd5b505afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b919061189e565b6105e29061c3506118cd565b8160ff166002141561072657600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e157600080fd5b505afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610719919061189e565b6105e29062030d406118cd565b8160ff16600314156107c557600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b8919061189e565b6105e2906207a1206118cd565b8160ff166004141561086457600360009054906101000a90046001600160a01b03166001600160a01b031663880442f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610857919061189e565b6105e290621e84806118cd565b60405163263c4b5b60e01b815260ff8316600482015260240161048e565b8034146108ab57604051635928816d60e11b81523460048201526024810182905260440161048e565b600083815260046020526040908190203490819055905184917f6cb3b490831bdbb26c0b75960819c19bf3b1f9a065a44188167a8859e3fb1700916108f291815260200190565b60405180910390a2505050565b805182511461092157604051635c3810af60e01b815260040160405180910390fd5b6000805b825181101561096557828181518110610940576109406118ec565b6020026020010151826109539190611902565b915061095e8161191a565b9050610925565b5034811461098f57604051635928816d60e11b81526004810182905234602482015260440161048e565b60005b8351811015610500576109d98482815181106109b0576109b06118ec565b60200260200101518483815181106109ca576109ca6118ec565b6020026020010151600161148c565b6109e28161191a565b9050610992565b6003546040805163be16545960e01b815290516000926001600160a01b0316916391d1485491839163be165459916004808301926020929190829003018186803b158015610a3657600080fd5b505afa158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610aab57600080fd5b505afa158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae39190611935565b610b8d576003546040805163be16545960e01b8152905133926001600160a01b03169163be165459916004808301926020929190829003018186803b158015610b2b57600080fd5b505afa158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b63919061189e565b6040516316b4d34b60e31b81526001600160a01b039092166004830152602482015260440161048e565b600084815260046020526040902054831115610bd85760008481526004602081905260409182902054915163cf47918160e01b8152908101859052602481019190915260440161048e565b6000826001600160a01b03168460405160006040518083038185875af1925050503d8060008114610c25576040519150601f19603f3d011682016040523d82523d6000602084013e610c2a565b606091505b5050600086815260046020526040812080549293508692909190610c4f908490611957565b90915550506001546000868152600460205260409020541015610ccb5760025460405163906aff1b60e01b8152600481018790526001600160a01b039091169063906aff1b90602401600060405180830381600087803b158015610cb257600080fd5b505af1158015610cc6573d6000803e3d6000fd5b505050505b6000858152600460205260409081902054905186917f952c0096d6c27d931ec7456813c8733b4ea21c796ed13ada346719b17074bf5a91610d0e91815260200190565b60405180910390a2949350505050565b6003546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015610d6b57600080fd5b505afa158015610d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da3919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610de057600080fd5b505afa158015610df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e189190611935565b80610f1857506003546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea3919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610ee057600080fd5b505afa158015610ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f189190611935565b610f60576003546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610b2b57600080fd5b600155565b610f718282600061148c565b5050565b6003546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015610fc257600080fd5b505afa158015610fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f9190611935565b8061116f57506003546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561113757600080fd5b505afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190611935565b6111b7576003546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610b2b57600080fd5b600081815260046020526040812080543492906111d5908490611902565b90915550506000818152600460205260409081902054905182917fba9e24070b89850f0e0e9dc1aecc5521e1c8e51e6c3e5ac172b5ddc817e0451c9161121d91815260200190565b60405180910390a250565b6003546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156112ea57600080fd5b505afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113229190611935565b8061142257506003546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561137557600080fd5b505afa158015611389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ad919061189e565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156113ea57600080fd5b505afa1580156113fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114229190611935565b61146a576003546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610b2b57600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516331a9108f60e11b8152600481018590526001600160a01b0390911690636352211e9060240160206040518083038186803b1580156114d057600080fd5b505afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611508919061196e565b6001600160a01b0316336001600160a01b0316146115c7576002546040516331a9108f60e11b8152600481018590526001600160a01b0390911690636352211e9060240160206040518083038186803b15801561156457600080fd5b505afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c919061196e565b6040516326030a7d60e11b81526001600160a01b03909116600482015233602482015260440161048e565b3482141580156115d5575080155b156115fc57604051635928816d60e11b81526004810183905234602482015260440161048e565b6000838152600460205260408120805484929061161a908490611902565b90915550506000838152600460205260409081902054905184917fba9e24070b89850f0e0e9dc1aecc5521e1c8e51e6c3e5ac172b5ddc817e0451c916108f291815260200190565b60006020828403121561167457600080fd5b5035919050565b6001600160a01b038116811461169057600080fd5b50565b6000806000606084860312156116a857600080fd5b83356116b38161167b565b925060208401356116c38161167b565b929592945050506040919091013590565b600080604083850312156116e757600080fd5b82359150602083013560ff811681146116ff57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261173157600080fd5b8135602067ffffffffffffffff8083111561174e5761174e61170a565b8260051b604051601f19603f830116810181811084821117156117735761177361170a565b60405293845285810183019383810192508785111561179157600080fd5b83870191505b848210156117b057813583529183019190830190611797565b979650505050505050565b600080604083850312156117ce57600080fd5b823567ffffffffffffffff808211156117e657600080fd5b6117f286838701611720565b9350602085013591508082111561180857600080fd5b5061181585828601611720565b9150509250929050565b60008060006060848603121561183457600080fd5b8335925060208401359150604084013561184d8161167b565b809150509250925092565b6000806040838503121561186b57600080fd5b50508035926020909101359150565b60006020828403121561188c57600080fd5b81356118978161167b565b9392505050565b6000602082840312156118b057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156118e7576118e76118b7565b500290565b634e487b7160e01b600052603260045260246000fd5b60008219821115611915576119156118b7565b500190565b600060001982141561192e5761192e6118b7565b5060010190565b60006020828403121561194757600080fd5b8151801515811461189757600080fd5b600082821015611969576119696118b7565b500390565b60006020828403121561198057600080fd5b81516118978161167b56fea2646970667358221220143d045f1ca5d37ed5a88adc0ddfc7afe50565bfcb0259ed6d60adf98e310a2e64736f6c63430008090033