ETH Price: $3,165.84 (-3.00%)

Token

Game Tester (GTCOIN)
 

Overview

Max Total Supply

100,000,000 GTCOIN

Holders

2,805

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.181818181818181818 GTCOIN

Value
$0.00
0xE98349BCDf34d4C8B539a5917704B2CCcB8A0dC8
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
GameTesterToken

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-02
*/

pragma solidity ^0.4.20;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
**/
library SafeMathLib{
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  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;
  }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
**/
contract Ownable {
  address public owner;

  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/**
 * @dev Abstract contract for approveAndCall.
**/
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}

/**
 * @title Game Tester Token
 * @dev ERC20 contract utilizing ERC865-ish structure (based on the CoinvestTokenV2 contract)
 * @dev to allow users to pay Ethereum fees in tokens.
**/
contract GameTesterToken is Ownable {
    using SafeMathLib for uint256;
    
    string public constant symbol = "GTCOIN";
    string public constant name = "Game Tester";
    
    uint8 public constant decimals = 18;
    uint256 private _totalSupply = 100000000 * (10 ** 18);
    
    // Function sigs to be used within contract for signature recovery.
    bytes4 internal constant transferSig = 0xa9059cbb;
    bytes4 internal constant approveSig = 0x095ea7b3;
    bytes4 internal constant increaseApprovalSig = 0xd73dd623;
    bytes4 internal constant decreaseApprovalSig = 0x66188463;
    bytes4 internal constant approveAndCallSig = 0xcae9ca51;
    bytes4 internal constant revokeSignatureSig = 0xe40d89e5;

    // Balances for each account
    mapping(address => uint256) balances;

    // Owner of account approves the transfer of an amount to another account
    mapping(address => mapping (address => uint256)) allowed;
    
    // Keeps track of the last nonce sent from user. Used for delegated functions.
    mapping (address => uint256) nonces;
    
    // Mapping of past used hashes: true if already used.
    mapping (address => mapping (bytes => bool)) invalidSignatures;

    // Mapping of finalized ERC865 standard sigs => our function sigs for future-proofing
    mapping (bytes4 => bytes4) public standardSigs;

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed from, address indexed spender, uint tokens);
    event SignatureRedeemed(bytes _sig, address indexed from);
    
    /**
     * @dev Set owner and beginning balance.
    **/
    constructor()
      public
    {
        balances[msg.sender] = _totalSupply;
    }
    
    /**
     * @dev This code allows us to redirect pre-signed calls with different function selectors to our own.
    **/
    function () 
      public
    {
        bytes memory calldata = msg.data;
        bytes4 new_selector = standardSigs[msg.sig];
        require(new_selector != 0);
        
        assembly {
           mstore(add(0x20, calldata), new_selector)
        }
        
        require(address(this).delegatecall(calldata));
        
        assembly {
            if iszero(eq(returndatasize, 0x20)) { revert(0, 0) }
            returndatacopy(0, 0, returndatasize)
            return(0, returndatasize)
        }
    }

/** ******************************** ERC20 ********************************* **/

    /**
     * @dev Transfers coins from one address to another.
     * @param _to The recipient of the transfer amount.
     * @param _amount The amount of tokens to transfer.
    **/
    function transfer(address _to, uint256 _amount) 
      public
    returns (bool success)
    {
        require(_transfer(msg.sender, _to, _amount));
        return true;
    }
    
    /**
     * @dev An allowed address can transfer tokens from another's address.
     * @param _from The owner of the tokens to be transferred.
     * @param _to The address to which the tokens will be transferred.
     * @param _amount The amount of tokens to be transferred.
    **/
    function transferFrom(address _from, address _to, uint _amount)
      public
    returns (bool success)
    {
        require(balances[_from] >= _amount && allowed[_from][msg.sender] >= _amount);

        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount);
        require(_transfer(_from, _to, _amount));
        return true;
    }
    
    /**
     * @dev Approves a wallet to transfer tokens on one's behalf.
     * @param _spender The wallet approved to spend tokens.
     * @param _amount The amount of tokens approved to spend.
    **/
    function approve(address _spender, uint256 _amount) 
      public
    returns (bool success)
    {
        require(_approve(msg.sender, _spender, _amount));
        return true;
    }
    
    /**
     * @dev Increases the allowed amount for spender from msg.sender.
     * @param _spender The address to increase allowed amount for.
     * @param _amount The amount of tokens to increase allowed amount by.
    **/
    function increaseApproval(address _spender, uint256 _amount) 
      public
    returns (bool success)
    {
        require(_increaseApproval(msg.sender, _spender, _amount));
        return true;
    }
    
    /**
     * @dev Decreases the allowed amount for spender from msg.sender.
     * @param _spender The address to decrease allowed amount for.
     * @param _amount The amount of tokens to decrease allowed amount by.
    **/
    function decreaseApproval(address _spender, uint256 _amount) 
      public
    returns (bool success)
    {
        require(_decreaseApproval(msg.sender, _spender, _amount));
        return true;
    }
    
    /**
     * @dev Used to approve an address and call a function on it in the same transaction.
     * @dev _spender The address to be approved to spend GTCOIN.
     * @dev _amount The amount of GTCOIN to be approved to spend.
     * @dev _data The data to send to the called contract.
    **/
    function approveAndCall(address _spender, uint256 _amount, bytes _data) 
      public
    returns (bool success) 
    {
        require(_approve(msg.sender, _spender, _amount));
        ApproveAndCallFallBack(_spender).receiveApproval(msg.sender, _amount, address(this), _data);
        return true;
    }

