ETH Price: $3,393.61 (+1.62%)

Token

Dragonereum Egg (EGG)
 

Overview

Max Total Supply

7,818 EGG

Holders

525

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
monashitstain.eth
Balance
2 EGG
0x12d964f702db7b301765c0066a04ec4fbdb59e3a
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Dragonereum is a cryptocollectible game with PvP battles, advanced breeding, in-game trading, rewards and achievements.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

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

Contract ABI

[{"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"}]

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.