ERC-721
Overview
Max Total Supply
162 THC
Holders
68
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 THCLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TheHappyChemicalClub
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./packages/Bundle.sol"; /** * @title The Happy Chemical Club */ contract TheHappyChemicalClub is Bundle { receive() external payable {} fallback() external payable {} event Withdraw(address operator, address receiver, uint256 value); mapping(address => uint256) private _mintLimit; uint256 private _limit; uint256 private _price; uint256 private _freeTokensLimit; bool private _locked; bool private _mintPause; constructor(uint256 _freeTokens) { _limit = 5; _price = 10000000000000000; _locked = false; _mintPause = true; _freeTokensLimit = _freeTokens; } modifier gate() { require(_locked == false, "TheHappyChemicalClub: reentrancy denied"); _locked = true; _; _locked = false; } function mintPrice(uint256 _quantity) public view returns (uint256) { if (_currentTokenId() < _freeTokensLimit) { return 0; } else { return (_price * _quantity); } } function setPrice(uint256 _value) public ownership { _price = _value; } function unpause() public ownership { _mintPause = false; } function pause() public ownership { _mintPause = true; } function paused() public view returns (bool) { return _mintPause; } function setRevealURI(string memory _cid, bool _isExtension) public ownership { _setRevealURI(_cid, _isExtension); } function checkURI(uint256 _tokenId) public view returns (string memory) { return _checkURI(_tokenId); } function reveal() public ownership { _reveal(); } function setMintLimit(uint256 _amount) public ownership { _limit = _amount; } function mintLimit() public view returns (uint256) { if (_currentTokenId() < _freeTokensLimit) { return 1; } else { return _limit; } } function mint(uint256 _quantity) public payable gate { require(msg.value >= mintPrice(_quantity), "TheHappyChemicalClub: not enough funds provided"); require(_quantity + totalSupply() <= 4200, "TheHappyChemicalClub: maximum tokens minted"); require(_quantity <= mintLimit(), "TheHappyChemicalClub: tokens exceed mint limit"); require(_quantity + _mintLimit[msg.sender] <= mintLimit(), "TheHappyChemicalClub: tokens exceed mint limit"); require(_mintPause != true, "TheHappyChemicalClub: minting is paused"); _mintLimit[msg.sender] += _quantity; for (uint256 i=0; i < _quantity; i++) { _mint(msg.sender); } } function airdropBatch(address[] memory _to) public ownership { require(_to.length + totalSupply() <= 4200, "TheHappyChemicalClub: maximum tokens minted"); for (uint256 i = 0; i < _to.length; i++) { _mint(_to[i]); } } function airdrop(address _to, uint256 _quantity) public ownership { require(_quantity + totalSupply() <= 4200, "TheHappyChemicalClub: maximum tokens minted"); for (uint256 i=0; i < _quantity; i++) { _mint(_to); } } function withdraw(address _account) public ownership { uint256 balance = address(this).balance; (bool success, ) = payable(_account).call{value: address(this).balance}(""); require(success, "TheHappyChemicalClub: ether transfer failed"); emit Withdraw(msg.sender, _account, balance); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../erc/165/ERC165.sol"; import "./Package_ERC173.sol"; import "./Package_ERC721Metadata.sol"; /** * @dev Supports interface bundle */ contract Bundle is Package_ERC721Metadata, Package_ERC173, ERC165 { constructor() Package_ERC721Metadata("The Happy Chemical Club", "THC", "bafybeif42ii3tgqjjou6ozzs6zc6kdj6ihybijvvnzznpzda7i5aulhjgy/prereveal.json") Package_ERC173(msg.sender) {} function supportsInterface(bytes4 interfaceId) public pure override(ERC165) returns (bool) { return interfaceId == type(ERC165).interfaceId || interfaceId == type(ERC173).interfaceId || interfaceId == type(ERC721).interfaceId || interfaceId == type(ERC721Metadata).interfaceId || interfaceId == type(ERC721Receiver).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC165 standard */ interface ERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../erc/173/ERC173.sol"; /** * @dev Implementation of the ERC173 */ contract Package_ERC173 is ERC173 { address private _owner; modifier ownership() { require(owner() == msg.sender, "ERC173: caller is not the owner"); _; } constructor(address owner_) { _transferOwnership(owner_); } function owner() public view override returns (address) { return _owner; } function transferOwnership(address _newOwner) public override ownership { _transferOwnership(_newOwner); } function _transferOwnership(address _newOwner) internal { address previousOwner = _owner; _owner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Package_ERC721.sol"; import "../erc/721/extensions/ERC721Metadata.sol"; import "../library/utils.sol"; /** * @dev Implementation of ERC721Metadata */ contract Package_ERC721Metadata is Package_ERC721, ERC721Metadata { mapping(uint256 => string) private _tokenCid; mapping(uint256 => bool) private _overrideCid; string private _metadata; string private _contractName; string private _contractSymbol; string private _fallbackCid; bool private _isRevealed; bool private _setURI; bool private _jsonExtension; constructor(string memory name_, string memory symbol_, string memory fallbackCid_) { _contractName = name_; _contractSymbol = symbol_; _fallbackCid = fallbackCid_; _isRevealed = false; _setURI = false; } function name() public view override returns (string memory) { return _contractName; } function symbol() public view override returns (string memory) { return _contractSymbol; } function tokenURI(uint256 _tokenId) public view override returns (string memory) { if (_tokenId == 0 || _tokenId > _currentTokenId()) { return "Token ID out of range"; } else if (_overrideCid[_tokenId] == true) { return string(abi.encodePacked(_ipfs(), _tokenCid[_tokenId])); } else { if (_isRevealed == true) { return _revealURI(_tokenId); } else { return string(abi.encodePacked(_ipfs(), _fallbackCid)); } } } function _revealURI(uint256 _tokenId) internal view returns (string memory) { if (_jsonExtension == true) { return string(abi.encodePacked(_ipfs(), _metadata, "/", utils.toString(_tokenId), ".json")); } else { return string(abi.encodePacked(_ipfs(), _metadata, "/", utils.toString(_tokenId))); } } function _ipfs() internal pure returns (string memory) { return "ipfs://"; } function _overrideTokenURI(uint256 _tokenId, string memory _cid) internal { _tokenCid[_tokenId] = _cid; _overrideCid[_tokenId] = true; } function _setRevealURI(string memory _cid, bool _isExtension) internal { require(_isRevealed == false, "ERC721: reveal has already occured"); _metadata = _cid; _jsonExtension = _isExtension; _setURI = true; } function _checkURI(uint256 _tokenId) internal view returns (string memory) { if (_tokenId == 0 || _tokenId > _currentTokenId()) { return "Token ID out of range"; } else if (_revealed() == true) { return "Tokens have been revealed"; } else { return _revealURI(_tokenId); } } function _reveal() internal { require(_setURI == true, "ERC721: reveal URI not set"); _isRevealed = true; } function _revealed() internal view returns (bool) { return _isRevealed; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev ERC173 standard */ interface ERC173 { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function owner() view external returns (address); function transferOwnership(address _newOwner) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../erc/721/ERC721.sol"; import "../erc/721/receiver/ERC721Receiver.sol"; import "../library/utils.sol"; /** * @dev Implementation of ERC721 */ contract Package_ERC721 is ERC721 { mapping(uint256 => address) private _tokenOwner; mapping(address => uint256) private _ownerBalance; mapping(uint256 => address) private _tokenApproval; mapping(address => mapping(address => bool)) private _operatorApproval; uint256 private _currentId = 0; uint256 private _totalSupply = 0; function _mint(address _to) internal { require(_to != address(0), "ERC721: cannot mint to the zero address"); _currentId += 1; _totalSupply += 1; _tokenOwner[_currentId] = _to; _ownerBalance[_to] += 1; emit Transfer(address(0), _to, _currentId); } function _currentTokenId() internal view returns (uint256) { return _currentId; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address _owner) public view override returns (uint256) { return _ownerBalance[_owner]; } function ownerOf(uint256 _tokenId) public view override returns (address) { return _tokenOwner[_tokenId]; } function safeTransferFrom(address _from, address _to, uint256 _tokenId) public override { safeTransferFrom(_from, _to, _tokenId, ""); } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) public override { _transfer(_from, _to, _tokenId); _onERC721Received(_from, _to, _tokenId, _data); } function transferFrom(address _from, address _to, uint256 _tokenId) public override { _transfer(_from, _to, _tokenId); } function approve(address _approved, uint256 _tokenId) public override { require(_tokenOwner[_tokenId] == msg.sender); _tokenApproval[_tokenId] = _approved; emit Approval(msg.sender, _approved, _tokenId); } function setApprovalForAll(address _operator, bool _approved) public override { require(msg.sender != _operator, "ERC721: cannot approve the owner"); _operatorApproval[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } function getApproved(uint256 _tokenId) public view override returns (address) { return _tokenApproval[_tokenId]; } function isApprovedForAll(address _owner, address _operator) public view override returns (bool) { return _operatorApproval[_owner][_operator]; } function _transfer(address _from, address _to, uint256 _tokenId) internal { require(ownerOf(_tokenId) == _from, "ERC721: from address is not owner of token"); require(_tokenOwner[_tokenId] == msg.sender || _tokenApproval[_tokenId] == msg.sender || _operatorApproval[_from][msg.sender] == true, "ERC721: unauthorized transfer"); require(_to != address(0), "ERC721: cannot transfer to the zero address"); _ownerBalance[_from] -= 1; _tokenOwner[_tokenId] = _to; _tokenApproval[_tokenId] = address(0); _ownerBalance[_to] += 1; emit Transfer(_from, _to, _tokenId); } function _onERC721Received(address _from, address _to, uint256 _tokenId, bytes memory _data) private { uint256 size; assembly {size := extcodesize(_to)} if (size > 0) { try ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data) returns (bytes4 response) { if (response != ERC721Receiver.onERC721Received.selector) { revert("ERC721: ERC721Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC721: transfer to non ERC721Receiver implementer"); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721Metadata standard */ interface ERC721Metadata { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 _tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library utils { function toString(uint256 value) internal pure returns (string memory) { if (value == 0) return "0"; uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 standard */ interface ERC721 { event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata _data) external; function safeTransferFrom(address _from, address _to, uint256 _tokenId) external; function transferFrom(address _from, address _to, uint256 _tokenId) external; function approve(address _approved, uint256 _tokenId) external; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll(address _owner, address _operator) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721Receiver standard */ interface ERC721Receiver { function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns (bytes4); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_freeTokens","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"}],"name":"airdropBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"checkURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMintLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_cid","type":"string"},{"internalType":"bool","name":"_isExtension","type":"bool"}],"name":"setRevealURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600060045560006005553480156200001b57600080fd5b50604051620041d3380380620041d3833981810160405281019062000041919062000345565b336040518060400160405280601781526020017f546865204861707079204368656d6963616c20436c75620000000000000000008152506040518060400160405280600381526020017f54484300000000000000000000000000000000000000000000000000000000008152506040518060800160405280604a815260200162004189604a91398260099080519060200190620000e09291906200027e565b5081600a9080519060200190620000f99291906200027e565b5080600b9080519060200190620001129291906200027e565b506000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055505050506200015d81620001b860201b60201c565b506005600e81905550662386f26fc10000600f819055506000601160006101000a81548160ff0219169083151502179055506001601160016101000a81548160ff0219169083151502179055508060108190555050620003fa565b6000600c60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200028c906200037b565b90600052602060002090601f016020900481019282620002b05760008555620002fc565b82601f10620002cb57805160ff1916838001178555620002fc565b82800160010185558215620002fc579182015b82811115620002fb578251825591602001919060010190620002de565b5b5090506200030b91906200030f565b5090565b5b808211156200032a57600081600090555060010162000310565b5090565b6000815190506200033f81620003e0565b92915050565b6000602082840312156200035857600080fd5b600062000368848285016200032e565b91505092915050565b6000819050919050565b600060028204905060018216806200039457607f821691505b60208210811415620003ab57620003aa620003b1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620003eb8162000371565b8114620003f757600080fd5b50565b613d7f806200040a6000396000f3fe6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063a475b5dd11610095578063c87b56dd11610064578063c87b56dd14610631578063e6a72acf1461066e578063e985e9c5146106ab578063f2fde38b146106e8576101d8565b8063a475b5dd1461058b578063a8688435146105a2578063b2542e28146105df578063b88d4fde14610608576101d8565b8063996517cf116100d1578063996517cf146104f25780639e6a1d7d1461051d578063a0712d6814610546578063a22cb46514610562576101d8565b80638da5cb5b1461047357806391b7f5ed1461049e57806395d89b41146104c7576101d8565b806342842e0e1161016f5780636b3601861161013e5780636b360186146103cd57806370a08231146103f65780638456cb59146104335780638ba4cc3c1461044a576101d8565b806342842e0e1461031357806351cff8d91461033c5780635c975abb146103655780636352211e14610390576101d8565b8063095ea7b3116101ab578063095ea7b31461027f57806318160ddd146102a857806323b872dd146102d35780633f4ba83a146102fc576101d8565b806301ffc9a7146101da57806306fdde0314610217578063081812fc14610242576101d8565b366101d857005b005b3480156101e657600080fd5b5061020160048036038101906101fc9190612b94565b610711565b60405161020e919061356e565b60405180910390f35b34801561022357600080fd5b5061022c61091b565b6040516102399190613589565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612c3a565b6109ad565b60405161027691906134d0565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612b17565b6109ea565b005b3480156102b457600080fd5b506102bd610b05565b6040516102ca91906137ab565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190612a11565b610b0f565b005b34801561030857600080fd5b50610311610b1f565b005b34801561031f57600080fd5b5061033a60048036038101906103359190612a11565b610bb1565b005b34801561034857600080fd5b50610363600480360381019061035e91906129ac565b610bd1565b005b34801561037157600080fd5b5061037a610d37565b604051610387919061356e565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190612c3a565b610d4e565b6040516103c491906134d0565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190612be6565b610d8a565b005b34801561040257600080fd5b5061041d600480360381019061041891906129ac565b610e0d565b60405161042a91906137ab565b60405180910390f35b34801561043f57600080fd5b50610448610e56565b005b34801561045657600080fd5b50610471600480360381019061046c9190612b17565b610ee8565b005b34801561047f57600080fd5b50610488610fe0565b60405161049591906134d0565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612c3a565b61100a565b005b3480156104d357600080fd5b506104dc611089565b6040516104e99190613589565b60405180910390f35b3480156104fe57600080fd5b5061050761111b565b60405161051491906137ab565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612c3a565b611140565b005b610560600480360381019061055b9190612c3a565b6111bf565b005b34801561056e57600080fd5b5061058960048036038101906105849190612adb565b6114a3565b005b34801561059757600080fd5b506105a061160f565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190612c3a565b61168e565b6040516105d69190613589565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190612b53565b6116a0565b005b34801561061457600080fd5b5061062f600480360381019061062a9190612a60565b6117d9565b005b34801561063d57600080fd5b5061065860048036038101906106539190612c3a565b6117f6565b6040516106659190613589565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612c3a565b61191c565b6040516106a291906137ab565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906129d5565b61194e565b6040516106df919061356e565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a91906129ac565b6119e2565b005b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107dc57507f7f5828d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061084457507f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108ac57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061091457507f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606009805461092a90613ab1565b80601f016020809104026020016040519081016040528092919081815260200182805461095690613ab1565b80156109a35780601f10610978576101008083540402835291602001916109a3565b820191906000526020600020905b81548152906001019060200180831161098657829003601f168201915b5050505050905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5457600080fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600554905090565b610b1a838383611a63565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610b3e610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b9061364b565b60405180910390fd5b6000601160016101000a81548160ff021916908315150217905550565b610bcc838383604051806020016040528060008152506117d9565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610bf0610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d9061364b565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff1647604051610c71906134bb565b60006040518083038185875af1925050503d8060008114610cae576040519150601f19603f3d011682016040523d82523d6000602084013e610cb3565b606091505b5050905080610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061366b565b60405180910390fd5b7f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb338484604051610d2a939291906134eb565b60405180910390a1505050565b6000601160019054906101000a900460ff16905090565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610da9610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df69061364b565b60405180910390fd5b610e098282611e9a565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e75610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec29061364b565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff16610f07610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f549061364b565b60405180910390fd5b611068610f68610b05565b82610f7391906138e6565b1115610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061378b565b60405180910390fd5b60005b81811015610fdb57610fc883611f40565b8080610fd390613ae3565b915050610fb7565b505050565b6000600c60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16611029610fe0565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110769061364b565b60405180910390fd5b80600f8190555050565b6060600a805461109890613ab1565b80601f01602080910402602001604051908101604052809291908181526020018280546110c490613ab1565b80156111115780601f106110e657610100808354040283529160200191611111565b820191906000526020600020905b8154815290600101906020018083116110f457829003601f168201915b5050505050905090565b60006010546111286120ee565b1015611137576001905061113d565b600e5490505b90565b3373ffffffffffffffffffffffffffffffffffffffff1661115f610fe0565b73ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac9061364b565b60405180910390fd5b80600e8190555050565b60001515601160009054906101000a900460ff16151514611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c906136cb565b60405180910390fd5b6001601160006101000a81548160ff0219169083151502179055506112398161191c565b34101561127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112729061372b565b60405180910390fd5b611068611286610b05565b8261129191906138e6565b11156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c99061378b565b60405180910390fd5b6112da61111b565b81111561131c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113139061362b565b60405180910390fd5b61132461111b565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261136f91906138e6565b11156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a79061362b565b60405180910390fd5b60011515601160019054906101000a900460ff1615151415611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9061368b565b60405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461145691906138e6565b9250508190555060005b818110156114845761147133611f40565b808061147c90613ae3565b915050611460565b506000601160006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611512576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611509906136eb565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611603919061356e565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff1661162e610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b9061364b565b60405180910390fd5b61168c6120f8565b565b60606116998261216b565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff166116bf610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c9061364b565b60405180910390fd5b611068611720610b05565b825161172c91906138e6565b111561176d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117649061378b565b60405180910390fd5b60005b81518110156117d5576117c28282815181106117b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611f40565b80806117cd90613ae3565b915050611770565b5050565b6117e4848484611a63565b6117f084848484612226565b50505050565b6060600082148061180d575061180a6120ee565b82115b1561184f576040518060400160405280601581526020017f546f6b656e204944206f7574206f662072616e676500000000000000000000008152509050611917565b600115156007600084815260200190815260200160002060009054906101000a900460ff16151514156118be576118846123de565b600660008481526020019081526020016000206040516020016118a8929190613414565b6040516020818303038152906040529050611917565b60011515600c60009054906101000a900460ff16151514156118ea576118e38261241b565b9050611917565b6118f26123de565b600b604051602001611905929190613414565b60405160208183030381529060405290505b919050565b60006010546119296120ee565b10156119385760009050611949565b81600f54611946919061396d565b90505b919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611a01610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e9061364b565b60405180910390fd5b611a60816124b0565b50565b8273ffffffffffffffffffffffffffffffffffffffff16611a8382610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad0906135eb565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611ba357503373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611c3b575060011515600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c719061376b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce19061370b565b60405180910390fd5b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d3991906139c7565b925050819055508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3391906138e6565b92505081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60001515600c60009054906101000a900460ff16151514611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee7906135ab565b60405180910390fd5b8160089080519060200190611f0692919061273a565b5080600c60026101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa79061374b565b60405180910390fd5b600160046000828254611fc391906138e6565b92505081905550600160056000828254611fdd91906138e6565b9250508190555080600080600454815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461208691906138e6565b925050819055506004548173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450565b6000600454905090565b60011515600c60019054906101000a900460ff1615151461214e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121459061360b565b60405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b60606000821480612182575061217f6120ee565b82115b156121c4576040518060400160405280601581526020017f546f6b656e204944206f7574206f662072616e676500000000000000000000008152509050612221565b600115156121d0612576565b15151415612215576040518060400160405280601981526020017f546f6b656e732068617665206265656e2072657665616c6564000000000000008152509050612221565b61221e8261241b565b90505b919050565b6000833b905060008111156123d7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016122749493929190613522565b602060405180830381600087803b15801561228e57600080fd5b505af19250505080156122bf57506040513d601f19601f820116820180604052508101906122bc9190612bbd565b60015b61234e576122cb613c37565b806122d65750612313565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a9190613589565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612345906135cb565b60405180910390fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc906136ab565b60405180910390fd5b505b5050505050565b60606040518060400160405280600781526020017f697066733a2f2f00000000000000000000000000000000000000000000000000815250905090565b606060011515600c60029054906101000a900460ff1615151415612474576124416123de565b600861244c8461258d565b60405160200161245e93929190613474565b60405160208183030381529060405290506124ab565b61247c6123de565b60086124878461258d565b60405160200161249993929190613438565b60405160208183030381529060405290505b919050565b6000600c60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600c60009054906101000a900460ff16905090565b606060008214156125d5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612735565b600082905060005b600082146126075780806125f090613ae3565b915050600a82612600919061393c565b91506125dd565b60008167ffffffffffffffff811115612649577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561267b5781602001600182028036833780820191505090505b5090505b6000851461272e5760018261269491906139c7565b9150600a856126a39190613b2c565b60306126af91906138e6565b60f81b8183815181106126eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612727919061393c565b945061267f565b8093505050505b919050565b82805461274690613ab1565b90600052602060002090601f01602090048101928261276857600085556127af565b82601f1061278157805160ff19168380011785556127af565b828001600101855582156127af579182015b828111156127ae578251825591602001919060010190612793565b5b5090506127bc91906127c0565b5090565b5b808211156127d95760008160009055506001016127c1565b5090565b60006127f06127eb846137f7565b6137c6565b9050808382526020820190508285602086028201111561280f57600080fd5b60005b8581101561283f578161282588826128c5565b845260208401935060208301925050600181019050612812565b5050509392505050565b600061285c61285784613823565b6137c6565b90508281526020810184848401111561287457600080fd5b61287f848285613a6f565b509392505050565b600061289a61289584613853565b6137c6565b9050828152602081018484840111156128b257600080fd5b6128bd848285613a6f565b509392505050565b6000813590506128d481613ced565b92915050565b600082601f8301126128eb57600080fd5b81356128fb8482602086016127dd565b91505092915050565b60008135905061291381613d04565b92915050565b60008135905061292881613d1b565b92915050565b60008151905061293d81613d1b565b92915050565b600082601f83011261295457600080fd5b8135612964848260208601612849565b91505092915050565b600082601f83011261297e57600080fd5b813561298e848260208601612887565b91505092915050565b6000813590506129a681613d32565b92915050565b6000602082840312156129be57600080fd5b60006129cc848285016128c5565b91505092915050565b600080604083850312156129e857600080fd5b60006129f6858286016128c5565b9250506020612a07858286016128c5565b9150509250929050565b600080600060608486031215612a2657600080fd5b6000612a34868287016128c5565b9350506020612a45868287016128c5565b9250506040612a5686828701612997565b9150509250925092565b60008060008060808587031215612a7657600080fd5b6000612a84878288016128c5565b9450506020612a95878288016128c5565b9350506040612aa687828801612997565b925050606085013567ffffffffffffffff811115612ac357600080fd5b612acf87828801612943565b91505092959194509250565b60008060408385031215612aee57600080fd5b6000612afc858286016128c5565b9250506020612b0d85828601612904565b9150509250929050565b60008060408385031215612b2a57600080fd5b6000612b38858286016128c5565b9250506020612b4985828601612997565b9150509250929050565b600060208284031215612b6557600080fd5b600082013567ffffffffffffffff811115612b7f57600080fd5b612b8b848285016128da565b91505092915050565b600060208284031215612ba657600080fd5b6000612bb484828501612919565b91505092915050565b600060208284031215612bcf57600080fd5b6000612bdd8482850161292e565b91505092915050565b60008060408385031215612bf957600080fd5b600083013567ffffffffffffffff811115612c1357600080fd5b612c1f8582860161296d565b9250506020612c3085828601612904565b9150509250929050565b600060208284031215612c4c57600080fd5b6000612c5a84828501612997565b91505092915050565b612c6c816139fb565b82525050565b612c7b81613a0d565b82525050565b6000612c8c82613898565b612c9681856138ae565b9350612ca6818560208601613a7e565b612caf81613c19565b840191505092915050565b6000612cc5826138a3565b612ccf81856138ca565b9350612cdf818560208601613a7e565b612ce881613c19565b840191505092915050565b6000612cfe826138a3565b612d0881856138db565b9350612d18818560208601613a7e565b80840191505092915050565b60008154612d3181613ab1565b612d3b81866138db565b94506001821660008114612d565760018114612d6757612d9a565b60ff19831686528186019350612d9a565b612d7085613883565b60005b83811015612d9257815481890152600182019150602081019050612d73565b838801955050505b50505092915050565b6000612db06022836138ca565b91507f4552433732313a2072657665616c2068617320616c7265616479206f6363757260008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e166032836138ca565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612e7c602a836138ca565b91507f4552433732313a2066726f6d2061646472657373206973206e6f74206f776e6560008301527f72206f6620746f6b656e000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee2601a836138ca565b91507f4552433732313a2072657665616c20555249206e6f74207365740000000000006000830152602082019050919050565b6000612f22602e836138ca565b91507f54686548617070794368656d6963616c436c75623a20746f6b656e732065786360008301527f656564206d696e74206c696d69740000000000000000000000000000000000006020830152604082019050919050565b6000612f88601f836138ca565b91507f4552433137333a2063616c6c6572206973206e6f7420746865206f776e6572006000830152602082019050919050565b6000612fc8602b836138ca565b91507f54686548617070794368656d6963616c436c75623a206574686572207472616e60008301527f73666572206661696c65640000000000000000000000000000000000000000006020830152604082019050919050565b600061302e6027836138ca565b91507f54686548617070794368656d6963616c436c75623a206d696e74696e6720697360008301527f20706175736564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130946026836138ca565b91507f4552433732313a2045524337323152656365697665722072656a65637465642060008301527f746f6b656e7300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130fa6027836138ca565b91507f54686548617070794368656d6963616c436c75623a207265656e7472616e637960008301527f2064656e696564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131606005836138db565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b60006131a06020836138ca565b91507f4552433732313a2063616e6e6f7420617070726f766520746865206f776e65726000830152602082019050919050565b60006131e0602b836138ca565b91507f4552433732313a2063616e6e6f74207472616e7366657220746f20746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000613246602f836138ca565b91507f54686548617070794368656d6963616c436c75623a206e6f7420656e6f75676860008301527f2066756e64732070726f766964656400000000000000000000000000000000006020830152604082019050919050565b60006132ac6000836138bf565b9150600082019050919050565b60006132c66027836138ca565b91507f4552433732313a2063616e6e6f74206d696e7420746f20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061332c601d836138ca565b91507f4552433732313a20756e617574686f72697a6564207472616e736665720000006000830152602082019050919050565b600061336c602b836138ca565b91507f54686548617070794368656d6963616c436c75623a206d6178696d756d20746f60008301527f6b656e73206d696e7465640000000000000000000000000000000000000000006020830152604082019050919050565b60006133d26001836138db565b91507f2f000000000000000000000000000000000000000000000000000000000000006000830152600182019050919050565b61340e81613a65565b82525050565b60006134208285612cf3565b915061342c8284612d24565b91508190509392505050565b60006134448286612cf3565b91506134508285612d24565b915061345b826133c5565b91506134678284612cf3565b9150819050949350505050565b60006134808286612cf3565b915061348c8285612d24565b9150613497826133c5565b91506134a38284612cf3565b91506134ae82613153565b9150819050949350505050565b60006134c68261329f565b9150819050919050565b60006020820190506134e56000830184612c63565b92915050565b60006060820190506135006000830186612c63565b61350d6020830185612c63565b61351a6040830184613405565b949350505050565b60006080820190506135376000830187612c63565b6135446020830186612c63565b6135516040830185613405565b81810360608301526135638184612c81565b905095945050505050565b60006020820190506135836000830184612c72565b92915050565b600060208201905081810360008301526135a38184612cba565b905092915050565b600060208201905081810360008301526135c481612da3565b9050919050565b600060208201905081810360008301526135e481612e09565b9050919050565b6000602082019050818103600083015261360481612e6f565b9050919050565b6000602082019050818103600083015261362481612ed5565b9050919050565b6000602082019050818103600083015261364481612f15565b9050919050565b6000602082019050818103600083015261366481612f7b565b9050919050565b6000602082019050818103600083015261368481612fbb565b9050919050565b600060208201905081810360008301526136a481613021565b9050919050565b600060208201905081810360008301526136c481613087565b9050919050565b600060208201905081810360008301526136e4816130ed565b9050919050565b6000602082019050818103600083015261370481613193565b9050919050565b60006020820190508181036000830152613724816131d3565b9050919050565b6000602082019050818103600083015261374481613239565b9050919050565b60006020820190508181036000830152613764816132b9565b9050919050565b600060208201905081810360008301526137848161331f565b9050919050565b600060208201905081810360008301526137a48161335f565b9050919050565b60006020820190506137c06000830184613405565b92915050565b6000604051905081810181811067ffffffffffffffff821117156137ed576137ec613bea565b5b8060405250919050565b600067ffffffffffffffff82111561381257613811613bea565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561383e5761383d613bea565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561386e5761386d613bea565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006138f182613a65565b91506138fc83613a65565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561393157613930613b5d565b5b828201905092915050565b600061394782613a65565b915061395283613a65565b92508261396257613961613b8c565b5b828204905092915050565b600061397882613a65565b915061398383613a65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139bc576139bb613b5d565b5b828202905092915050565b60006139d282613a65565b91506139dd83613a65565b9250828210156139f0576139ef613b5d565b5b828203905092915050565b6000613a0682613a45565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613a9c578082015181840152602081019050613a81565b83811115613aab576000848401525b50505050565b60006002820490506001821680613ac957607f821691505b60208210811415613add57613adc613bbb565b5b50919050565b6000613aee82613a65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b2157613b20613b5d565b5b600182019050919050565b6000613b3782613a65565b9150613b4283613a65565b925082613b5257613b51613b8c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015613c4757613cea565b60046000803e613c58600051613c2a565b6308c379a08114613c695750613cea565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715613c9557505050613cea565b808201805167ffffffffffffffff811115613cb4575050505050613cea565b8060208301013d8501811115613ccf57505050505050613cea565b613cd882613c19565b60208401016040528296505050505050505b90565b613cf6816139fb565b8114613d0157600080fd5b50565b613d0d81613a0d565b8114613d1857600080fd5b50565b613d2481613a19565b8114613d2f57600080fd5b50565b613d3b81613a65565b8114613d4657600080fd5b5056fea2646970667358221220e226b35191bb5272244a0ab944a1d0ac0bc28b2a50b73c23135be40c7a807db064736f6c63430008000033626166796265696634326969337467716a6a6f75366f7a7a73367a63366b646a3669687962696a76766e7a7a6e707a646137693561756c686a67792f70726572657665616c2e6a736f6e0000000000000000000000000000000000000000000000000000000000000208
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063a475b5dd11610095578063c87b56dd11610064578063c87b56dd14610631578063e6a72acf1461066e578063e985e9c5146106ab578063f2fde38b146106e8576101d8565b8063a475b5dd1461058b578063a8688435146105a2578063b2542e28146105df578063b88d4fde14610608576101d8565b8063996517cf116100d1578063996517cf146104f25780639e6a1d7d1461051d578063a0712d6814610546578063a22cb46514610562576101d8565b80638da5cb5b1461047357806391b7f5ed1461049e57806395d89b41146104c7576101d8565b806342842e0e1161016f5780636b3601861161013e5780636b360186146103cd57806370a08231146103f65780638456cb59146104335780638ba4cc3c1461044a576101d8565b806342842e0e1461031357806351cff8d91461033c5780635c975abb146103655780636352211e14610390576101d8565b8063095ea7b3116101ab578063095ea7b31461027f57806318160ddd146102a857806323b872dd146102d35780633f4ba83a146102fc576101d8565b806301ffc9a7146101da57806306fdde0314610217578063081812fc14610242576101d8565b366101d857005b005b3480156101e657600080fd5b5061020160048036038101906101fc9190612b94565b610711565b60405161020e919061356e565b60405180910390f35b34801561022357600080fd5b5061022c61091b565b6040516102399190613589565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612c3a565b6109ad565b60405161027691906134d0565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612b17565b6109ea565b005b3480156102b457600080fd5b506102bd610b05565b6040516102ca91906137ab565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190612a11565b610b0f565b005b34801561030857600080fd5b50610311610b1f565b005b34801561031f57600080fd5b5061033a60048036038101906103359190612a11565b610bb1565b005b34801561034857600080fd5b50610363600480360381019061035e91906129ac565b610bd1565b005b34801561037157600080fd5b5061037a610d37565b604051610387919061356e565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190612c3a565b610d4e565b6040516103c491906134d0565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190612be6565b610d8a565b005b34801561040257600080fd5b5061041d600480360381019061041891906129ac565b610e0d565b60405161042a91906137ab565b60405180910390f35b34801561043f57600080fd5b50610448610e56565b005b34801561045657600080fd5b50610471600480360381019061046c9190612b17565b610ee8565b005b34801561047f57600080fd5b50610488610fe0565b60405161049591906134d0565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190612c3a565b61100a565b005b3480156104d357600080fd5b506104dc611089565b6040516104e99190613589565b60405180910390f35b3480156104fe57600080fd5b5061050761111b565b60405161051491906137ab565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612c3a565b611140565b005b610560600480360381019061055b9190612c3a565b6111bf565b005b34801561056e57600080fd5b5061058960048036038101906105849190612adb565b6114a3565b005b34801561059757600080fd5b506105a061160f565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190612c3a565b61168e565b6040516105d69190613589565b60405180910390f35b3480156105eb57600080fd5b5061060660048036038101906106019190612b53565b6116a0565b005b34801561061457600080fd5b5061062f600480360381019061062a9190612a60565b6117d9565b005b34801561063d57600080fd5b5061065860048036038101906106539190612c3a565b6117f6565b6040516106659190613589565b60405180910390f35b34801561067a57600080fd5b5061069560048036038101906106909190612c3a565b61191c565b6040516106a291906137ab565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906129d5565b61194e565b6040516106df919061356e565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a91906129ac565b6119e2565b005b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107dc57507f7f5828d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061084457507f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108ac57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061091457507f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606009805461092a90613ab1565b80601f016020809104026020016040519081016040528092919081815260200182805461095690613ab1565b80156109a35780601f10610978576101008083540402835291602001916109a3565b820191906000526020600020905b81548152906001019060200180831161098657829003601f168201915b5050505050905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5457600080fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600554905090565b610b1a838383611a63565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610b3e610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b9061364b565b60405180910390fd5b6000601160016101000a81548160ff021916908315150217905550565b610bcc838383604051806020016040528060008152506117d9565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610bf0610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d9061364b565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff1647604051610c71906134bb565b60006040518083038185875af1925050503d8060008114610cae576040519150601f19603f3d011682016040523d82523d6000602084013e610cb3565b606091505b5050905080610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee9061366b565b60405180910390fd5b7f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb338484604051610d2a939291906134eb565b60405180910390a1505050565b6000601160019054906101000a900460ff16905090565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610da9610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df69061364b565b60405180910390fd5b610e098282611e9a565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e75610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec29061364b565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff16610f07610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f549061364b565b60405180910390fd5b611068610f68610b05565b82610f7391906138e6565b1115610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061378b565b60405180910390fd5b60005b81811015610fdb57610fc883611f40565b8080610fd390613ae3565b915050610fb7565b505050565b6000600c60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16611029610fe0565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110769061364b565b60405180910390fd5b80600f8190555050565b6060600a805461109890613ab1565b80601f01602080910402602001604051908101604052809291908181526020018280546110c490613ab1565b80156111115780601f106110e657610100808354040283529160200191611111565b820191906000526020600020905b8154815290600101906020018083116110f457829003601f168201915b5050505050905090565b60006010546111286120ee565b1015611137576001905061113d565b600e5490505b90565b3373ffffffffffffffffffffffffffffffffffffffff1661115f610fe0565b73ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac9061364b565b60405180910390fd5b80600e8190555050565b60001515601160009054906101000a900460ff16151514611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c906136cb565b60405180910390fd5b6001601160006101000a81548160ff0219169083151502179055506112398161191c565b34101561127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112729061372b565b60405180910390fd5b611068611286610b05565b8261129191906138e6565b11156112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c99061378b565b60405180910390fd5b6112da61111b565b81111561131c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113139061362b565b60405180910390fd5b61132461111b565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261136f91906138e6565b11156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a79061362b565b60405180910390fd5b60011515601160019054906101000a900460ff1615151415611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9061368b565b60405180910390fd5b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461145691906138e6565b9250508190555060005b818110156114845761147133611f40565b808061147c90613ae3565b915050611460565b506000601160006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611512576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611509906136eb565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611603919061356e565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff1661162e610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b9061364b565b60405180910390fd5b61168c6120f8565b565b60606116998261216b565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff166116bf610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c9061364b565b60405180910390fd5b611068611720610b05565b825161172c91906138e6565b111561176d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117649061378b565b60405180910390fd5b60005b81518110156117d5576117c28282815181106117b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611f40565b80806117cd90613ae3565b915050611770565b5050565b6117e4848484611a63565b6117f084848484612226565b50505050565b6060600082148061180d575061180a6120ee565b82115b1561184f576040518060400160405280601581526020017f546f6b656e204944206f7574206f662072616e676500000000000000000000008152509050611917565b600115156007600084815260200190815260200160002060009054906101000a900460ff16151514156118be576118846123de565b600660008481526020019081526020016000206040516020016118a8929190613414565b6040516020818303038152906040529050611917565b60011515600c60009054906101000a900460ff16151514156118ea576118e38261241b565b9050611917565b6118f26123de565b600b604051602001611905929190613414565b60405160208183030381529060405290505b919050565b60006010546119296120ee565b10156119385760009050611949565b81600f54611946919061396d565b90505b919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611a01610fe0565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e9061364b565b60405180910390fd5b611a60816124b0565b50565b8273ffffffffffffffffffffffffffffffffffffffff16611a8382610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad0906135eb565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611ba357503373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611c3b575060011515600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c719061376b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce19061370b565b60405180910390fd5b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d3991906139c7565b925050819055508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3391906138e6565b92505081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60001515600c60009054906101000a900460ff16151514611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee7906135ab565b60405180910390fd5b8160089080519060200190611f0692919061273a565b5080600c60026101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa79061374b565b60405180910390fd5b600160046000828254611fc391906138e6565b92505081905550600160056000828254611fdd91906138e6565b9250508190555080600080600454815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461208691906138e6565b925050819055506004548173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450565b6000600454905090565b60011515600c60019054906101000a900460ff1615151461214e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121459061360b565b60405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b60606000821480612182575061217f6120ee565b82115b156121c4576040518060400160405280601581526020017f546f6b656e204944206f7574206f662072616e676500000000000000000000008152509050612221565b600115156121d0612576565b15151415612215576040518060400160405280601981526020017f546f6b656e732068617665206265656e2072657665616c6564000000000000008152509050612221565b61221e8261241b565b90505b919050565b6000833b905060008111156123d7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016122749493929190613522565b602060405180830381600087803b15801561228e57600080fd5b505af19250505080156122bf57506040513d601f19601f820116820180604052508101906122bc9190612bbd565b60015b61234e576122cb613c37565b806122d65750612313565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a9190613589565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612345906135cb565b60405180910390fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc906136ab565b60405180910390fd5b505b5050505050565b60606040518060400160405280600781526020017f697066733a2f2f00000000000000000000000000000000000000000000000000815250905090565b606060011515600c60029054906101000a900460ff1615151415612474576124416123de565b600861244c8461258d565b60405160200161245e93929190613474565b60405160208183030381529060405290506124ab565b61247c6123de565b60086124878461258d565b60405160200161249993929190613438565b60405160208183030381529060405290505b919050565b6000600c60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600c60009054906101000a900460ff16905090565b606060008214156125d5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612735565b600082905060005b600082146126075780806125f090613ae3565b915050600a82612600919061393c565b91506125dd565b60008167ffffffffffffffff811115612649577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561267b5781602001600182028036833780820191505090505b5090505b6000851461272e5760018261269491906139c7565b9150600a856126a39190613b2c565b60306126af91906138e6565b60f81b8183815181106126eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612727919061393c565b945061267f565b8093505050505b919050565b82805461274690613ab1565b90600052602060002090601f01602090048101928261276857600085556127af565b82601f1061278157805160ff19168380011785556127af565b828001600101855582156127af579182015b828111156127ae578251825591602001919060010190612793565b5b5090506127bc91906127c0565b5090565b5b808211156127d95760008160009055506001016127c1565b5090565b60006127f06127eb846137f7565b6137c6565b9050808382526020820190508285602086028201111561280f57600080fd5b60005b8581101561283f578161282588826128c5565b845260208401935060208301925050600181019050612812565b5050509392505050565b600061285c61285784613823565b6137c6565b90508281526020810184848401111561287457600080fd5b61287f848285613a6f565b509392505050565b600061289a61289584613853565b6137c6565b9050828152602081018484840111156128b257600080fd5b6128bd848285613a6f565b509392505050565b6000813590506128d481613ced565b92915050565b600082601f8301126128eb57600080fd5b81356128fb8482602086016127dd565b91505092915050565b60008135905061291381613d04565b92915050565b60008135905061292881613d1b565b92915050565b60008151905061293d81613d1b565b92915050565b600082601f83011261295457600080fd5b8135612964848260208601612849565b91505092915050565b600082601f83011261297e57600080fd5b813561298e848260208601612887565b91505092915050565b6000813590506129a681613d32565b92915050565b6000602082840312156129be57600080fd5b60006129cc848285016128c5565b91505092915050565b600080604083850312156129e857600080fd5b60006129f6858286016128c5565b9250506020612a07858286016128c5565b9150509250929050565b600080600060608486031215612a2657600080fd5b6000612a34868287016128c5565b9350506020612a45868287016128c5565b9250506040612a5686828701612997565b9150509250925092565b60008060008060808587031215612a7657600080fd5b6000612a84878288016128c5565b9450506020612a95878288016128c5565b9350506040612aa687828801612997565b925050606085013567ffffffffffffffff811115612ac357600080fd5b612acf87828801612943565b91505092959194509250565b60008060408385031215612aee57600080fd5b6000612afc858286016128c5565b9250506020612b0d85828601612904565b9150509250929050565b60008060408385031215612b2a57600080fd5b6000612b38858286016128c5565b9250506020612b4985828601612997565b9150509250929050565b600060208284031215612b6557600080fd5b600082013567ffffffffffffffff811115612b7f57600080fd5b612b8b848285016128da565b91505092915050565b600060208284031215612ba657600080fd5b6000612bb484828501612919565b91505092915050565b600060208284031215612bcf57600080fd5b6000612bdd8482850161292e565b91505092915050565b60008060408385031215612bf957600080fd5b600083013567ffffffffffffffff811115612c1357600080fd5b612c1f8582860161296d565b9250506020612c3085828601612904565b9150509250929050565b600060208284031215612c4c57600080fd5b6000612c5a84828501612997565b91505092915050565b612c6c816139fb565b82525050565b612c7b81613a0d565b82525050565b6000612c8c82613898565b612c9681856138ae565b9350612ca6818560208601613a7e565b612caf81613c19565b840191505092915050565b6000612cc5826138a3565b612ccf81856138ca565b9350612cdf818560208601613a7e565b612ce881613c19565b840191505092915050565b6000612cfe826138a3565b612d0881856138db565b9350612d18818560208601613a7e565b80840191505092915050565b60008154612d3181613ab1565b612d3b81866138db565b94506001821660008114612d565760018114612d6757612d9a565b60ff19831686528186019350612d9a565b612d7085613883565b60005b83811015612d9257815481890152600182019150602081019050612d73565b838801955050505b50505092915050565b6000612db06022836138ca565b91507f4552433732313a2072657665616c2068617320616c7265616479206f6363757260008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e166032836138ca565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000612e7c602a836138ca565b91507f4552433732313a2066726f6d2061646472657373206973206e6f74206f776e6560008301527f72206f6620746f6b656e000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee2601a836138ca565b91507f4552433732313a2072657665616c20555249206e6f74207365740000000000006000830152602082019050919050565b6000612f22602e836138ca565b91507f54686548617070794368656d6963616c436c75623a20746f6b656e732065786360008301527f656564206d696e74206c696d69740000000000000000000000000000000000006020830152604082019050919050565b6000612f88601f836138ca565b91507f4552433137333a2063616c6c6572206973206e6f7420746865206f776e6572006000830152602082019050919050565b6000612fc8602b836138ca565b91507f54686548617070794368656d6963616c436c75623a206574686572207472616e60008301527f73666572206661696c65640000000000000000000000000000000000000000006020830152604082019050919050565b600061302e6027836138ca565b91507f54686548617070794368656d6963616c436c75623a206d696e74696e6720697360008301527f20706175736564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130946026836138ca565b91507f4552433732313a2045524337323152656365697665722072656a65637465642060008301527f746f6b656e7300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130fa6027836138ca565b91507f54686548617070794368656d6963616c436c75623a207265656e7472616e637960008301527f2064656e696564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131606005836138db565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b60006131a06020836138ca565b91507f4552433732313a2063616e6e6f7420617070726f766520746865206f776e65726000830152602082019050919050565b60006131e0602b836138ca565b91507f4552433732313a2063616e6e6f74207472616e7366657220746f20746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000613246602f836138ca565b91507f54686548617070794368656d6963616c436c75623a206e6f7420656e6f75676860008301527f2066756e64732070726f766964656400000000000000000000000000000000006020830152604082019050919050565b60006132ac6000836138bf565b9150600082019050919050565b60006132c66027836138ca565b91507f4552433732313a2063616e6e6f74206d696e7420746f20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061332c601d836138ca565b91507f4552433732313a20756e617574686f72697a6564207472616e736665720000006000830152602082019050919050565b600061336c602b836138ca565b91507f54686548617070794368656d6963616c436c75623a206d6178696d756d20746f60008301527f6b656e73206d696e7465640000000000000000000000000000000000000000006020830152604082019050919050565b60006133d26001836138db565b91507f2f000000000000000000000000000000000000000000000000000000000000006000830152600182019050919050565b61340e81613a65565b82525050565b60006134208285612cf3565b915061342c8284612d24565b91508190509392505050565b60006134448286612cf3565b91506134508285612d24565b915061345b826133c5565b91506134678284612cf3565b9150819050949350505050565b60006134808286612cf3565b915061348c8285612d24565b9150613497826133c5565b91506134a38284612cf3565b91506134ae82613153565b9150819050949350505050565b60006134c68261329f565b9150819050919050565b60006020820190506134e56000830184612c63565b92915050565b60006060820190506135006000830186612c63565b61350d6020830185612c63565b61351a6040830184613405565b949350505050565b60006080820190506135376000830187612c63565b6135446020830186612c63565b6135516040830185613405565b81810360608301526135638184612c81565b905095945050505050565b60006020820190506135836000830184612c72565b92915050565b600060208201905081810360008301526135a38184612cba565b905092915050565b600060208201905081810360008301526135c481612da3565b9050919050565b600060208201905081810360008301526135e481612e09565b9050919050565b6000602082019050818103600083015261360481612e6f565b9050919050565b6000602082019050818103600083015261362481612ed5565b9050919050565b6000602082019050818103600083015261364481612f15565b9050919050565b6000602082019050818103600083015261366481612f7b565b9050919050565b6000602082019050818103600083015261368481612fbb565b9050919050565b600060208201905081810360008301526136a481613021565b9050919050565b600060208201905081810360008301526136c481613087565b9050919050565b600060208201905081810360008301526136e4816130ed565b9050919050565b6000602082019050818103600083015261370481613193565b9050919050565b60006020820190508181036000830152613724816131d3565b9050919050565b6000602082019050818103600083015261374481613239565b9050919050565b60006020820190508181036000830152613764816132b9565b9050919050565b600060208201905081810360008301526137848161331f565b9050919050565b600060208201905081810360008301526137a48161335f565b9050919050565b60006020820190506137c06000830184613405565b92915050565b6000604051905081810181811067ffffffffffffffff821117156137ed576137ec613bea565b5b8060405250919050565b600067ffffffffffffffff82111561381257613811613bea565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561383e5761383d613bea565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561386e5761386d613bea565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006138f182613a65565b91506138fc83613a65565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561393157613930613b5d565b5b828201905092915050565b600061394782613a65565b915061395283613a65565b92508261396257613961613b8c565b5b828204905092915050565b600061397882613a65565b915061398383613a65565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139bc576139bb613b5d565b5b828202905092915050565b60006139d282613a65565b91506139dd83613a65565b9250828210156139f0576139ef613b5d565b5b828203905092915050565b6000613a0682613a45565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613a9c578082015181840152602081019050613a81565b83811115613aab576000848401525b50505050565b60006002820490506001821680613ac957607f821691505b60208210811415613add57613adc613bbb565b5b50919050565b6000613aee82613a65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b2157613b20613b5d565b5b600182019050919050565b6000613b3782613a65565b9150613b4283613a65565b925082613b5257613b51613b8c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015613c4757613cea565b60046000803e613c58600051613c2a565b6308c379a08114613c695750613cea565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715613c9557505050613cea565b808201805167ffffffffffffffff811115613cb4575050505050613cea565b8060208301013d8501811115613ccf57505050505050613cea565b613cd882613c19565b60208401016040528296505050505050505b90565b613cf6816139fb565b8114613d0157600080fd5b50565b613d0d81613a0d565b8114613d1857600080fd5b50565b613d2481613a19565b8114613d2f57600080fd5b50565b613d3b81613a65565b8114613d4657600080fd5b5056fea2646970667358221220e226b35191bb5272244a0ab944a1d0ac0bc28b2a50b73c23135be40c7a807db064736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000208
-----Decoded View---------------
Arg [0] : _freeTokens (uint256): 520
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000208
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.