/** ****************************** Internal ******************************** **/
    
    /**
     * @dev Internal transfer for all functions that transfer.
     * @param _from The address that is transferring coins.
     * @param _to The receiving address of the coins.
     * @param _amount The amount of coins being transferred.
    **/
    function _transfer(address _from, address _to, uint256 _amount)
      internal
    returns (bool success)
    {
        require (_to != address(0));
        require(balances[_from] >= _amount);
        
        balances[_from] = balances[_from].sub(_amount);
        balances[_to] = balances[_to].add(_amount);
        
        emit Transfer(_from, _to, _amount);
        return true;
    }
    
    /**
     * @dev Internal approve for all functions that require an approve.
     * @param _owner The owner who is allowing spender to use their balance.
     * @param _spender The wallet approved to spend tokens.
     * @param _amount The amount of tokens approved to spend.
    **/
    function _approve(address _owner, address _spender, uint256 _amount) 
      internal
    returns (bool success)
    {
        allowed[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
        return true;
    }
    
    /**
     * @dev Increases the allowed by "_amount" for "_spender" from "owner"
     * @param _owner The address that tokens may be transferred from.
     * @param _spender The address that may transfer these tokens.
     * @param _amount The amount of tokens to transfer.
    **/
    function _increaseApproval(address _owner, address _spender, uint256 _amount)
      internal
    returns (bool success)
    {
        allowed[_owner][_spender] = allowed[_owner][_spender].add(_amount);
        emit Approval(_owner, _spender, allowed[_owner][_spender]);
        return true;
    }
    
    /**
     * @dev Decreases the allowed by "_amount" for "_spender" from "_owner"
     * @param _owner The owner of the tokens to decrease allowed for.
     * @param _spender The spender whose allowed will decrease.
     * @param _amount The amount of tokens to decrease allowed by.
    **/
    function _decreaseApproval(address _owner, address _spender, uint256 _amount)
      internal
    returns (bool success)
    {
        if (allowed[_owner][_spender] <= _amount) allowed[_owner][_spender] = 0;
        else allowed[_owner][_spender] = allowed[_owner][_spender].sub(_amount);
        
        emit Approval(_owner, _spender, allowed[_owner][_spender]);
        return true;
    }
    
/** ************************ Delegated Functions *************************** **/

    /**
     * @dev Called by delegate with a signed hash of the transaction data to allow a user
     * @dev to transfer tokens without paying gas in Ether (they pay in GTCOIN instead).
     * @param _signature Signed hash of data for this transfer.
     * @param _to The address to transfer GTCOIN to.
     * @param _value The amount of GTCOIN to transfer.
     * @param _gasPrice Price (IN GTCOIN) that will be paid per unit of gas by user to "delegate".
     * @param _nonce Nonce of the user's new transaction (to make signatures unique, not to be confused with address transaction nonce).
    **/
    function transferPreSigned(
        bytes _signature,
        address _to, 
        uint256 _value, 
        uint256 _gasPrice, 
        uint256 _nonce) 
      public
      validPayload(292)
    returns (bool) 
    {
        // Log starting gas left of transaction for later gas price calculations.
        uint256 gas = gasleft();
        
        // Recover signer address from signature; ensure address is valid.
        address from = recoverPreSigned(_signature, transferSig, _to, _value, "", _gasPrice, _nonce);
        require(from != address(0));
        
        // Require the hash has not been used, declare it used, increment nonce.
        require(!invalidSignatures[from][_signature]);
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        // Internal transfer.
        require(_transfer(from, _to, _value));

        // If the delegate is charging, pay them for gas in GTCOIN.
        if (_gasPrice > 0) {
            
            // 35000 because of base fee of 21000 and ~14000 for the fee transfer.
            gas = 35000 + gas.sub(gasleft());
            require(_transfer(from, msg.sender, _gasPrice.mul(gas)));
        }
        
        emit SignatureRedeemed(_signature, from);
        return true;
    }
    
    /**
     * @dev Called by a delegate with signed hash to approve a transaction for user.
     * @dev All variables equivalent to transfer except _to:
     * @param _to The address that will be approved to transfer GTCOIN from user's wallet.
    **/
    function approvePreSigned(
        bytes _signature,
        address _to, 
        uint256 _value, 
        uint256 _gasPrice, 
        uint256 _nonce) 
      public
      validPayload(292)
    returns (bool) 
    {
        uint256 gas = gasleft();
        address from = recoverPreSigned(_signature, approveSig, _to, _value, "", _gasPrice, _nonce);
        require(from != address(0));
        require(!invalidSignatures[from][_signature]);
        
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        require(_approve(from, _to, _value));

        if (_gasPrice > 0) {
            gas = 35000 + gas.sub(gasleft());
            require(_transfer(from, msg.sender, _gasPrice.mul(gas)));
        }
        
        emit SignatureRedeemed(_signature, from);
        return true;
    }
    
    /**
     * @dev Used to increase the amount allowed for "_to" to spend from "from"
     * @dev A bare approve allows potentially nasty race conditions when using a delegate.
    **/
    function increaseApprovalPreSigned(
        bytes _signature,
        address _to, 
        uint256 _value, 
        uint256 _gasPrice, 
        uint256 _nonce)
      public
      validPayload(292)
    returns (bool) 
    {
        uint256 gas = gasleft();
        address from = recoverPreSigned(_signature, increaseApprovalSig, _to, _value, "", _gasPrice, _nonce);
        require(from != address(0));
        require(!invalidSignatures[from][_signature]);
        
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        require(_increaseApproval(from, _to, _value));

        if (_gasPrice > 0) {
            gas = 35000 + gas.sub(gasleft());
            require(_transfer(from, msg.sender, _gasPrice.mul(gas)));
        }
        
        emit SignatureRedeemed(_signature, from);
        return true;
    }
    
    /**
     * @dev Added for the same reason as increaseApproval. Decreases to 0 if "_value" is greater than allowed.
    **/
    function decreaseApprovalPreSigned(
        bytes _signature,
        address _to, 
        uint256 _value, 
        uint256 _gasPrice, 
        uint256 _nonce) 
      public
      validPayload(292)
    returns (bool) 
    {
        uint256 gas = gasleft();
        address from = recoverPreSigned(_signature, decreaseApprovalSig, _to, _value, "", _gasPrice, _nonce);
        require(from != address(0));
        require(!invalidSignatures[from][_signature]);
        
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        require(_decreaseApproval(from, _to, _value));

        if (_gasPrice > 0) {
            gas = 35000 + gas.sub(gasleft());
            require(_transfer(from, msg.sender, _gasPrice.mul(gas)));
        }
        
        emit SignatureRedeemed(_signature, from);
        return true;
    }
    
    /**
     * @dev approveAndCallPreSigned allows a user to approve a contract and call a function on it
     * @dev in the same transaction. As with the other presigneds, a delegate calls this with signed data from user.
     * @dev This function is the big reason we're using gas price and calculating gas use.
     * @dev Using this with the contract can result in varying gas costs.
     * @param _extraData The data to send to the contract.
    **/
    function approveAndCallPreSigned(
        bytes _signature,
        address _to, 
        uint256 _value,
        bytes _extraData,
        uint256 _gasPrice, 
        uint256 _nonce) 
      public
      validPayload(356)
    returns (bool) 
    {
        uint256 gas = gasleft();
        address from = recoverPreSigned(_signature, approveAndCallSig, _to, _value, _extraData, _gasPrice, _nonce);
        require(from != address(0));
        require(!invalidSignatures[from][_signature]);
        
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        require(_approve(from, _to, _value));
        ApproveAndCallFallBack(_to).receiveApproval(from, _value, address(this), _extraData);

        if (_gasPrice > 0) {
            gas = 35000 + gas.sub(gasleft());
            require(_transfer(from, msg.sender, _gasPrice.mul(gas)));
        }
        
        emit SignatureRedeemed(_signature, from);
        return true;
    }

/** *************************** Revoke PreSigned ************************** **/
    
    /**
     * @dev Revoke signature without going through a delegate.
     * @param _sigToRevoke The signature that you no longer want to be used.
    **/
    function revokeSignature(bytes _sigToRevoke)
      public
    returns (bool)
    {
        invalidSignatures[msg.sender][_sigToRevoke] = true;
        
        emit SignatureRedeemed(_sigToRevoke, msg.sender);
        return true;
    }
    
    /**
     * @dev Revoke signature through a delegate.
     * @param _signature The signature allowing this revocation.
     * @param _sigToRevoke The signature that you would like revoked.
     * @param _gasPrice The amount of token wei to be paid for each uint of gas.
    **/
    function revokeSignaturePreSigned(
        bytes _signature,
        bytes _sigToRevoke,
        uint256 _gasPrice)
      public
      validPayload(356)
    returns (bool)
    {
        uint256 gas = gasleft();
        address from = recoverRevokeHash(_signature, _sigToRevoke, _gasPrice);
        require(!invalidSignatures[from][_signature]);
        invalidSignatures[from][_signature] = true;
        
        invalidSignatures[from][_sigToRevoke] = true;
        
        if (_gasPrice > 0) {
            gas = 35000 + gas.sub(gasleft());
            require(_transfer(from, msg.sender, _gasPrice.mul(gas)));
        }
        
        emit SignatureRedeemed(_signature, from);
        return true;
    }
    
    /**
     * @dev Get hash for a revocation.
     * @param _sigToRevoke The signature to be revoked.
     * @param _gasPrice The amount to be paid to delegate for sending this tx.
    **/
    function getRevokeHash(bytes _sigToRevoke, uint256 _gasPrice)
      public
      pure
    returns (bytes32 txHash)
    {
        return keccak256(revokeSignatureSig, _sigToRevoke, _gasPrice);
    }

    /**
     * @dev Recover the address from a revocation signature.
     * @param _sigToRevoke The signature to be revoked.
     * @param _signature The signature allowing this revocation.
     * @param _gasPrice The amount of token wei to be paid for each unit of gas.
    **/
    function recoverRevokeHash(bytes _signature, bytes _sigToRevoke, uint256 _gasPrice)
      public
      pure
    returns (address from)
    {
        return ecrecoverFromSig(getSignHash(getRevokeHash(_sigToRevoke, _gasPrice)), _signature);
    }
    
/** ************************** PreSigned Constants ************************ **/

    /**
     * @dev Used in frontend and contract to get hashed data of any given pre-signed transaction.
     * @param _to The address to transfer GTCOIN to.
     * @param _value The amount of GTCOIN to be transferred.
     * @param _extraData Extra data of tx if needed. Transfers and approves will leave this null.
     * @param _function Function signature of the pre-signed function being used.
     * @param _gasPrice The agreed-upon amount of GTCOIN to be paid per unit of gas.
     * @param _nonce The user's nonce of the new transaction.
    **/
    function getPreSignedHash(
        bytes4 _function,
        address _to, 
        uint256 _value,
        bytes _extraData,
        uint256 _gasPrice,
        uint256 _nonce)
      public
      view
    returns (bytes32 txHash) 
    {
        return keccak256(address(this), _function, _to, _value, _extraData, _gasPrice, _nonce);
    }
    
    /**
     * @dev Recover an address from a signed pre-signed hash.
     * @param _sig The signed hash.
     * @param _function The function signature for function being called.
     * @param _to The address to transfer/approve/transferFrom/etc. tokens to.
     * @param _value The amont of tokens to transfer/approve/etc.
     * @param _extraData The extra data included in the transaction, if any.
     * @param _gasPrice The amount of token wei to be paid to the delegate for each unit of gas.
     * @param _nonce The user's nonce for this transaction.
    **/
    function recoverPreSigned(
        bytes _sig,
        bytes4 _function,
        address _to,
        uint256 _value,
        bytes _extraData,
        uint256 _gasPrice,
        uint256 _nonce) 
      public
      view
    returns (address recovered)
    {
        return ecrecoverFromSig(getSignHash(getPreSignedHash(_function, _to, _value, _extraData, _gasPrice, _nonce)), _sig);
    }
    
    /**
     * @dev Add signature prefix to hash for recovery à la ERC191.
     * @param _hash The hashed transaction to add signature prefix to.
    **/
    function getSignHash(bytes32 _hash)
      public
      pure
    returns (bytes32 signHash)
    {
        return keccak256("\x19Ethereum Signed Message:\n32", _hash);
    }

    /**
     * @param hash The hash of signed data for the transaction.
     * @param sig Contains r, s, and v for recovery of address from the hash.
    **/
    function ecrecoverFromSig(bytes32 hash, bytes sig) 
      public 
      pure 
    returns (address recoveredAddress) 
    {
        bytes32 r;
        bytes32 s;
        uint8 v;
        if (sig.length != 65) return address(0);
        assembly {
            r := mload(add(sig, 32))
            s := mload(add(sig, 64))
            // Here we are loading the last 32 bytes. We exploit the fact that 'mload' will pad with zeroes if we overread.
            // There is no 'mload8' to do this, but that would be nicer.
            v := byte(0, mload(add(sig, 96)))
        }
        // Albeit non-transactional signatures are not specified by the YP, one would expect it to match the YP range of [27, 28]
        // geth uses [0, 1] and some clients have followed. This might change, see https://github.com/ethereum/go-ethereum/issues/2053
        if (v < 27) {
          v += 27;
        }
        if (v != 27 && v != 28) return address(0);
        return ecrecover(hash, v, r, s);
    }

    /**
     * @dev Frontend queries to find the next nonce of the user so they can find the new nonce to send.
     * @param _owner Address that will be sending the GTCOIN.
    **/
    function getNonce(address _owner)
      external
      view
    returns (uint256 nonce)
    {
        return nonces[_owner];
    }
    
/** ****************************** Constants ******************************* **/
    
    /**
     * @dev Return total supply of token.
    **/
    function totalSupply() 
      external
      view 
     returns (uint256)
    {
        return _totalSupply;
    }

    /**
     * @dev Return balance of a certain address.
     * @param _owner The address whose balance we want to check.
    **/
    function balanceOf(address _owner)
      external
      view 
    returns (uint256) 
    {
        return balances[_owner];
    }
    
    /**
     * @dev Allowed amount for a user to spend of another's tokens.
     * @param _owner The owner of the tokens approved to spend.
     * @param _spender The address of the user allowed to spend the tokens.
    **/
    function allowance(address _owner, address _spender) 
      external
      view 
    returns (uint256) 
    {
        return allowed[_owner][_spender];
    }
    
/** ****************************** onlyOwner ******************************* **/
    
    /**
     * @dev Allow the owner to take ERC20 tokens off of this contract if they are accidentally sent.
    **/
    function token_escape(address _tokenContract)
      external
      onlyOwner
    {
        GameTesterToken lostToken = GameTesterToken(_tokenContract);
        
        uint256 stuckTokens = lostToken.balanceOf(address(this));
        lostToken.transfer(owner, stuckTokens);
    }
    
    /**
     * @dev Owner may set the standard sig to redirect to one of our pre-signed functions.
     * @dev Added in order to prepare for the ERC865 standard function names to be different from ours.
     * @param _standardSig The function signature of the finalized standard function.
     * @param _ourSig The function signature of our implemented function.
    **/
    function updateStandard(bytes4 _standardSig, bytes4 _ourSig)
      external
      onlyOwner
    returns (bool success)
    {
        // These 6 are the signatures of our pre-signed functions.
        require(_ourSig == 0x1296830d || _ourSig == 0x617b390b || _ourSig == 0xadb8249e ||
            _ourSig == 0x8be52783 || _ourSig == 0xc8d4b389 || _ourSig == 0xe391a7c4);
        standardSigs[_standardSig] = _ourSig;
        return true;
    }
    
/** ***************************** Modifiers ******************************** **/
    
    modifier validPayload(uint _size) {
        uint payload_size;
        assembly {
            payload_size := calldatasize
        }
        require(payload_size >= _size);
        _;
    }
    
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_sig","type":"bytes"},{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"recoverPreSigned","outputs":[{"name":"recovered","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"transferPreSigned","outputs":[{"name":"","type":"bool"}],"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":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getNonce","outputs":[{"name":"nonce","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"approvePreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"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":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"decreaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"standardSigs","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"getPreSignedHash","outputs":[{"name":"txHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"increaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"getSignHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_standardSig","type":"bytes4"},{"name":"_ourSig","type":"bytes4"}],"name":"updateStandard","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"approveAndCallPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sigToRevoke","type":"bytes"}],"name":"revokeSignature","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"token_escape","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"sig","type":"bytes"}],"name":"ecrecoverFromSig","outputs":[{"name":"recoveredAddress","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_sigToRevoke","type":"bytes"},{"name":"_gasPrice","type":"uint256"}],"name":"getRevokeHash","outputs":[{"name":"txHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"},{"name":"_gasPrice","type":"uint256"}],"name":"recoverRevokeHash","outputs":[{"name":"from","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"},{"name":"_gasPrice","type":"uint256"}],"name":"revokeSignaturePreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sig","type":"bytes"},{"indexed":true,"name":"from","type":"address"}],"name":"SignatureRedeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526a52b7d2dcc80cd2e400000060015534801561001f57600080fd5b5060008054600160a060020a03191633908117825560015490825260026020526040909120556127ee806100546000396000f3006080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806309ea63e31461033d5780631296830d1461041e57806318160ddd1461049157806323b872dd146104b85780632d0335ab146104e2578063313ce56714610503578063617b390b1461052e57806366188463146105a157806370a08231146105c55780638be52783146105e65780638da5cb5b1461065957806395d89b411461066e5780639871894814610683578063a9059cbb146106c2578063a9a0b495146106e6578063adb8249e14610768578063b15aa5b7146107db578063c22f8250146107f3578063c8d4b3891461081b578063cae9ca51146108d1578063ccbfc6ed1461093a578063d035e45f14610993578063d4acaf6c146109b6578063d4d64f2b14610a14578063d73dd62314610a6f578063dd62ed3e14610a93578063e269f92914610aba578063e391a7c414610b53578063f2fde38b14610bec575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610c0d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610c44565b604080519115158252519081900360200190f35b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a919950975060809094019550919350918201918190840183828082843750949750508435955050506020909201359150610c659050565b60408051600160a060020a039092168252519081900360200190f35b34801561042a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135610c92565b34801561049d57600080fd5b506104a6610f2b565b60408051918252519081900360200190f35b3480156104c457600080fd5b50610329600160a060020a0360043581169060243516604435610f31565b3480156104ee57600080fd5b506104a6600160a060020a0360043516610fff565b34801561050f57600080fd5b5061051861101a565b6040805160ff9092168252519081900360200190f35b34801561053a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a031694505050602082013591604081013591506060013561101f565b3480156105ad57600080fd5b50610329600160a060020a03600435166024356111c7565b3480156105d157600080fd5b506104a6600160a060020a03600435166111d4565b3480156105f257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a03169450505060208201359160408101359150606001356111ef565b34801561066557600080fd5b50610402611397565b34801561067a57600080fd5b506102906113a6565b34801561068f57600080fd5b506106a5600160e060020a0319600435166113dd565b60408051600160e060020a03199092168252519081900360200190f35b3480156106ce57600080fd5b50610329600160a060020a03600435166024356113f5565b3480156106f257600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526104a694600160e060020a031981351694600160a060020a0360248035919091169560443595369560849493019181908401838280828437509497505084359550505060209092013591506114029050565b34801561077457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135611514565b3480156107e757600080fd5b506104a66004356116bc565b3480156107ff57600080fd5b50610329600160e060020a0319600435811690602435166116fa565b34801561082757600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505084359550505060209092013591506118859050565b3480156108dd57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611c1f9650505050505050565b34801561094657600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611d3b9650505050505050565b34801561099f57600080fd5b506109b4600160a060020a0360043516611e47565b005b3480156109c257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610402958335953695604494919390910191908190840183828082843750949750611f969650505050505050565b348015610a2057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526104a6943694929360249392840191908190840183828082843750949750509335945061206b9350505050565b348015610a7b57600080fd5b50610329600160a060020a03600435166024356120fe565b348015610a9f57600080fd5b506104a6600160a060020a036004358116906024351661210b565b348015610ac657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121369350505050565b348015610b5f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121569350505050565b348015610bf857600080fd5b506109b4600160a060020a0360043516612407565b60408051808201909152600b81527f47616d6520546573746572000000000000000000000000000000000000000000602082015281565b6000610c5133848461249b565b1515610c5c57600080fd5b50600192915050565b6000610c86610c80610c7b898989898989611402565b6116bc565b89611f96565b98975050505050505050565b600080806101243681811015610ca757600080fd5b5a9350610cd38a63a9059cbb60e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a0383161515610cea57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610d3f5780518252601f199092019160209182019101610d20565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610d7c905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b60208310610dd35780518252601f199092019160209182019101610db4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a612506565b1515610e4557600080fd5b6000871115610e8a57610e5f5a859063ffffffff61260116565b6188b8019350610e7f8333610e7a8a8863ffffffff61261316565b612506565b1515610e8a57600080fd5b82600160a060020a03166000805160206127a38339815191528b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ee1578181015183820152602001610ec9565b50505050905090810190601f168015610f0e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019998505050505050505050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610f7c5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610f8757600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610fbb908363ffffffff61260116565b600160a060020a0385166000908152600360209081526040808320338452909152902055610fea848484612506565b1515610ff557600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b60008080610124368181101561103457600080fd5b5a93506110608a63095ea7b360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561107757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106110cc5780518252601f1990920191602091820191016110ad565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611109905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106111605780518252601f199092019160209182019101611141565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61249b565b6000610c5133848461263e565b600160a060020a031660009081526002602052604090205490565b60008080610124368181101561120457600080fd5b5a93506112308a636618846360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561124757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061129c5780518252601f19909201916020918201910161127d565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112d9905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106113305780518252601f199092019160209182019101611311565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61263e565b600054600160a060020a031681565b60408051808201909152600681527f4754434f494e0000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610c51338484612506565b6000308787878787876040518088600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040186600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083106114d25780518252601f1990920191602091820191016114b3565b51815160209384036101000a60001901801990921691161790529201948552508301919091525060408051918290030190209c9b505050505050505050505050565b60008080610124368181101561152957600080fd5b5a93506115558a63d73dd62360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561156c57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106115c15780518252601f1990920191602091820191016115a2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115fe905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106116555780518252601f199092019160209182019101611636565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61275b565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b60008054600160a060020a0316331461171257600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061177357507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117a757507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117db57507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061180f57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061184357507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b151561184e57600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b60008080610164368181101561189a57600080fd5b5a93506118cc8b7fcae9ca51000000000000000000000000000000000000000000000000000000008c8c8c8c8c610c65565b9250600160a060020a03831615156118e357600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106119385780518252601f199092019160209182019101611919565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611975905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208c6040518082805190602001908083835b602083106119cc5780518252601f1990920191602091820191016119ad565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611a33838b8b61249b565b1515611a3e57600080fd5b89600160a060020a0316638f4ffcb1848b308c6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ad6578181015183820152602001611abe565b50505050905090810190601f168015611b035780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b2557600080fd5b505af1158015611b39573d6000803e3d6000fd5b505050506000871115611b7d57611b575a859063ffffffff61260116565b6188b8019350611b728333610e7a8a8863ffffffff61261316565b1515611b7d57600080fd5b82600160a060020a03166000805160206127a38339815191528c6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611bd4578181015183820152602001611bbc565b50505050905090810190601f168015611c015780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019a9950505050505050505050565b6000611c2c33858561249b565b1515611c3757600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611cca578181015183820152602001611cb2565b50505050905090810190601f168015611cf75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611d1957600080fd5b505af1158015611d2d573d6000803e3d6000fd5b506001979650505050505050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611d7f5780518252601f199092019160209182019101611d60565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127a38339815191529589955093508392908301919085019080838360005b83811015611e05578181015183820152602001611ded565b50505050905090810190601f168015611e325780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611e6157600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b505050506040513d6020811015611eef57600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b505050506040513d6020811015611f8f57600080fd5b5050505050565b60008060008084516041141515611fb05760009350612062565b50505060208201516040830151606084015160001a601b60ff82161015611fd557601b015b8060ff16601b14158015611fed57508060ff16601c14155b15611ffb5760009350612062565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af1158015612055573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825283516000928591859190600482019060208501908083835b602083106120c95780518252601f1990920191602091820191016120aa565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209695505050505050565b6000610c5133848461275b565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600061214e612148610c7b858561206b565b85611f96565b949350505050565b60008080610164368181101561216b57600080fd5b5a9350612179888888612136565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020886040518082805190602001908083835b602083106121d05780518252601f1990920191602091820191016121b1565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff1615915061220d905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106122645780518252601f199092019160209182019101612245565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a038816600090815260058252949094208b5160019591948d9450925082918401908083835b602083106122eb5780518252601f1990920191602091820191016122cc565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220805460ff19169315159390931790925550506000861115612368576123425a859063ffffffff61260116565b6188b801935061235d8333610e7a898863ffffffff61261316565b151561236857600080fd5b82600160a060020a03166000805160206127a3833981519152896040518080602001828103825283818151815260200191508051906020019080838360005b838110156123bf5781810151838201526020016123a7565b50505050905090810190601f1680156123ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001979650505050505050565b600054600160a060020a0316331461241e57600080fd5b600160a060020a038116151561243357600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561251d57600080fd5b600160a060020a03841660009081526002602052604090205482111561254257600080fd5b600160a060020a03841660009081526002602052604090205461256b908363ffffffff61260116565b600160a060020a0380861660009081526002602052604080822093909355908516815220546125a0908363ffffffff61279316565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008282111561260d57fe5b50900390565b600082820283158061262f575082848281151561262c57fe5b04145b151561263757fe5b9392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054821061269957600160a060020a0380851660009081526003602090815260408083209387168352929052908120556126f6565b600160a060020a038085166000908152600360209081526040808320938716835292905220546126cf908363ffffffff61260116565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a0380841660009081526003602090815260408083209386168352929052908120546126cf908363ffffffff61279316565b60008282018381101561263757fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a723058202933c705790903eb7c3144d4f48c594e0ca9bc3602231e9c25f2c52a074a05af0029

