false
false
0

Contract Address Details This is the testnet address; do not send mainnet coins here!

0x701dCdCC0Ba993C84613e97AC06305c6510155b3

Contract Name
ValidatorLicenseContract
Creator
0xb80042–1c51ab at 0x95d465–d4d9e2
Balance
0.00 GUN (0.00 USD)
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
28271169
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
ValidatorLicenseContract




Optimization enabled
true
Compiler version
v0.8.9+commit.e5eed63a




Optimization runs
200
EVM Version
default




Verified at
2024-05-07T06:58:20.231090Z

Contract source code

// Sources flattened with hardhat v2.10.1 https://hardhat.org
// File openzeppelin-contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol
// OpenZeppelin Contracts v4.4.0 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165Upgradeable {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File openzeppelin-contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol
// OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721.sol)
pragma solidity ^0.8.0;
/**
* @dev Required interface of an ERC721 compliant contract.
*/
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract ABI

[{"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":"IncorrectMode","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256"},{"type":"bool","name":"activeMode","internalType":"bool"}]},{"type":"error","name":"IncorrectRarity","inputs":[{"type":"uint8","name":"rarity","internalType":"uint8"}]},{"type":"error","name":"IncorrectTokenID","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256"}]},{"type":"error","name":"InvalidRole","inputs":[{"type":"address","name":"caller","internalType":"address"},{"type":"bytes32","name":"role","internalType":"bytes32"}]},{"type":"error","name":"insufficientBalance","inputs":[{"type":"uint256","name":"currentBalance","internalType":"uint256"},{"type":"uint256","name":"minBalance","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"approved","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"operator","internalType":"address","indexed":true},{"type":"bool","name":"approved","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"ValidatorLicenseActivated","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"ValidatorLicenseDeactivated","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"ValidatorLicenseMinted","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"uint256","name":"tokenID","internalType":"uint256","indexed":true},{"type":"uint8","name":"rarity","internalType":"uint8","indexed":true},{"type":"bool","name":"activeMode","internalType":"bool","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENT_DENOMINATOR","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"activate","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"approve","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"owner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"batchActivate","inputs":[{"type":"uint256[]","name":"_tokenIDs","internalType":"uint256[]"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"batchApprove","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256[]","name":"tokenIDs","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"batchDeactivate","inputs":[{"type":"uint256[]","name":"_tokenIDs","internalType":"uint256[]"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bulkTransfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256[]","name":"_tokenIDs","internalType":"uint256[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"dataCubeContractAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deactivate","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deactivateByLicenseStorage","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getApproved","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"getLicenseMode","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"getLicenseRarity","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"address","name":"_platformSettingsContractAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isApprovedForAll","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"operator","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lastMintedTokenID","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"licenseStorageAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"licensesMintedByRarity","inputs":[{"type":"uint8","name":"","internalType":"uint8"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"mint","inputs":[{"type":"uint8","name":"_rarity","internalType":"uint8"},{"type":"address","name":"_to","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerOf","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"platformSettingsContractAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"},{"type":"bytes","name":"_data","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setApprovalForAll","inputs":[{"type":"address","name":"operator","internalType":"address"},{"type":"bool","name":"approved","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDataCubeContractAddress","inputs":[{"type":"address","name":"_contractAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setLicenseStorageAddress","inputs":[{"type":"address","name":"_contractAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSignatureVerifierContractAddress","inputs":[{"type":"address","name":"_contractAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"signatureVerifierContractAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"supportsInterface","inputs":[{"type":"bytes4","name":"interfaceId","internalType":"bytes4"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenByIndex","inputs":[{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenOfOwnerByIndex","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"tokenURI","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"activeMode","internalType":"bool"},{"type":"bool","name":"guildMode","internalType":"bool"},{"type":"uint8","name":"rarity","internalType":"enum ValidatorLicenseContract.Rarity"}],"name":"validatorLicenses","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint32","name":"","internalType":"uint32"}],"name":"version","inputs":[]}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b50613c7a806100206000396000f3fe60806040526004361061023b5760003560e01c80636c8d59901161012e578063a9059cbb116100ab578063c87b56dd1161006f578063c87b56dd146106f0578063d28a476114610710578063d7c5246514610730578063e985e9c514610762578063fae7cde9146107ab57600080fd5b8063a9059cbb14610650578063b88d4fde14610670578063c0e3695514610690578063c4d66de8146106b0578063c6a319fa146106d057600080fd5b8063906aff1b116100f2578063906aff1b146105d057806395d89b41146105f05780639b1075c0146106055780639e6c29591461061b578063a22cb4651461063057600080fd5b80636c8d59901461050b57806370a082311461052b5780637bf75f6c1461054b57806386f293fe1461055e578063887765931461057e57600080fd5b80632f745c59116101bc57806354fd4d501161018057806354fd4d50146104605780635686f69e1461047e5780635c68408a1461049e5780636352211e146104cb57806365d5a9d0146104eb57600080fd5b80632f745c59146103c057806342842e0e146103e0578063428e402b1461040057806343b6c21f146104205780634f6ccce71461044057600080fd5b8063095ea7b311610203578063095ea7b31461031157806316bfc0191461033157806318160ddd1461035157806323b872dd146103705780632776a4f71461039057600080fd5b806301ffc9a714610240578063065465671461027557806306fdde0314610297578063081812fc146102b9578063083a3016146102f1575b600080fd5b34801561024c57600080fd5b5061026061025b366004613423565b6107cb565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061029561029036600461345c565b6107f6565b005b3480156102a357600080fd5b506102ac610ac1565b60405161026c91906134cf565b3480156102c557600080fd5b506102d96102d43660046134e2565b610b53565b6040516001600160a01b03909116815260200161026c565b3480156102fd57600080fd5b5061029561030c3660046135b2565b610bdb565b34801561031d57600080fd5b5061029561032c366004613602565b610cf3565b34801561033d57600080fd5b5061029561034c3660046136ac565b610e04565b34801561035d57600080fd5b506099545b60405190815260200161026c565b34801561037c57600080fd5b5061029561038b36600461370f565b610f52565b34801561039c57600080fd5b506102606103ab3660046134e2565b600090815260cc602052604090205460ff1690565b3480156103cc57600080fd5b506103626103db366004613602565b610f83565b3480156103ec57600080fd5b506102956103fb36600461370f565b611019565b34801561040c57600080fd5b5061029561041b36600461345c565b611034565b34801561042c57600080fd5b5061029561043b3660046136ac565b611298565b34801561044c57600080fd5b5061036261045b3660046134e2565b6113e0565b34801561046c57600080fd5b50604051620f4243815260200161026c565b34801561048a57600080fd5b5060ce546102d9906001600160a01b031681565b3480156104aa57600080fd5b506103626104b936600461375c565b60cd6020526000908152604090205481565b3480156104d757600080fd5b506102d96104e63660046134e2565b611473565b3480156104f757600080fd5b50610295610506366004613777565b6114ea565b34801561051757600080fd5b5060cb546102d9906001600160a01b031681565b34801561053757600080fd5b5061036261054636600461345c565b611529565b6102956105593660046137c5565b6115b0565b34801561056a57600080fd5b5060cf546102d9906001600160a01b031681565b34801561058a57600080fd5b506105c16105993660046134e2565b60cc6020526000908152604090205460ff808216916101008104821691620100009091041683565b60405161026c9392919061380e565b3480156105dc57600080fd5b506102956105eb3660046134e2565b611978565b3480156105fc57600080fd5b506102ac611a68565b34801561061157600080fd5b5061036260c95481565b34801561062757600080fd5b50610362606481565b34801561063c57600080fd5b5061029561064b366004613859565b611a77565b34801561065c57600080fd5b5061029561066b366004613602565b611a86565b34801561067c57600080fd5b5061029561068b366004613890565b611b41565b34801561069c57600080fd5b506102956106ab36600461345c565b611b73565b3480156106bc57600080fd5b506102956106cb36600461345c565b611dd7565b3480156106dc57600080fd5b5060ca546102d9906001600160a01b031681565b3480156106fc57600080fd5b506102ac61070b3660046134e2565b611eab565b34801561071c57600080fd5b5061029561072b366004613777565b611f83565b34801561073c57600080fd5b5061075061074b3660046134e2565b61208c565b60405160ff909116815260200161026c565b34801561076e57600080fd5b5061026061077d3660046138f8565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156107b757600080fd5b506102956107c63660046135b2565b6120b5565b60006001600160e01b0319821663780e9d6360e01b14806107f057506107f0826121c8565b92915050565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561084357600080fd5b505afa158015610857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087b9190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f0919061392d565b806109f0575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561094357600080fd5b505afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b9190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061392d565b610a9f5760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b505afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a709190613914565b6040516316b4d34b60e31b81526001600160a01b03909216600483015260248201526044015b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0392909216919091179055565b606060658054610ad09061394a565b80601f0160208091040260200160405190810160405280929190818152602001828054610afc9061394a565b8015610b495780601f10610b1e57610100808354040283529160200191610b49565b820191906000526020600020905b815481529060010190602001808311610b2c57829003601f168201915b5050505050905090565b6000610b5e82612218565b610bbf5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a96565b506000908152606960205260409020546001600160a01b031690565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c61919061392d565b15610c7f5760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163041d180b60e11b81526001600160a01b039091169063083a301690610cb390869086908690600401613985565b600060405180830381600087803b158015610ccd57600080fd5b505af1158015610ce1573d6000803e3d6000fd5b50505050610cee83612235565b505050565b6000610cfe82611473565b9050806001600160a01b0316836001600160a01b03161415610d6c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a96565b336001600160a01b0382161480610d885750610d88813361077d565b610dfa5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a96565b610cee8383612611565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a919061392d565b15610ea85760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516316bfc01960e01b81526001600160a01b03909116906316bfc01990610edc908690869086906004016139ad565b600060405180830381600087803b158015610ef657600080fd5b505af1158015610f0a573d6000803e3d6000fd5b5050505060005b8351811015610f4c57610f3c848281518110610f2f57610f2f613a00565b602002602001015161267f565b610f4581613a2c565b9050610f11565b50505050565b610f5c338261281d565b610f785760405162461bcd60e51b8152600401610a9690613a47565b610cee838383612907565b6000610f8e83611529565b8210610ff05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a96565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b610cee83838360405180602001604052806000815250611b41565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561108157600080fd5b505afa158015611095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b99190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156110f657600080fd5b505afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e919061392d565b8061122e575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561118157600080fd5b505afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e919061392d565b6112765760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e919061392d565b1561133c5760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516343b6c21f60e01b81526001600160a01b03909116906343b6c21f90611370908690869086906004016139ad565b600060405180830381600087803b15801561138a57600080fd5b505af115801561139e573d6000803e3d6000fd5b5050505060005b8351811015610f4c576113d08482815181106113c3576113c3613a00565b6020026020010151612235565b6113d981613a2c565b90506113a5565b60006113eb60995490565b821061144e5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a96565b6099828154811061146157611461613a00565b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b0316806107f05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a96565b60005b8151811015610cee576115198383838151811061150c5761150c613a00565b6020026020010151610cf3565b61152281613a2c565b90506114ed565b60006001600160a01b0382166115945760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a96565b506001600160a01b031660009081526068602052604090205490565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b1580156115fd57600080fd5b505afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116359190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561167257600080fd5b505afa158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa919061392d565b806117aa575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b1580156116fd57600080fd5b505afa158015611711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117359190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561177257600080fd5b505afa158015611786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117aa919061392d565b6117f25760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b60048260ff16111561181c5760405163263c4b5b60e01b815260ff83166004820152602401610a96565b600060c96000815461182d90613a2c565b9182905550905061183e8282612ab2565b600081815260cc60205260409020805461ffff1916905560ff8316600481111561186a5761186a6137f8565b600082815260cc60205260409020805462ff0000191662010000836004811115611896576118966137f8565b021790555060cb546040516322c3164560e01b81526004810183905260ff851660248201526001600160a01b03909116906322c316459034906044016000604051808303818588803b1580156118eb57600080fd5b505af11580156118ff573d6000803e3d6000fd5b50505060ff8516600090815260cd6020526040812080549350915061192383613a2c565b91905055508260ff1681836001600160a01b03167f82f3aa7964184df119fc381834bd7a5ff86f18794657fd8a84685f89d89dec5d600060405161196b911515815260200190565b60405180910390a4505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119c657600080fd5b505afa1580156119da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fe919061392d565b15611a1c5760405163487ea6bb60e11b815260040160405180910390fd5b60cb546001600160a01b03163314611a5c5760cb546040516326030a7d60e11b81523360048201526001600160a01b039091166024820152604401610a96565b611a658161267f565b50565b606060668054610ad09061394a565b611a82338383612acc565b5050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad457600080fd5b505afa158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c919061392d565b15611b2a5760405163487ea6bb60e11b815260040160405180910390fd5b33611b36818484612b9b565b610cee818484612907565b611b4b338361281d565b611b675760405162461bcd60e51b8152600401610a9690613a47565b610f4c84848484612bf5565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015611bc057600080fd5b505afa158015611bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf89190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6d919061392d565b80611d6d575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015611cc057600080fd5b505afa158015611cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf89190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611d3557600080fd5b505afa158015611d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6d919061392d565b611db55760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1680611df0575060005460ff16155b611e0c5760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015611e2e576000805461ffff19166101011790555b611e7b6040518060400160405280601181526020017056616c696461746f72204c6963656e736560781b81525060405180604001604052806002815260200161159360f21b815250612c28565b60ca80546001600160a01b0319166001600160a01b0384161790558015611a82576000805461ff00191690555050565b6060611eb682612218565b611f1a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a96565b6000611f3160408051602081019091526000815290565b90506000815111611f515760405180602001604052806000815250611f7c565b80611f5b84612caf565b604051602001611f6c929190613ae6565b6040516020818303038152906040525b9392505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd157600080fd5b505afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061392d565b156120275760405163487ea6bb60e11b815260040160405180910390fd5b3360005b8251811015610f4c57612058828585848151811061204b5761204b613a00565b6020026020010151612b9b565b61207c828585848151811061206f5761206f613a00565b6020026020010151612907565b61208581613a2c565b905061202b565b600081815260cc602052604081205462010000900460ff1660048111156107f0576107f06137f8565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561210357600080fd5b505afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b919061392d565b156121595760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163fae7cde960e01b81526001600160a01b039091169063fae7cde99061218d90869086908690600401613985565b600060405180830381600087803b1580156121a757600080fd5b505af11580156121bb573d6000803e3d6000fd5b50505050610cee8361267f565b60006001600160e01b031982166380ac58cd60e01b14806121f957506001600160e01b03198216635b5e139f60e01b145b806107f057506301ffc9a760e01b6001600160e01b03198316146107f0565b6000908152606760205260409020546001600160a01b0316151590565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561228357600080fd5b505afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb919061392d565b156122d95760405163487ea6bb60e11b815260040160405180910390fd5b6122e281612218565b61230257604051633db7d41d60e01b815260048101829052602401610a96565b600081815260cc602052604090205460ff161561235157600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610a96565b3361235b82611473565b6001600160a01b03161461239f573361237382611473565b6040516326030a7d60e11b81526001600160a01b03928316600482015291166024820152604401610a96565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ed57600080fd5b505afa158015612401573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124259190613914565b60cb5460405163d97aa93960e01b8152600481018490526001600160a01b039091169063d97aa9399060240160206040518083038186803b15801561246957600080fd5b505afa15801561247d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a19190613914565b10156125cb5760cb5460405163d97aa93960e01b8152600481018390526001600160a01b039091169063d97aa9399060240160206040518083038186803b1580156124eb57600080fd5b505afa1580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190613914565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561257157600080fd5b505afa158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a99190613914565b60405163c7a28c7960e01b815260048101929092526024820152604401610a96565b600081815260cc6020526040808220805460ff1916600117905551829133917fd538ee88caf00ff626f37f16fbccedd38e459f92d77b7b4ca5e8d91012f688649190a350565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061264682611473565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126cd57600080fd5b505afa1580156126e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612705919061392d565b156127235760405163487ea6bb60e11b815260040160405180910390fd5b61272c81612218565b61274c57604051633db7d41d60e01b815260048101829052602401610a96565b600081815260cc602052604090205460ff16151560011461279f57600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610a96565b336127a982611473565b6001600160a01b0316141580156127cb575060cb546001600160a01b03163314155b156127da573361237382611473565b600081815260cc6020526040808220805460ff1916905551829133917fa6bfef9b46c93833578358037bb733d07614ee62e6a640a60b0bbe4a1b5f06d69190a350565b600061282882612218565b6128895760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a96565b600061289483611473565b9050806001600160a01b0316846001600160a01b031614806128cf5750836001600160a01b03166128c484610b53565b6001600160a01b0316145b806128ff57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661291a82611473565b6001600160a01b0316146129825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a96565b6001600160a01b0382166129e45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a96565b6129ef838383612b9b565b6129fa600082612611565b6001600160a01b0383166000908152606860205260408120805460019290612a23908490613b15565b90915550506001600160a01b0382166000908152606860205260408120805460019290612a51908490613b2c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611a82828260405180602001604052806000815250612dad565b816001600160a01b0316836001600160a01b03161415612b2e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a96565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600081815260cc602052604090205460ff1615612bea57600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610a96565b610cee838383612de0565b612c00848484612907565b612c0c84848484612e98565b610f4c5760405162461bcd60e51b8152600401610a9690613b44565b600054610100900460ff1680612c41575060005460ff16155b612c5d5760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015612c7f576000805461ffff19166101011790555b612c87612fa5565b612c8f612fa5565b612c998383613010565b8015610cee576000805461ff0019169055505050565b606081612cd35750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612cfd5780612ce781613a2c565b9150612cf69050600a83613bac565b9150612cd7565b60008167ffffffffffffffff811115612d1857612d186134fb565b6040519080825280601f01601f191660200182016040528015612d42576020820181803683370190505b5090505b84156128ff57612d57600183613b15565b9150612d64600a86613bc0565b612d6f906030613b2c565b60f81b818381518110612d8457612d84613a00565b60200101906001600160f81b031916908160001a905350612da6600a86613bac565b9450612d46565b612db783836130a5565b612dc46000848484612e98565b610cee5760405162461bcd60e51b8152600401610a9690613b44565b6001600160a01b038316612e3b57612e3681609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b612e5e565b816001600160a01b0316836001600160a01b031614612e5e57612e5e83826131e4565b6001600160a01b038216612e7557610cee81613281565b826001600160a01b0316826001600160a01b031614610cee57610cee8282613330565b60006001600160a01b0384163b15612f9a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612edc903390899088908890600401613bd4565b602060405180830381600087803b158015612ef657600080fd5b505af1925050508015612f26575060408051601f3d908101601f19168201909252612f2391810190613c11565b60015b612f80573d808015612f54576040519150601f19603f3d011682016040523d82523d6000602084013e612f59565b606091505b508051612f785760405162461bcd60e51b8152600401610a9690613b44565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506128ff565b506001949350505050565b600054610100900460ff1680612fbe575060005460ff16155b612fda5760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015612ffc576000805461ffff19166101011790555b8015611a65576000805461ff001916905550565b600054610100900460ff1680613029575060005460ff16155b6130455760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015613067576000805461ffff19166101011790555b825161307a906065906020860190613374565b50815161308e906066906020850190613374565b508015610cee576000805461ff0019169055505050565b6001600160a01b0382166130fb5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a96565b61310481612218565b156131515760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a96565b61315d60008383612b9b565b6001600160a01b0382166000908152606860205260408120805460019290613186908490613b2c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016131f184611529565b6131fb9190613b15565b60008381526098602052604090205490915080821461324e576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b60995460009061329390600190613b15565b6000838152609a6020526040812054609980549394509092849081106132bb576132bb613a00565b9060005260206000200154905080609983815481106132dc576132dc613a00565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061331457613314613c2e565b6001900381819060005260206000200160009055905550505050565b600061333b83611529565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b8280546133809061394a565b90600052602060002090601f0160209004810192826133a257600085556133e8565b82601f106133bb57805160ff19168380011785556133e8565b828001600101855582156133e8579182015b828111156133e85782518255916020019190600101906133cd565b506133f49291506133f8565b5090565b5b808211156133f457600081556001016133f9565b6001600160e01b031981168114611a6557600080fd5b60006020828403121561343557600080fd5b8135611f7c8161340d565b80356001600160a01b038116811461345757600080fd5b919050565b60006020828403121561346e57600080fd5b611f7c82613440565b60005b8381101561349257818101518382015260200161347a565b83811115610f4c5750506000910152565b600081518084526134bb816020860160208601613477565b601f01601f19169290920160200192915050565b602081526000611f7c60208301846134a3565b6000602082840312156134f457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561353a5761353a6134fb565b604052919050565b600082601f83011261355357600080fd5b813567ffffffffffffffff81111561356d5761356d6134fb565b613580601f8201601f1916602001613511565b81815284602083860101111561359557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156135c757600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156135ec57600080fd5b6135f886828701613542565b9150509250925092565b6000806040838503121561361557600080fd5b61361e83613440565b946020939093013593505050565b600082601f83011261363d57600080fd5b8135602067ffffffffffffffff821115613659576136596134fb565b8160051b613668828201613511565b928352848101820192828101908785111561368257600080fd5b83870192505b848310156136a157823582529183019190830190613688565b979650505050505050565b6000806000606084860312156136c157600080fd5b833567ffffffffffffffff808211156136d957600080fd5b6136e58783880161362c565b945060208601359350604086013591508082111561370257600080fd5b506135f886828701613542565b60008060006060848603121561372457600080fd5b61372d84613440565b925061373b60208501613440565b9150604084013590509250925092565b803560ff8116811461345757600080fd5b60006020828403121561376e57600080fd5b611f7c8261374b565b6000806040838503121561378a57600080fd5b61379383613440565b9150602083013567ffffffffffffffff8111156137af57600080fd5b6137bb8582860161362c565b9150509250929050565b600080604083850312156137d857600080fd5b6137e18361374b565b91506137ef60208401613440565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b83151581528215156020820152606081016005831061383d57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8015158114611a6557600080fd5b6000806040838503121561386c57600080fd5b61387583613440565b915060208301356138858161384b565b809150509250929050565b600080600080608085870312156138a657600080fd5b6138af85613440565b93506138bd60208601613440565b925060408501359150606085013567ffffffffffffffff8111156138e057600080fd5b6138ec87828801613542565b91505092959194509250565b6000806040838503121561390b57600080fd5b6137e183613440565b60006020828403121561392657600080fd5b5051919050565b60006020828403121561393f57600080fd5b8151611f7c8161384b565b600181811c9082168061395e57607f821691505b6020821081141561397f57634e487b7160e01b600052602260045260246000fd5b50919050565b8381528260208201526060604082015260006139a460608301846134a3565b95945050505050565b606080825284519082018190526000906020906080840190828801845b828110156139e6578151845292840192908401906001016139ca565b505050858285015283810360408501526136a181866134a3565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613a4057613a40613a16565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008351613af8818460208801613477565b835190830190613b0c818360208801613477565b01949350505050565b600082821015613b2757613b27613a16565b500390565b60008219821115613b3f57613b3f613a16565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082613bbb57613bbb613b96565b500490565b600082613bcf57613bcf613b96565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613c07908301846134a3565b9695505050505050565b600060208284031215613c2357600080fd5b8151611f7c8161340d565b634e487b7160e01b600052603160045260246000fdfea264697066735822122015205673d54cc2997decf5be73416bde393b5649aa30aceb3fcb0b0f76f810de64736f6c63430008090033

Deployed ByteCode

0x60806040526004361061023b5760003560e01c80636c8d59901161012e578063a9059cbb116100ab578063c87b56dd1161006f578063c87b56dd146106f0578063d28a476114610710578063d7c5246514610730578063e985e9c514610762578063fae7cde9146107ab57600080fd5b8063a9059cbb14610650578063b88d4fde14610670578063c0e3695514610690578063c4d66de8146106b0578063c6a319fa146106d057600080fd5b8063906aff1b116100f2578063906aff1b146105d057806395d89b41146105f05780639b1075c0146106055780639e6c29591461061b578063a22cb4651461063057600080fd5b80636c8d59901461050b57806370a082311461052b5780637bf75f6c1461054b57806386f293fe1461055e578063887765931461057e57600080fd5b80632f745c59116101bc57806354fd4d501161018057806354fd4d50146104605780635686f69e1461047e5780635c68408a1461049e5780636352211e146104cb57806365d5a9d0146104eb57600080fd5b80632f745c59146103c057806342842e0e146103e0578063428e402b1461040057806343b6c21f146104205780634f6ccce71461044057600080fd5b8063095ea7b311610203578063095ea7b31461031157806316bfc0191461033157806318160ddd1461035157806323b872dd146103705780632776a4f71461039057600080fd5b806301ffc9a714610240578063065465671461027557806306fdde0314610297578063081812fc146102b9578063083a3016146102f1575b600080fd5b34801561024c57600080fd5b5061026061025b366004613423565b6107cb565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061029561029036600461345c565b6107f6565b005b3480156102a357600080fd5b506102ac610ac1565b60405161026c91906134cf565b3480156102c557600080fd5b506102d96102d43660046134e2565b610b53565b6040516001600160a01b03909116815260200161026c565b3480156102fd57600080fd5b5061029561030c3660046135b2565b610bdb565b34801561031d57600080fd5b5061029561032c366004613602565b610cf3565b34801561033d57600080fd5b5061029561034c3660046136ac565b610e04565b34801561035d57600080fd5b506099545b60405190815260200161026c565b34801561037c57600080fd5b5061029561038b36600461370f565b610f52565b34801561039c57600080fd5b506102606103ab3660046134e2565b600090815260cc602052604090205460ff1690565b3480156103cc57600080fd5b506103626103db366004613602565b610f83565b3480156103ec57600080fd5b506102956103fb36600461370f565b611019565b34801561040c57600080fd5b5061029561041b36600461345c565b611034565b34801561042c57600080fd5b5061029561043b3660046136ac565b611298565b34801561044c57600080fd5b5061036261045b3660046134e2565b6113e0565b34801561046c57600080fd5b50604051620f4243815260200161026c565b34801561048a57600080fd5b5060ce546102d9906001600160a01b031681565b3480156104aa57600080fd5b506103626104b936600461375c565b60cd6020526000908152604090205481565b3480156104d757600080fd5b506102d96104e63660046134e2565b611473565b3480156104f757600080fd5b50610295610506366004613777565b6114ea565b34801561051757600080fd5b5060cb546102d9906001600160a01b031681565b34801561053757600080fd5b5061036261054636600461345c565b611529565b6102956105593660046137c5565b6115b0565b34801561056a57600080fd5b5060cf546102d9906001600160a01b031681565b34801561058a57600080fd5b506105c16105993660046134e2565b60cc6020526000908152604090205460ff808216916101008104821691620100009091041683565b60405161026c9392919061380e565b3480156105dc57600080fd5b506102956105eb3660046134e2565b611978565b3480156105fc57600080fd5b506102ac611a68565b34801561061157600080fd5b5061036260c95481565b34801561062757600080fd5b50610362606481565b34801561063c57600080fd5b5061029561064b366004613859565b611a77565b34801561065c57600080fd5b5061029561066b366004613602565b611a86565b34801561067c57600080fd5b5061029561068b366004613890565b611b41565b34801561069c57600080fd5b506102956106ab36600461345c565b611b73565b3480156106bc57600080fd5b506102956106cb36600461345c565b611dd7565b3480156106dc57600080fd5b5060ca546102d9906001600160a01b031681565b3480156106fc57600080fd5b506102ac61070b3660046134e2565b611eab565b34801561071c57600080fd5b5061029561072b366004613777565b611f83565b34801561073c57600080fd5b5061075061074b3660046134e2565b61208c565b60405160ff909116815260200161026c565b34801561076e57600080fd5b5061026061077d3660046138f8565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156107b757600080fd5b506102956107c63660046135b2565b6120b5565b60006001600160e01b0319821663780e9d6360e01b14806107f057506107f0826121c8565b92915050565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561084357600080fd5b505afa158015610857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087b9190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156108b857600080fd5b505afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f0919061392d565b806109f0575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561094357600080fd5b505afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b9190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156109b857600080fd5b505afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f0919061392d565b610a9f5760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b505afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a709190613914565b6040516316b4d34b60e31b81526001600160a01b03909216600483015260248201526044015b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0392909216919091179055565b606060658054610ad09061394a565b80601f0160208091040260200160405190810160405280929190818152602001828054610afc9061394a565b8015610b495780601f10610b1e57610100808354040283529160200191610b49565b820191906000526020600020905b815481529060010190602001808311610b2c57829003601f168201915b5050505050905090565b6000610b5e82612218565b610bbf5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a96565b506000908152606960205260409020546001600160a01b031690565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c61919061392d565b15610c7f5760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163041d180b60e11b81526001600160a01b039091169063083a301690610cb390869086908690600401613985565b600060405180830381600087803b158015610ccd57600080fd5b505af1158015610ce1573d6000803e3d6000fd5b50505050610cee83612235565b505050565b6000610cfe82611473565b9050806001600160a01b0316836001600160a01b03161415610d6c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a96565b336001600160a01b0382161480610d885750610d88813361077d565b610dfa5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a96565b610cee8383612611565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a919061392d565b15610ea85760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516316bfc01960e01b81526001600160a01b03909116906316bfc01990610edc908690869086906004016139ad565b600060405180830381600087803b158015610ef657600080fd5b505af1158015610f0a573d6000803e3d6000fd5b5050505060005b8351811015610f4c57610f3c848281518110610f2f57610f2f613a00565b602002602001015161267f565b610f4581613a2c565b9050610f11565b50505050565b610f5c338261281d565b610f785760405162461bcd60e51b8152600401610a9690613a47565b610cee838383612907565b6000610f8e83611529565b8210610ff05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a96565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b610cee83838360405180602001604052806000815250611b41565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561108157600080fd5b505afa158015611095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b99190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156110f657600080fd5b505afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e919061392d565b8061122e575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561118157600080fd5b505afa158015611195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b99190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e919061392d565b6112765760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e919061392d565b1561133c5760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516343b6c21f60e01b81526001600160a01b03909116906343b6c21f90611370908690869086906004016139ad565b600060405180830381600087803b15801561138a57600080fd5b505af115801561139e573d6000803e3d6000fd5b5050505060005b8351811015610f4c576113d08482815181106113c3576113c3613a00565b6020026020010151612235565b6113d981613a2c565b90506113a5565b60006113eb60995490565b821061144e5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a96565b6099828154811061146157611461613a00565b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b0316806107f05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a96565b60005b8151811015610cee576115198383838151811061150c5761150c613a00565b6020026020010151610cf3565b61152281613a2c565b90506114ed565b60006001600160a01b0382166115945760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a96565b506001600160a01b031660009081526068602052604090205490565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b1580156115fd57600080fd5b505afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116359190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561167257600080fd5b505afa158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa919061392d565b806117aa575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b1580156116fd57600080fd5b505afa158015611711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117359190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561177257600080fd5b505afa158015611786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117aa919061392d565b6117f25760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b60048260ff16111561181c5760405163263c4b5b60e01b815260ff83166004820152602401610a96565b600060c96000815461182d90613a2c565b9182905550905061183e8282612ab2565b600081815260cc60205260409020805461ffff1916905560ff8316600481111561186a5761186a6137f8565b600082815260cc60205260409020805462ff0000191662010000836004811115611896576118966137f8565b021790555060cb546040516322c3164560e01b81526004810183905260ff851660248201526001600160a01b03909116906322c316459034906044016000604051808303818588803b1580156118eb57600080fd5b505af11580156118ff573d6000803e3d6000fd5b50505060ff8516600090815260cd6020526040812080549350915061192383613a2c565b91905055508260ff1681836001600160a01b03167f82f3aa7964184df119fc381834bd7a5ff86f18794657fd8a84685f89d89dec5d600060405161196b911515815260200190565b60405180910390a4505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119c657600080fd5b505afa1580156119da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fe919061392d565b15611a1c5760405163487ea6bb60e11b815260040160405180910390fd5b60cb546001600160a01b03163314611a5c5760cb546040516326030a7d60e11b81523360048201526001600160a01b039091166024820152604401610a96565b611a658161267f565b50565b606060668054610ad09061394a565b611a82338383612acc565b5050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad457600080fd5b505afa158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c919061392d565b15611b2a5760405163487ea6bb60e11b815260040160405180910390fd5b33611b36818484612b9b565b610cee818484612907565b611b4b338361281d565b611b675760405162461bcd60e51b8152600401610a9690613a47565b610f4c84848484612bf5565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015611bc057600080fd5b505afa158015611bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf89190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6d919061392d565b80611d6d575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015611cc057600080fd5b505afa158015611cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf89190613914565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611d3557600080fd5b505afa158015611d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6d919061392d565b611db55760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a3857600080fd5b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1680611df0575060005460ff16155b611e0c5760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015611e2e576000805461ffff19166101011790555b611e7b6040518060400160405280601181526020017056616c696461746f72204c6963656e736560781b81525060405180604001604052806002815260200161159360f21b815250612c28565b60ca80546001600160a01b0319166001600160a01b0384161790558015611a82576000805461ff00191690555050565b6060611eb682612218565b611f1a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a96565b6000611f3160408051602081019091526000815290565b90506000815111611f515760405180602001604052806000815250611f7c565b80611f5b84612caf565b604051602001611f6c929190613ae6565b6040516020818303038152906040525b9392505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd157600080fd5b505afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061392d565b156120275760405163487ea6bb60e11b815260040160405180910390fd5b3360005b8251811015610f4c57612058828585848151811061204b5761204b613a00565b6020026020010151612b9b565b61207c828585848151811061206f5761206f613a00565b6020026020010151612907565b61208581613a2c565b905061202b565b600081815260cc602052604081205462010000900460ff1660048111156107f0576107f06137f8565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561210357600080fd5b505afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b919061392d565b156121595760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163fae7cde960e01b81526001600160a01b039091169063fae7cde99061218d90869086908690600401613985565b600060405180830381600087803b1580156121a757600080fd5b505af11580156121bb573d6000803e3d6000fd5b50505050610cee8361267f565b60006001600160e01b031982166380ac58cd60e01b14806121f957506001600160e01b03198216635b5e139f60e01b145b806107f057506301ffc9a760e01b6001600160e01b03198316146107f0565b6000908152606760205260409020546001600160a01b0316151590565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561228357600080fd5b505afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb919061392d565b156122d95760405163487ea6bb60e11b815260040160405180910390fd5b6122e281612218565b61230257604051633db7d41d60e01b815260048101829052602401610a96565b600081815260cc602052604090205460ff161561235157600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610a96565b3361235b82611473565b6001600160a01b03161461239f573361237382611473565b6040516326030a7d60e11b81526001600160a01b03928316600482015291166024820152604401610a96565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ed57600080fd5b505afa158015612401573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124259190613914565b60cb5460405163d97aa93960e01b8152600481018490526001600160a01b039091169063d97aa9399060240160206040518083038186803b15801561246957600080fd5b505afa15801561247d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a19190613914565b10156125cb5760cb5460405163d97aa93960e01b8152600481018390526001600160a01b039091169063d97aa9399060240160206040518083038186803b1580156124eb57600080fd5b505afa1580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190613914565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561257157600080fd5b505afa158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a99190613914565b60405163c7a28c7960e01b815260048101929092526024820152604401610a96565b600081815260cc6020526040808220805460ff1916600117905551829133917fd538ee88caf00ff626f37f16fbccedd38e459f92d77b7b4ca5e8d91012f688649190a350565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061264682611473565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126cd57600080fd5b505afa1580156126e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612705919061392d565b156127235760405163487ea6bb60e11b815260040160405180910390fd5b61272c81612218565b61274c57604051633db7d41d60e01b815260048101829052602401610a96565b600081815260cc602052604090205460ff16151560011461279f57600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610a96565b336127a982611473565b6001600160a01b0316141580156127cb575060cb546001600160a01b03163314155b156127da573361237382611473565b600081815260cc6020526040808220805460ff1916905551829133917fa6bfef9b46c93833578358037bb733d07614ee62e6a640a60b0bbe4a1b5f06d69190a350565b600061282882612218565b6128895760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a96565b600061289483611473565b9050806001600160a01b0316846001600160a01b031614806128cf5750836001600160a01b03166128c484610b53565b6001600160a01b0316145b806128ff57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661291a82611473565b6001600160a01b0316146129825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a96565b6001600160a01b0382166129e45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a96565b6129ef838383612b9b565b6129fa600082612611565b6001600160a01b0383166000908152606860205260408120805460019290612a23908490613b15565b90915550506001600160a01b0382166000908152606860205260408120805460019290612a51908490613b2c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611a82828260405180602001604052806000815250612dad565b816001600160a01b0316836001600160a01b03161415612b2e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a96565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600081815260cc602052604090205460ff1615612bea57600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610a96565b610cee838383612de0565b612c00848484612907565b612c0c84848484612e98565b610f4c5760405162461bcd60e51b8152600401610a9690613b44565b600054610100900460ff1680612c41575060005460ff16155b612c5d5760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015612c7f576000805461ffff19166101011790555b612c87612fa5565b612c8f612fa5565b612c998383613010565b8015610cee576000805461ff0019169055505050565b606081612cd35750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612cfd5780612ce781613a2c565b9150612cf69050600a83613bac565b9150612cd7565b60008167ffffffffffffffff811115612d1857612d186134fb565b6040519080825280601f01601f191660200182016040528015612d42576020820181803683370190505b5090505b84156128ff57612d57600183613b15565b9150612d64600a86613bc0565b612d6f906030613b2c565b60f81b818381518110612d8457612d84613a00565b60200101906001600160f81b031916908160001a905350612da6600a86613bac565b9450612d46565b612db783836130a5565b612dc46000848484612e98565b610cee5760405162461bcd60e51b8152600401610a9690613b44565b6001600160a01b038316612e3b57612e3681609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b612e5e565b816001600160a01b0316836001600160a01b031614612e5e57612e5e83826131e4565b6001600160a01b038216612e7557610cee81613281565b826001600160a01b0316826001600160a01b031614610cee57610cee8282613330565b60006001600160a01b0384163b15612f9a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612edc903390899088908890600401613bd4565b602060405180830381600087803b158015612ef657600080fd5b505af1925050508015612f26575060408051601f3d908101601f19168201909252612f2391810190613c11565b60015b612f80573d808015612f54576040519150601f19603f3d011682016040523d82523d6000602084013e612f59565b606091505b508051612f785760405162461bcd60e51b8152600401610a9690613b44565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506128ff565b506001949350505050565b600054610100900460ff1680612fbe575060005460ff16155b612fda5760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015612ffc576000805461ffff19166101011790555b8015611a65576000805461ff001916905550565b600054610100900460ff1680613029575060005460ff16155b6130455760405162461bcd60e51b8152600401610a9690613a98565b600054610100900460ff16158015613067576000805461ffff19166101011790555b825161307a906065906020860190613374565b50815161308e906066906020850190613374565b508015610cee576000805461ff0019169055505050565b6001600160a01b0382166130fb5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a96565b61310481612218565b156131515760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a96565b61315d60008383612b9b565b6001600160a01b0382166000908152606860205260408120805460019290613186908490613b2c565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016131f184611529565b6131fb9190613b15565b60008381526098602052604090205490915080821461324e576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b60995460009061329390600190613b15565b6000838152609a6020526040812054609980549394509092849081106132bb576132bb613a00565b9060005260206000200154905080609983815481106132dc576132dc613a00565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061331457613314613c2e565b6001900381819060005260206000200160009055905550505050565b600061333b83611529565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b8280546133809061394a565b90600052602060002090601f0160209004810192826133a257600085556133e8565b82601f106133bb57805160ff19168380011785556133e8565b828001600101855582156133e8579182015b828111156133e85782518255916020019190600101906133cd565b506133f49291506133f8565b5090565b5b808211156133f457600081556001016133f9565b6001600160e01b031981168114611a6557600080fd5b60006020828403121561343557600080fd5b8135611f7c8161340d565b80356001600160a01b038116811461345757600080fd5b919050565b60006020828403121561346e57600080fd5b611f7c82613440565b60005b8381101561349257818101518382015260200161347a565b83811115610f4c5750506000910152565b600081518084526134bb816020860160208601613477565b601f01601f19169290920160200192915050565b602081526000611f7c60208301846134a3565b6000602082840312156134f457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561353a5761353a6134fb565b604052919050565b600082601f83011261355357600080fd5b813567ffffffffffffffff81111561356d5761356d6134fb565b613580601f8201601f1916602001613511565b81815284602083860101111561359557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156135c757600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156135ec57600080fd5b6135f886828701613542565b9150509250925092565b6000806040838503121561361557600080fd5b61361e83613440565b946020939093013593505050565b600082601f83011261363d57600080fd5b8135602067ffffffffffffffff821115613659576136596134fb565b8160051b613668828201613511565b928352848101820192828101908785111561368257600080fd5b83870192505b848310156136a157823582529183019190830190613688565b979650505050505050565b6000806000606084860312156136c157600080fd5b833567ffffffffffffffff808211156136d957600080fd5b6136e58783880161362c565b945060208601359350604086013591508082111561370257600080fd5b506135f886828701613542565b60008060006060848603121561372457600080fd5b61372d84613440565b925061373b60208501613440565b9150604084013590509250925092565b803560ff8116811461345757600080fd5b60006020828403121561376e57600080fd5b611f7c8261374b565b6000806040838503121561378a57600080fd5b61379383613440565b9150602083013567ffffffffffffffff8111156137af57600080fd5b6137bb8582860161362c565b9150509250929050565b600080604083850312156137d857600080fd5b6137e18361374b565b91506137ef60208401613440565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b83151581528215156020820152606081016005831061383d57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8015158114611a6557600080fd5b6000806040838503121561386c57600080fd5b61387583613440565b915060208301356138858161384b565b809150509250929050565b600080600080608085870312156138a657600080fd5b6138af85613440565b93506138bd60208601613440565b925060408501359150606085013567ffffffffffffffff8111156138e057600080fd5b6138ec87828801613542565b91505092959194509250565b6000806040838503121561390b57600080fd5b6137e183613440565b60006020828403121561392657600080fd5b5051919050565b60006020828403121561393f57600080fd5b8151611f7c8161384b565b600181811c9082168061395e57607f821691505b6020821081141561397f57634e487b7160e01b600052602260045260246000fd5b50919050565b8381528260208201526060604082015260006139a460608301846134a3565b95945050505050565b606080825284519082018190526000906020906080840190828801845b828110156139e6578151845292840192908401906001016139ca565b505050858285015283810360408501526136a181866134a3565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613a4057613a40613a16565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008351613af8818460208801613477565b835190830190613b0c818360208801613477565b01949350505050565b600082821015613b2757613b27613a16565b500390565b60008219821115613b3f57613b3f613a16565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082613bbb57613bbb613b96565b500490565b600082613bcf57613bcf613b96565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613c07908301846134a3565b9695505050505050565b600060208284031215613c2357600080fd5b8151611f7c8161340d565b634e487b7160e01b600052603160045260246000fdfea264697066735822122015205673d54cc2997decf5be73416bde393b5649aa30aceb3fcb0b0f76f810de64736f6c63430008090033