Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
7,818 EGG
Holders
525
Total Transfers
-
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
EggStorage
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-29 */ pragma solidity 0.4.25; library SafeMath256 { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } function pow(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; if (b == 0) return 1; uint256 c = a ** b; assert(c / (a ** (b - 1)) == a); return c; } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function _validateAddress(address _addr) internal pure { require(_addr != address(0), "invalid address"); } constructor() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "not a contract owner"); _; } function transferOwnership(address newOwner) public onlyOwner { _validateAddress(newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract Controllable is Ownable { mapping(address => bool) controllers; modifier onlyController { require(_isController(msg.sender), "no controller rights"); _; } function _isController(address _controller) internal view returns (bool) { return controllers[_controller]; } function _setControllers(address[] _controllers) internal { for (uint256 i = 0; i < _controllers.length; i++) { _validateAddress(_controllers[i]); controllers[_controllers[i]] = true; } } } contract Upgradable is Controllable { address[] internalDependencies; address[] externalDependencies; function getInternalDependencies() public view returns(address[]) { return internalDependencies; } function getExternalDependencies() public view returns(address[]) { return externalDependencies; } function setInternalDependencies(address[] _newDependencies) public onlyOwner { for (uint256 i = 0; i < _newDependencies.length; i++) { _validateAddress(_newDependencies[i]); } internalDependencies = _newDependencies; } function setExternalDependencies(address[] _newDependencies) public onlyOwner { externalDependencies = _newDependencies; _setControllers(_newDependencies); } } contract ERC721Basic { 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) public view returns (uint256 _balance); function ownerOf(uint256 _tokenId) public view returns (address _owner); function exists(uint256 _tokenId) public view returns (bool _exists); function approve(address _to, uint256 _tokenId) public; function getApproved(uint256 _tokenId) public view returns (address _operator); function setApprovalForAll(address _operator, bool _approved) public; function isApprovedForAll(address _owner, address _operator) public view returns (bool); function transferFrom(address _from, address _to, uint256 _tokenId) public; function safeTransferFrom(address _from, address _to, uint256 _tokenId) public; function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) public; function supportsInterface(bytes4 _interfaceID) external pure returns (bool); } contract ERC721Enumerable is ERC721Basic { function totalSupply() public view returns (uint256); function tokenOfOwnerByIndex(address _owner, uint256 _index) public view returns (uint256 _tokenId); function tokenByIndex(uint256 _index) public view returns (uint256); } contract ERC721Metadata is ERC721Basic { function name() public view returns (string _name); function symbol() public view returns (string _symbol); function tokenURI(uint256 _tokenId) public view returns (string); } contract ERC721 is ERC721Basic, ERC721Enumerable, ERC721Metadata {} contract ERC721Receiver { function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes _data ) public returns(bytes4); } contract ERC721BasicToken is ERC721Basic, Upgradable { using SafeMath256 for uint256; // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; // Mapping from token ID to owner mapping (uint256 => address) internal tokenOwner; // Mapping from token ID to approved address mapping (uint256 => address) internal tokenApprovals; // Mapping from owner to number of owned token mapping (address => uint256) internal ownedTokensCount; // Mapping from owner to operator approvals mapping (address => mapping (address => bool)) internal operatorApprovals; function _checkRights(bool _has) internal pure { require(_has, "no rights to manage"); } function _validateAddress(address _addr) internal pure { require(_addr != address(0), "invalid address"); } function _checkOwner(uint256 _tokenId, address _owner) internal view { require(ownerOf(_tokenId) == _owner, "not an owner"); } function _checkThatUserHasTokens(bool _has) internal pure { require(_has, "user has no tokens"); } function balanceOf(address _owner) public view returns (uint256) { _validateAddress(_owner); return ownedTokensCount[_owner]; } function ownerOf(uint256 _tokenId) public view returns (address) { address owner = tokenOwner[_tokenId]; _validateAddress(owner); return owner; } function exists(uint256 _tokenId) public view returns (bool) { address owner = tokenOwner[_tokenId]; return owner != address(0); } function _approve(address _from, address _to, uint256 _tokenId) internal { address owner = ownerOf(_tokenId); require(_to != owner, "can't be approved to owner"); _checkRights(_from == owner || isApprovedForAll(owner, _from)); if (getApproved(_tokenId) != address(0) || _to != address(0)) { tokenApprovals[_tokenId] = _to; emit Approval(owner, _to, _tokenId); } } function approve(address _to, uint256 _tokenId) public { _approve(msg.sender, _to, _tokenId); } function remoteApprove(address _to, uint256 _tokenId) external onlyController { _approve(tx.origin, _to, _tokenId); } function getApproved(uint256 _tokenId) public view returns (address) { require(exists(_tokenId), "token doesn't exist"); return tokenApprovals[_tokenId]; } function setApprovalForAll(address _to, bool _approved) public { require(_to != msg.sender, "wrong sender"); operatorApprovals[msg.sender][_to] = _approved; emit ApprovalForAll(msg.sender, _to, _approved); } function isApprovedForAll(address _owner, address _operator) public view returns (bool) { return operatorApprovals[_owner][_operator]; } function transferFrom(address _from, address _to, uint256 _tokenId) public { _checkRights(isApprovedOrOwner(msg.sender, _tokenId)); _validateAddress(_from); _validateAddress(_to); clearApproval(_from, _tokenId); removeTokenFrom(_from, _tokenId); addTokenTo(_to, _tokenId); emit Transfer(_from, _to, _tokenId); } function safeTransferFrom( address _from, address _to, uint256 _tokenId ) public { safeTransferFrom(_from, _to, _tokenId, ""); } function safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes _data ) public { transferFrom(_from, _to, _tokenId); require(checkAndCallSafeTransfer(_from, _to, _tokenId, _data), "can't make safe transfer"); } function isApprovedOrOwner(address _spender, uint256 _tokenId) public view returns (bool) { address owner = ownerOf(_tokenId); return _spender == owner || getApproved(_tokenId) == _spender || isApprovedForAll(owner, _spender); } function _mint(address _to, uint256 _tokenId) internal { _validateAddress(_to); addTokenTo(_to, _tokenId); emit Transfer(address(0), _to, _tokenId); } function _burn(address _owner, uint256 _tokenId) internal { clearApproval(_owner, _tokenId); removeTokenFrom(_owner, _tokenId); emit Transfer(_owner, address(0), _tokenId); } function clearApproval(address _owner, uint256 _tokenId) internal { _checkOwner(_tokenId, _owner); if (tokenApprovals[_tokenId] != address(0)) { tokenApprovals[_tokenId] = address(0); emit Approval(_owner, address(0), _tokenId); } } function addTokenTo(address _to, uint256 _tokenId) internal { require(tokenOwner[_tokenId] == address(0), "token already has an owner"); tokenOwner[_tokenId] = _to; ownedTokensCount[_to] = ownedTokensCount[_to].add(1); } function removeTokenFrom(address _from, uint256 _tokenId) internal { _checkOwner(_tokenId, _from); _checkThatUserHasTokens(ownedTokensCount[_from] > 0); ownedTokensCount[_from] = ownedTokensCount[_from].sub(1); tokenOwner[_tokenId] = address(0); } function _isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function checkAndCallSafeTransfer( address _from, address _to, uint256 _tokenId, bytes _data ) internal returns (bool) { if (!_isContract(_to)) { return true; } bytes4 retval = ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); return (retval == _ERC721_RECEIVED); } } contract ERC721Token is ERC721, ERC721BasicToken { bytes4 internal constant INTERFACE_SIGNATURE_ERC165 = 0x01ffc9a7; bytes4 internal constant INTERFACE_SIGNATURE_ERC721 = 0x80ac58cd; bytes4 internal constant INTERFACE_SIGNATURE_ERC721TokenReceiver = 0xf0b9e5ba; bytes4 internal constant INTERFACE_SIGNATURE_ERC721Metadata = 0x5b5e139f; bytes4 internal constant INTERFACE_SIGNATURE_ERC721Enumerable = 0x780e9d63; string internal name_; string internal symbol_; // Mapping from owner to list of owned token IDs mapping (address => uint256[]) internal ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) internal ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] internal allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) internal allTokensIndex; // Optional mapping for token URIs mapping(uint256 => string) internal tokenURIs; // The contract owner can change the base URL, in case it becomes necessary. It is needed for Metadata. string public url; constructor(string _name, string _symbol) public { name_ = _name; symbol_ = _symbol; } function name() public view returns (string) { return name_; } function symbol() public view returns (string) { return symbol_; } function _validateIndex(bool _isValid) internal pure { require(_isValid, "wrong index"); } function tokenOfOwnerByIndex(address _owner, uint256 _index) public view returns (uint256) { _validateIndex(_index < balanceOf(_owner)); return ownedTokens[_owner][_index]; } function tokensOfOwner(address _owner) external view returns (uint256[]) { return ownedTokens[_owner]; } function getAllTokens() external view returns (uint256[]) { return allTokens; } function totalSupply() public view returns (uint256) { return allTokens.length; } function tokenByIndex(uint256 _index) public view returns (uint256) { _validateIndex(_index < totalSupply()); return allTokens[_index]; } function addTokenTo(address _to, uint256 _tokenId) internal { super.addTokenTo(_to, _tokenId); uint256 length = ownedTokens[_to].length; ownedTokens[_to].push(_tokenId); ownedTokensIndex[_tokenId] = length; } function removeTokenFrom(address _from, uint256 _tokenId) internal { _checkThatUserHasTokens(ownedTokens[_from].length > 0); super.removeTokenFrom(_from, _tokenId); uint256 tokenIndex = ownedTokensIndex[_tokenId]; uint256 lastTokenIndex = ownedTokens[_from].length.sub(1); uint256 lastToken = ownedTokens[_from][lastTokenIndex]; ownedTokens[_from][tokenIndex] = lastToken; ownedTokens[_from][lastTokenIndex] = 0; ownedTokens[_from].length--; ownedTokensIndex[_tokenId] = 0; ownedTokensIndex[lastToken] = tokenIndex; } function _mint(address _to, uint256 _tokenId) internal { super._mint(_to, _tokenId); allTokensIndex[_tokenId] = allTokens.length; allTokens.push(_tokenId); } function _burn(address _owner, uint256 _tokenId) internal { require(allTokens.length > 0, "no tokens"); super._burn(_owner, _tokenId); uint256 tokenIndex = allTokensIndex[_tokenId]; uint256 lastTokenIndex = allTokens.length.sub(1); uint256 lastToken = allTokens[lastTokenIndex]; allTokens[tokenIndex] = lastToken; allTokens[lastTokenIndex] = 0; allTokens.length--; allTokensIndex[_tokenId] = 0; allTokensIndex[lastToken] = tokenIndex; } function supportsInterface(bytes4 _interfaceID) external pure returns (bool) { return ( _interfaceID == INTERFACE_SIGNATURE_ERC165 || _interfaceID == INTERFACE_SIGNATURE_ERC721 || _interfaceID == INTERFACE_SIGNATURE_ERC721TokenReceiver || _interfaceID == INTERFACE_SIGNATURE_ERC721Metadata || _interfaceID == INTERFACE_SIGNATURE_ERC721Enumerable ); } function tokenURI(uint256 _tokenId) public view returns (string) { require(exists(_tokenId), "token doesn't exist"); return string(abi.encodePacked(url, _uint2str(_tokenId))); } function setUrl(string _url) external onlyOwner { url = _url; } function _uint2str(uint _i) internal pure returns (string){ if (i == 0) return "0"; uint i = _i; uint j = _i; uint length; while (j != 0){ length++; j /= 10; } bytes memory bstr = new bytes(length); uint k = length - 1; while (i != 0){ bstr[k--] = byte(48 + i % 10); i /= 10; } return string(bstr); } } contract EggStorage is ERC721Token { struct Egg { uint256[2] parents; uint8 dragonType; // used for genesis only } Egg[] eggs; constructor(string _name, string _symbol) public ERC721Token(_name, _symbol) { eggs.length = 1; // to avoid some issues with 0 } function push(address _sender, uint256[2] _parents, uint8 _dragonType) public onlyController returns (uint256 id) { Egg memory _egg = Egg(_parents, _dragonType); id = eggs.push(_egg).sub(1); _mint(_sender, id); } function get(uint256 _id) external view returns (uint256[2], uint8) { return (eggs[_id].parents, eggs[_id].dragonType); } function remove(address _owner, uint256 _id) external onlyController { delete eggs[_id]; _burn(_owner, _id); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_url","type":"string"}],"name":"setUrl","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllTokens","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_spender","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"isApprovedOrOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"url","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setExternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setInternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sender","type":"address"},{"name":"_parents","type":"uint256[2]"},{"name":"_dragonType","type":"uint8"}],"name":"push","outputs":[{"name":"id","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"get","outputs":[{"name":"","type":"uint256[2]"},{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"remoteApprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_id","type":"uint256"}],"name":"remove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162003cc438038062003cc483398101806040528101908080518201929190602001805182019291905050508181336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600890805190602001906200009a929190620000d0565b508060099080519060200190620000b3929190620000d0565b5050506001601081620000c7919062000157565b5050506200020a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011357805160ff191683800117855562000144565b8280016001018555821562000144579182015b828111156200014357825182559160200191906001019062000126565b5b5090506200015391906200018c565b5090565b8154818355818111156200018757600302816003028360005260206000209182019101620001869190620001b4565b5b505050565b620001b191905b80821115620001ad57600081600090555060010162000193565b5090565b90565b620001f991905b80821115620001f55760008082016000620001d79190620001fc565b6002820160006101000a81549060ff021916905550600301620001bb565b5090565b90565b506000815560010160009055565b613aaa806200021a6000396000f300608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461019b57806306fdde03146101ff578063081812fc1461028f578063095ea7b3146102fc57806318160ddd1461034957806323b872dd14610374578063252498a2146103e15780632a5c792a1461041c5780632f745c591461048857806342842e0e146104e9578063430c2081146105565780634f558e79146105bb5780634f6ccce7146106005780635600f04f146106415780636352211e146106d157806365fc12531461073e57806369c0ad93146107a457806370a082311461080a5780638462151c146108615780638da5cb5b146108f95780639016dd4b146109505780639507d39a146109e357806395d89b4114610a59578063988b1d8614610ae9578063a22cb46514610b36578063abe7f1ab14610b85578063b75c4f8014610bd2578063b88d4fde14610c3e578063c87b56dd14610cf1578063e6458f6e14610d97578063e985e9c514610e03578063f2fde38b14610e7e575b600080fd5b3480156101a757600080fd5b506101e560048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610ec1565b604051808215151515815260200191505060405180910390f35b34801561020b57600080fd5b506102146110da565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610254578082015181840152602081019050610239565b50505050905090810190601f1680156102815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029b57600080fd5b506102ba6004803603810190808035906020019092919050505061117c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561030857600080fd5b50610347600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611236565b005b34801561035557600080fd5b5061035e611245565b6040518082815260200191505060405180910390f35b34801561038057600080fd5b506103df600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611252565b005b3480156103ed57600080fd5b5061041a6004803603810190808035906020019082018035906020019190919293919293905050506112f4565b005b34801561042857600080fd5b506104316113ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610474578082015181840152602081019050610459565b505050509050019250505060405180910390f35b34801561049457600080fd5b506104d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611426565b6040518082815260200191505060405180910390f35b3480156104f557600080fd5b50610554600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149a565b005b34801561056257600080fd5b506105a1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114bb565b604051808215151515815260200191505060405180910390f35b3480156105c757600080fd5b506105e660048036038101908080359060200190929190505050611550565b604051808215151515815260200191505060405180910390f35b34801561060c57600080fd5b5061062b600480360381019080803590602001909291905050506115c2565b6040518082815260200191505060405180910390f35b34801561064d57600080fd5b506106566115f7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069657808201518184015260208101905061067b565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106dd57600080fd5b506106fc60048036038101908080359060200190929190505050611695565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074a57600080fd5b506107a2600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506116e0565b005b3480156107b057600080fd5b50610808600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506117c7565b005b34801561081657600080fd5b5061084b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e3565b6040518082815260200191505060405180910390f35b34801561086d57600080fd5b506108a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611935565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108e55780820151818401526020810190506108ca565b505050509050019250505060405180910390f35b34801561090557600080fd5b5061090e6119cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561095c57600080fd5b506109cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908060400190600280602002604051908101604052809291908260026020028082843782019150505050509192919290803560ff1690602001909291905050506119f1565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b50610a0e60048036038101908080359060200190929190505050611b22565b6040518083600260200280838360005b83811015610a39578082015181840152602081019050610a1e565b505050509050018260ff1660ff1681526020019250505060405180910390f35b348015610a6557600080fd5b50610a6e611bc2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aae578082015181840152602081019050610a93565b50505050905090810190601f168015610adb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610af557600080fd5b50610b34600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c64565b005b348015610b4257600080fd5b50610b83600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611cf0565b005b348015610b9157600080fd5b50610bd0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e95565b005b348015610bde57600080fd5b50610be7611f64565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c2a578082015181840152602081019050610c0f565b505050509050019250505060405180910390f35b348015610c4a57600080fd5b50610cef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ff2565b005b348015610cfd57600080fd5b50610d1c60048036038101908080359060200190929190505050612083565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d5c578082015181840152602081019050610d41565b50505050905090810190601f168015610d895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610da357600080fd5b50610dac6121da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610def578082015181840152602081019050610dd4565b505050509050019250505060405180910390f35b348015610e0f57600080fd5b50610e64600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612268565b604051808215151515815260200191505060405180910390f35b348015610e8a57600080fd5b50610ebf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122fc565b005b60006301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f9257506380ac58cd7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ffd575063f0b9e5ba7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806110685750635b5e139f7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806110d3575063780e9d637c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111725780601f1061114757610100808354040283529160200191611172565b820191906000526020600020905b81548152906001019060200180831161115557829003601f168201915b5050505050905090565b600061118782611550565b15156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f746f6b656e20646f65736e27742065786973740000000000000000000000000081525060200191505060405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611241338383612487565b5050565b6000600c80549050905090565b61126461125f33836114bb565b6126aa565b61126d83612722565b61127682612722565b61128083826127ca565b61128a83826128f1565b6112948282612b57565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b8181600f91906113c992919061382a565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561141c57602002820191906000526020600020905b815481526020019060010190808311611408575b5050505050905090565b600061143b611434846118e3565b8310612c2e565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561148757fe5b9060005260206000200154905092915050565b6114b68383836020604051908101604052806000815250611ff2565b505050565b6000806114c783611695565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061153657508373ffffffffffffffffffffffffffffffffffffffff1661151e8461117c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061154757506115468185612268565b5b91505092915050565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b60006115d66115cf611245565b8310612c2e565b600c828154811015156115e557fe5b90600052602060002001549050919050565b600f8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561168d5780601f106116625761010080835404028352916020019161168d565b820191906000526020600020905b81548152906001019060200180831161167057829003601f168201915b505050505081565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506116d781612722565b80915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600390805190602001906117ba9291906138aa565b506117c481612ca6565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561188d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600090505b81518110156118c8576118bb82828151811015156118ac57fe5b90602001906020020151612722565b8080600101915050611892565b81600290805190602001906118de9291906138aa565b505050565b60006118ee82612722565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156119c057602002820191906000526020600020905b8154815260200190600101908083116119ac575b50505050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119fb613934565b611a0433612d54565b1515611a78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b60408051908101604052808581526020018460ff168152509050611b0e600160108390806001815401808255809150509060018203906000526020600020906003020160009091929091909150600082015181600001906002611adc929190613958565b5060208201518160020160006101000a81548160ff021916908360ff1602179055505050612daa90919063ffffffff16565b9150611b1a8583612dc3565b509392505050565b611b2a613998565b6000601083815481101515611b3b57fe5b9060005260206000209060030201600001601084815481101515611b5b57fe5b906000526020600020906003020160020160009054906101000a900460ff1681600280602002604051908101604052809291908260028015611bb2576020028201915b815481526020019060010190808311611b9e575b5050505050915091509150915091565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b5050505050905090565b611c6d33612d54565b1515611ce1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b611cec328383612487565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e672073656e646572000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611e9e33612d54565b1515611f12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b601081815481101515611f2157fe5b906000526020600020906003020160008082016000611f4091906139ba565b6002820160006101000a81549060ff02191690555050611f608282612e1a565b5050565b60606002805480602002602001604051908101604052809291908181526020018280548015611fe857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611f9e575b5050505050905090565b611ffd848484611252565b61200984848484612f7d565b151561207d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616e2774206d616b652073616665207472616e73666572000000000000000081525060200191505060405180910390fd5b50505050565b606061208e82611550565b1515612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f746f6b656e20646f65736e27742065786973740000000000000000000000000081525060200191505060405180910390fd5b600f61210d83613189565b604051602001808380546001816001161561010002031660029004801561216b5780601f1061214957610100808354040283529182019161216b565b820191906000526020600020905b815481529060010190602001808311612157575b505082805190602001908083835b60208310151561219e5780518252602082019150602081019050602083039250612179565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6060600380548060200260200160405190810160405280929190818152602001828054801561225e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612214575b5050505050905090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b6123c981612722565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061249282611695565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f63616e277420626520617070726f76656420746f206f776e657200000000000081525060200191505060405180910390fd5b6125808173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061257b575061257a8286612268565b5b6126aa565b600073ffffffffffffffffffffffffffffffffffffffff166125a18361117c565b73ffffffffffffffffffffffffffffffffffffffff161415806125f15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126a457826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b50505050565b80151561271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f2072696768747320746f206d616e6167650000000000000000000000000081525060200191505060405180910390fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156127c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b50565b6127d481836132e6565b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128ed5760006005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b5050565b60008060006129446000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011613395565b61294e858561340d565b600b60008581526020019081526020016000205492506129ba6001600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612daa90919063ffffffff16565b9150600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515612a0857fe5b9060005260206000200154905080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515612a6257fe5b90600052602060002001819055506000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515612abe57fe5b9060005260206000200181905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003612b1e91906139c8565b506000600b60008681526020019081526020016000208190555082600b6000838152602001908152602001600020819055505050505050565b6000612b63838361354f565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505090600182039060005260206000200160009091929091909150555080600b600084815260200190815260200160002081905550505050565b801515612ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720696e64657800000000000000000000000000000000000000000081525060200191505060405180910390fd5b50565b60008090505b8151811015612d5057612cd58282815181101515612cc657fe5b90602001906020020151612722565b60018060008484815181101515612ce857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612cac565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000828211151515612db857fe5b818303905092915050565b612dcd8282613712565b600c80549050600d600083815260200190815260200160002081905550600c8190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600080600080600c80549050111515612e9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f20746f6b656e73000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612ea58585613785565b600d6000858152602001908152602001600020549250612ed46001600c80549050612daa90919063ffffffff16565b9150600c82815481101515612ee557fe5b9060005260206000200154905080600c84815481101515612f0257fe5b90600052602060002001819055506000600c83815481101515612f2157fe5b9060005260206000200181905550600c805480919060019003612f4491906139c8565b506000600d60008681526020019081526020016000208190555082600d6000838152602001908152602001600020819055505050505050565b600080612f89856137f9565b1515612f985760019150613180565b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308d578082015181840152602081019050613072565b50505050905090810190601f1680156130ba5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156130dc57600080fd5b505af11580156130f0573d6000803e3d6000fd5b505050506040513d602081101561310657600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6060600080600060606000808514156131d9576040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525095506132dc565b8694508693505b600084141515613206578280600101935050600a848115156131fe57fe5b0493506131e0565b826040519080825280601f01601f1916602001820160405280156132395781602001602082028038833980820191505090505b5091506001830390505b6000851415156132d857600a8581151561325957fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110151561329457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a858115156132d057fe5b049450613243565b8195505b5050505050919050565b8073ffffffffffffffffffffffffffffffffffffffff1661330683611695565b73ffffffffffffffffffffffffffffffffffffffff16141515613391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f7420616e206f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050565b80151561340a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f7573657220686173206e6f20746f6b656e73000000000000000000000000000081525060200191505060405180910390fd5b50565b61341781836132e6565b6134626000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613395565b6134b56001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612daa90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f746f6b656e20616c72656164792068617320616e206f776e657200000000000081525060200191505060405180910390fd5b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136cb6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380c90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61371b82612722565b6137258282612b57565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61378f82826127ca565b61379982826128f1565b80600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b600080828401905083811015151561382057fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061386b57803560ff1916838001178555613899565b82800160010185558215613899579182015b8281111561389857823582559160200191906001019061387d565b5b5090506138a691906139f4565b5090565b828054828255906000526020600020908101928215613923579160200282015b828111156139225782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906138ca565b5b5090506139309190613a19565b5090565b606060405190810160405280613948613a5c565b8152602001600060ff1681525090565b8260028101928215613987579160200282015b8281111561398657825182559160200191906001019061396b565b5b50905061399491906139f4565b5090565b6040805190810160405280600290602082028038833980820191505090505090565b506000815560010160009055565b8154818355818111156139ef578183600052602060002091820191016139ee91906139f4565b5b505050565b613a1691905b80821115613a125760008160009055506001016139fa565b5090565b90565b613a5991905b80821115613a5557600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613a1f565b5090565b90565b60408051908101604052806002906020820280388339808201915050905050905600a165627a7a72305820dce1a3e9506dff495db30d49398daa6b0619df832fa635d0b0beff4b4cc628c2002900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f447261676f6e657265756d20456767000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034547470000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461019b57806306fdde03146101ff578063081812fc1461028f578063095ea7b3146102fc57806318160ddd1461034957806323b872dd14610374578063252498a2146103e15780632a5c792a1461041c5780632f745c591461048857806342842e0e146104e9578063430c2081146105565780634f558e79146105bb5780634f6ccce7146106005780635600f04f146106415780636352211e146106d157806365fc12531461073e57806369c0ad93146107a457806370a082311461080a5780638462151c146108615780638da5cb5b146108f95780639016dd4b146109505780639507d39a146109e357806395d89b4114610a59578063988b1d8614610ae9578063a22cb46514610b36578063abe7f1ab14610b85578063b75c4f8014610bd2578063b88d4fde14610c3e578063c87b56dd14610cf1578063e6458f6e14610d97578063e985e9c514610e03578063f2fde38b14610e7e575b600080fd5b3480156101a757600080fd5b506101e560048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610ec1565b604051808215151515815260200191505060405180910390f35b34801561020b57600080fd5b506102146110da565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610254578082015181840152602081019050610239565b50505050905090810190601f1680156102815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029b57600080fd5b506102ba6004803603810190808035906020019092919050505061117c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561030857600080fd5b50610347600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611236565b005b34801561035557600080fd5b5061035e611245565b6040518082815260200191505060405180910390f35b34801561038057600080fd5b506103df600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611252565b005b3480156103ed57600080fd5b5061041a6004803603810190808035906020019082018035906020019190919293919293905050506112f4565b005b34801561042857600080fd5b506104316113ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610474578082015181840152602081019050610459565b505050509050019250505060405180910390f35b34801561049457600080fd5b506104d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611426565b6040518082815260200191505060405180910390f35b3480156104f557600080fd5b50610554600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149a565b005b34801561056257600080fd5b506105a1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114bb565b604051808215151515815260200191505060405180910390f35b3480156105c757600080fd5b506105e660048036038101908080359060200190929190505050611550565b604051808215151515815260200191505060405180910390f35b34801561060c57600080fd5b5061062b600480360381019080803590602001909291905050506115c2565b6040518082815260200191505060405180910390f35b34801561064d57600080fd5b506106566115f7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069657808201518184015260208101905061067b565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106dd57600080fd5b506106fc60048036038101908080359060200190929190505050611695565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074a57600080fd5b506107a2600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506116e0565b005b3480156107b057600080fd5b50610808600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506117c7565b005b34801561081657600080fd5b5061084b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e3565b6040518082815260200191505060405180910390f35b34801561086d57600080fd5b506108a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611935565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108e55780820151818401526020810190506108ca565b505050509050019250505060405180910390f35b34801561090557600080fd5b5061090e6119cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561095c57600080fd5b506109cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908060400190600280602002604051908101604052809291908260026020028082843782019150505050509192919290803560ff1690602001909291905050506119f1565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b50610a0e60048036038101908080359060200190929190505050611b22565b6040518083600260200280838360005b83811015610a39578082015181840152602081019050610a1e565b505050509050018260ff1660ff1681526020019250505060405180910390f35b348015610a6557600080fd5b50610a6e611bc2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aae578082015181840152602081019050610a93565b50505050905090810190601f168015610adb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610af557600080fd5b50610b34600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c64565b005b348015610b4257600080fd5b50610b83600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611cf0565b005b348015610b9157600080fd5b50610bd0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e95565b005b348015610bde57600080fd5b50610be7611f64565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c2a578082015181840152602081019050610c0f565b505050509050019250505060405180910390f35b348015610c4a57600080fd5b50610cef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ff2565b005b348015610cfd57600080fd5b50610d1c60048036038101908080359060200190929190505050612083565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d5c578082015181840152602081019050610d41565b50505050905090810190601f168015610d895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610da357600080fd5b50610dac6121da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610def578082015181840152602081019050610dd4565b505050509050019250505060405180910390f35b348015610e0f57600080fd5b50610e64600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612268565b604051808215151515815260200191505060405180910390f35b348015610e8a57600080fd5b50610ebf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122fc565b005b60006301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f9257506380ac58cd7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ffd575063f0b9e5ba7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806110685750635b5e139f7c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806110d3575063780e9d637c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111725780601f1061114757610100808354040283529160200191611172565b820191906000526020600020905b81548152906001019060200180831161115557829003601f168201915b5050505050905090565b600061118782611550565b15156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f746f6b656e20646f65736e27742065786973740000000000000000000000000081525060200191505060405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611241338383612487565b5050565b6000600c80549050905090565b61126461125f33836114bb565b6126aa565b61126d83612722565b61127682612722565b61128083826127ca565b61128a83826128f1565b6112948282612b57565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b8181600f91906113c992919061382a565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561141c57602002820191906000526020600020905b815481526020019060010190808311611408575b5050505050905090565b600061143b611434846118e3565b8310612c2e565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561148757fe5b9060005260206000200154905092915050565b6114b68383836020604051908101604052806000815250611ff2565b505050565b6000806114c783611695565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061153657508373ffffffffffffffffffffffffffffffffffffffff1661151e8461117c565b73ffffffffffffffffffffffffffffffffffffffff16145b8061154757506115468185612268565b5b91505092915050565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b60006115d66115cf611245565b8310612c2e565b600c828154811015156115e557fe5b90600052602060002001549050919050565b600f8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561168d5780601f106116625761010080835404028352916020019161168d565b820191906000526020600020905b81548152906001019060200180831161167057829003601f168201915b505050505081565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506116d781612722565b80915050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600390805190602001906117ba9291906138aa565b506117c481612ca6565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561188d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600090505b81518110156118c8576118bb82828151811015156118ac57fe5b90602001906020020151612722565b8080600101915050611892565b81600290805190602001906118de9291906138aa565b505050565b60006118ee82612722565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156119c057602002820191906000526020600020905b8154815260200190600101908083116119ac575b50505050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119fb613934565b611a0433612d54565b1515611a78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b60408051908101604052808581526020018460ff168152509050611b0e600160108390806001815401808255809150509060018203906000526020600020906003020160009091929091909150600082015181600001906002611adc929190613958565b5060208201518160020160006101000a81548160ff021916908360ff1602179055505050612daa90919063ffffffff16565b9150611b1a8583612dc3565b509392505050565b611b2a613998565b6000601083815481101515611b3b57fe5b9060005260206000209060030201600001601084815481101515611b5b57fe5b906000526020600020906003020160020160009054906101000a900460ff1681600280602002604051908101604052809291908260028015611bb2576020028201915b815481526020019060010190808311611b9e575b5050505050915091509150915091565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b5050505050905090565b611c6d33612d54565b1515611ce1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b611cec328383612487565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e672073656e646572000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b611e9e33612d54565b1515611f12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b601081815481101515611f2157fe5b906000526020600020906003020160008082016000611f4091906139ba565b6002820160006101000a81549060ff02191690555050611f608282612e1a565b5050565b60606002805480602002602001604051908101604052809291908181526020018280548015611fe857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611f9e575b5050505050905090565b611ffd848484611252565b61200984848484612f7d565b151561207d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616e2774206d616b652073616665207472616e73666572000000000000000081525060200191505060405180910390fd5b50505050565b606061208e82611550565b1515612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f746f6b656e20646f65736e27742065786973740000000000000000000000000081525060200191505060405180910390fd5b600f61210d83613189565b604051602001808380546001816001161561010002031660029004801561216b5780601f1061214957610100808354040283529182019161216b565b820191906000526020600020905b815481529060010190602001808311612157575b505082805190602001908083835b60208310151561219e5780518252602082019150602081019050602083039250612179565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6060600380548060200260200160405190810160405280929190818152602001828054801561225e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612214575b5050505050905090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b6123c981612722565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061249282611695565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f63616e277420626520617070726f76656420746f206f776e657200000000000081525060200191505060405180910390fd5b6125808173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061257b575061257a8286612268565b5b6126aa565b600073ffffffffffffffffffffffffffffffffffffffff166125a18361117c565b73ffffffffffffffffffffffffffffffffffffffff161415806125f15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126a457826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b50505050565b80151561271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6e6f2072696768747320746f206d616e6167650000000000000000000000000081525060200191505060405180910390fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156127c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b50565b6127d481836132e6565b600073ffffffffffffffffffffffffffffffffffffffff166005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128ed5760006005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b5050565b60008060006129446000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011613395565b61294e858561340d565b600b60008581526020019081526020016000205492506129ba6001600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612daa90919063ffffffff16565b9150600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515612a0857fe5b9060005260206000200154905080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481101515612a6257fe5b90600052602060002001819055506000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481101515612abe57fe5b9060005260206000200181905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003612b1e91906139c8565b506000600b60008681526020019081526020016000208190555082600b6000838152602001908152602001600020819055505050505050565b6000612b63838361354f565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505090600182039060005260206000200160009091929091909150555080600b600084815260200190815260200160002081905550505050565b801515612ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720696e64657800000000000000000000000000000000000000000081525060200191505060405180910390fd5b50565b60008090505b8151811015612d5057612cd58282815181101515612cc657fe5b90602001906020020151612722565b60018060008484815181101515612ce857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612cac565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000828211151515612db857fe5b818303905092915050565b612dcd8282613712565b600c80549050600d600083815260200190815260200160002081905550600c8190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600080600080600c80549050111515612e9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f20746f6b656e73000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612ea58585613785565b600d6000858152602001908152602001600020549250612ed46001600c80549050612daa90919063ffffffff16565b9150600c82815481101515612ee557fe5b9060005260206000200154905080600c84815481101515612f0257fe5b90600052602060002001819055506000600c83815481101515612f2157fe5b9060005260206000200181905550600c805480919060019003612f4491906139c8565b506000600d60008681526020019081526020016000208190555082600d6000838152602001908152602001600020819055505050505050565b600080612f89856137f9565b1515612f985760019150613180565b8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308d578082015181840152602081019050613072565b50505050905090810190601f1680156130ba5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156130dc57600080fd5b505af11580156130f0573d6000803e3d6000fd5b505050506040513d602081101561310657600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6060600080600060606000808514156131d9576040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525095506132dc565b8694508693505b600084141515613206578280600101935050600a848115156131fe57fe5b0493506131e0565b826040519080825280601f01601f1916602001820160405280156132395781602001602082028038833980820191505090505b5091506001830390505b6000851415156132d857600a8581151561325957fe5b066030017f01000000000000000000000000000000000000000000000000000000000000000282828060019003935081518110151561329457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a858115156132d057fe5b049450613243565b8195505b5050505050919050565b8073ffffffffffffffffffffffffffffffffffffffff1661330683611695565b73ffffffffffffffffffffffffffffffffffffffff16141515613391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f7420616e206f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050565b80151561340a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f7573657220686173206e6f20746f6b656e73000000000000000000000000000081525060200191505060405180910390fd5b50565b61341781836132e6565b6134626000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613395565b6134b56001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612daa90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f746f6b656e20616c72656164792068617320616e206f776e657200000000000081525060200191505060405180910390fd5b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136cb6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380c90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61371b82612722565b6137258282612b57565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61378f82826127ca565b61379982826128f1565b80600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b600080828401905083811015151561382057fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061386b57803560ff1916838001178555613899565b82800160010185558215613899579182015b8281111561389857823582559160200191906001019061387d565b5b5090506138a691906139f4565b5090565b828054828255906000526020600020908101928215613923579160200282015b828111156139225782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906138ca565b5b5090506139309190613a19565b5090565b606060405190810160405280613948613a5c565b8152602001600060ff1681525090565b8260028101928215613987579160200282015b8281111561398657825182559160200191906001019061396b565b5b50905061399491906139f4565b5090565b6040805190810160405280600290602082028038833980820191505090505090565b506000815560010160009055565b8154818355818111156139ef578183600052602060002091820191016139ee91906139f4565b5b505050565b613a1691905b80821115613a125760008160009055506001016139fa565b5090565b90565b613a5991905b80821115613a5557600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613a1f565b5090565b90565b60408051908101604052806002906020820280388339808201915050905050905600a165627a7a72305820dce1a3e9506dff495db30d49398daa6b0619df832fa635d0b0beff4b4cc628c20029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f447261676f6e657265756d20456767000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034547470000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Dragonereum Egg
Arg [1] : _symbol (string): EGG
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [3] : 447261676f6e657265756d204567670000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 4547470000000000000000000000000000000000000000000000000000000000
Swarm Source
bzzr://dce1a3e9506dff495db30d49398daa6b0619df832fa635d0b0beff4b4cc628c2
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.