Deployed Bytecode

0x6080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806309ea63e31461033d5780631296830d1461041e57806318160ddd1461049157806323b872dd146104b85780632d0335ab146104e2578063313ce56714610503578063617b390b1461052e57806366188463146105a157806370a08231146105c55780638be52783146105e65780638da5cb5b1461065957806395d89b411461066e5780639871894814610683578063a9059cbb146106c2578063a9a0b495146106e6578063adb8249e14610768578063b15aa5b7146107db578063c22f8250146107f3578063c8d4b3891461081b578063cae9ca51146108d1578063ccbfc6ed1461093a578063d035e45f14610993578063d4acaf6c146109b6578063d4d64f2b14610a14578063d73dd62314610a6f578063dd62ed3e14610a93578063e269f92914610aba578063e391a7c414610b53578063f2fde38b14610bec575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610c0d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610c44565b604080519115158252519081900360200190f35b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a919950975060809094019550919350918201918190840183828082843750949750508435955050506020909201359150610c659050565b60408051600160a060020a039092168252519081900360200190f35b34801561042a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135610c92565b34801561049d57600080fd5b506104a6610f2b565b60408051918252519081900360200190f35b3480156104c457600080fd5b50610329600160a060020a0360043581169060243516604435610f31565b3480156104ee57600080fd5b506104a6600160a060020a0360043516610fff565b34801561050f57600080fd5b5061051861101a565b6040805160ff9092168252519081900360200190f35b34801561053a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a031694505050602082013591604081013591506060013561101f565b3480156105ad57600080fd5b50610329600160a060020a03600435166024356111c7565b3480156105d157600080fd5b506104a6600160a060020a03600435166111d4565b3480156105f257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a03169450505060208201359160408101359150606001356111ef565b34801561066557600080fd5b50610402611397565b34801561067a57600080fd5b506102906113a6565b34801561068f57600080fd5b506106a5600160e060020a0319600435166113dd565b60408051600160e060020a03199092168252519081900360200190f35b3480156106ce57600080fd5b50610329600160a060020a03600435166024356113f5565b3480156106f257600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526104a694600160e060020a031981351694600160a060020a0360248035919091169560443595369560849493019181908401838280828437509497505084359550505060209092013591506114029050565b34801561077457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135611514565b3480156107e757600080fd5b506104a66004356116bc565b3480156107ff57600080fd5b50610329600160e060020a0319600435811690602435166116fa565b34801561082757600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505084359550505060209092013591506118859050565b3480156108dd57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611c1f9650505050505050565b34801561094657600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611d3b9650505050505050565b34801561099f57600080fd5b506109b4600160a060020a0360043516611e47565b005b3480156109c257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610402958335953695604494919390910191908190840183828082843750949750611f969650505050505050565b348015610a2057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526104a6943694929360249392840191908190840183828082843750949750509335945061206b9350505050565b348015610a7b57600080fd5b50610329600160a060020a03600435166024356120fe565b348015610a9f57600080fd5b506104a6600160a060020a036004358116906024351661210b565b348015610ac657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121369350505050565b348015610b5f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121569350505050565b348015610bf857600080fd5b506109b4600160a060020a0360043516612407565b60408051808201909152600b81527f47616d6520546573746572000000000000000000000000000000000000000000602082015281565b6000610c5133848461249b565b1515610c5c57600080fd5b50600192915050565b6000610c86610c80610c7b898989898989611402565b6116bc565b89611f96565b98975050505050505050565b600080806101243681811015610ca757600080fd5b5a9350610cd38a63a9059cbb60e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a0383161515610cea57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610d3f5780518252601f199092019160209182019101610d20565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610d7c905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b60208310610dd35780518252601f199092019160209182019101610db4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a612506565b1515610e4557600080fd5b6000871115610e8a57610e5f5a859063ffffffff61260116565b6188b8019350610e7f8333610e7a8a8863ffffffff61261316565b612506565b1515610e8a57600080fd5b82600160a060020a03166000805160206127a38339815191528b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ee1578181015183820152602001610ec9565b50505050905090810190601f168015610f0e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019998505050505050505050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610f7c5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610f8757600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610fbb908363ffffffff61260116565b600160a060020a0385166000908152600360209081526040808320338452909152902055610fea848484612506565b1515610ff557600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b60008080610124368181101561103457600080fd5b5a93506110608a63095ea7b360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561107757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106110cc5780518252601f1990920191602091820191016110ad565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611109905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106111605780518252601f199092019160209182019101611141565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61249b565b6000610c5133848461263e565b600160a060020a031660009081526002602052604090205490565b60008080610124368181101561120457600080fd5b5a93506112308a636618846360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561124757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061129c5780518252601f19909201916020918201910161127d565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112d9905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106113305780518252601f199092019160209182019101611311565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61263e565b600054600160a060020a031681565b60408051808201909152600681527f4754434f494e0000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610c51338484612506565b6000308787878787876040518088600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040186600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083106114d25780518252601f1990920191602091820191016114b3565b51815160209384036101000a60001901801990921691161790529201948552508301919091525060408051918290030190209c9b505050505050505050505050565b60008080610124368181101561152957600080fd5b5a93506115558a63d73dd62360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561156c57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106115c15780518252601f1990920191602091820191016115a2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115fe905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106116555780518252601f199092019160209182019101611636565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61275b565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b60008054600160a060020a0316331461171257600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061177357507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117a757507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117db57507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061180f57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061184357507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b151561184e57600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b60008080610164368181101561189a57600080fd5b5a93506118cc8b7fcae9ca51000000000000000000000000000000000000000000000000000000008c8c8c8c8c610c65565b9250600160a060020a03831615156118e357600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106119385780518252601f199092019160209182019101611919565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611975905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208c6040518082805190602001908083835b602083106119cc5780518252601f1990920191602091820191016119ad565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611a33838b8b61249b565b1515611a3e57600080fd5b89600160a060020a0316638f4ffcb1848b308c6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ad6578181015183820152602001611abe565b50505050905090810190601f168015611b035780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b2557600080fd5b505af1158015611b39573d6000803e3d6000fd5b505050506000871115611b7d57611b575a859063ffffffff61260116565b6188b8019350611b728333610e7a8a8863ffffffff61261316565b1515611b7d57600080fd5b82600160a060020a03166000805160206127a38339815191528c6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611bd4578181015183820152602001611bbc565b50505050905090810190601f168015611c015780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019a9950505050505050505050565b6000611c2c33858561249b565b1515611c3757600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611cca578181015183820152602001611cb2565b50505050905090810190601f168015611cf75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611d1957600080fd5b505af1158015611d2d573d6000803e3d6000fd5b506001979650505050505050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611d7f5780518252601f199092019160209182019101611d60565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127a38339815191529589955093508392908301919085019080838360005b83811015611e05578181015183820152602001611ded565b50505050905090810190601f168015611e325780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611e6157600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b505050506040513d6020811015611eef57600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b505050506040513d6020811015611f8f57600080fd5b5050505050565b60008060008084516041141515611fb05760009350612062565b50505060208201516040830151606084015160001a601b60ff82161015611fd557601b015b8060ff16601b14158015611fed57508060ff16601c14155b15611ffb5760009350612062565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af1158015612055573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825283516000928591859190600482019060208501908083835b602083106120c95780518252601f1990920191602091820191016120aa565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209695505050505050565b6000610c5133848461275b565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600061214e612148610c7b858561206b565b85611f96565b949350505050565b60008080610164368181101561216b57600080fd5b5a9350612179888888612136565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020886040518082805190602001908083835b602083106121d05780518252601f1990920191602091820191016121b1565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff1615915061220d905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106122645780518252601f199092019160209182019101612245565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a038816600090815260058252949094208b5160019591948d9450925082918401908083835b602083106122eb5780518252601f1990920191602091820191016122cc565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220805460ff19169315159390931790925550506000861115612368576123425a859063ffffffff61260116565b6188b801935061235d8333610e7a898863ffffffff61261316565b151561236857600080fd5b82600160a060020a03166000805160206127a3833981519152896040518080602001828103825283818151815260200191508051906020019080838360005b838110156123bf5781810151838201526020016123a7565b50505050905090810190601f1680156123ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001979650505050505050565b600054600160a060020a0316331461241e57600080fd5b600160a060020a038116151561243357600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561251d57600080fd5b600160a060020a03841660009081526002602052604090205482111561254257600080fd5b600160a060020a03841660009081526002602052604090205461256b908363ffffffff61260116565b600160a060020a0380861660009081526002602052604080822093909355908516815220546125a0908363ffffffff61279316565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008282111561260d57fe5b50900390565b600082820283158061262f575082848281151561262c57fe5b04145b151561263757fe5b9392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054821061269957600160a060020a0380851660009081526003602090815260408083209387168352929052908120556126f6565b600160a060020a038085166000908152600360209081526040808320938716835292905220546126cf908363ffffffff61260116565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a0380841660009081526003602090815260408083209386168352929052908120546126cf908363ffffffff61279316565b60008282018381101561263757fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a723058202933c705790903eb7c3144d4f48c594e0ca9bc3602231e9c25f2c52a074a05af0029

Swarm Source

bzzr://2933c705790903eb7c3144d4f48c594e0ca9bc3602231e9c25f2c52a074a05af
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.