ETH Price: $2,013.67 (+6.03%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer110861572020-10-19 11:28:541959 days ago1603106934IN
0xE223B6D4...fa3FeC444
0 ETH0.0021568441
Transfer110861492020-10-19 11:26:571959 days ago1603106817IN
0xE223B6D4...fa3FeC444
0 ETH0.0021042440
Transfer110423902020-10-12 18:28:341965 days ago1602527314IN
0xE223B6D4...fa3FeC444
0 ETH0.0015255729.00000145
Transfer110409762020-10-12 13:11:251966 days ago1602508285IN
0xE223B6D4...fa3FeC444
0 ETH0.0029985457
Transfer110219502020-10-09 14:58:281969 days ago1602255508IN
0xE223B6D4...fa3FeC444
0 ETH0.003577268
Transfer110217802020-10-09 14:21:581969 days ago1602253318IN
0xE223B6D4...fa3FeC444
0 ETH0.0048386492
Transfer110158862020-10-08 16:04:141969 days ago1602173054IN
0xE223B6D4...fa3FeC444
0 ETH0.0048828892.82000148
Transfer109715592020-10-01 17:39:481976 days ago1601573988IN
0xE223B6D4...fa3FeC444
0 ETH0.00430488114.51
Transfer109710972020-10-01 16:03:291976 days ago1601568209IN
0xE223B6D4...fa3FeC444
0 ETH0.00583926111
Transfer109709852020-10-01 15:37:331977 days ago1601566653IN
0xE223B6D4...fa3FeC444
0 ETH0.0033845490
Transfer109643712020-09-30 14:46:571978 days ago1601477217IN
0xE223B6D4...fa3FeC444
0 ETH0.00641793122
Transfer109642592020-09-30 14:22:001978 days ago1601475720IN
0xE223B6D4...fa3FeC444
0 ETH0.0044375118
Transfer109642302020-09-30 14:14:291978 days ago1601475269IN
0xE223B6D4...fa3FeC444
0 ETH0.00421187112.00000145
Transfer109642032020-09-30 14:08:461978 days ago1601474926IN
0xE223B6D4...fa3FeC444
0 ETH0.00413534110.00000145
Transfer109641712020-09-30 14:00:591978 days ago1601474459IN
0xE223B6D4...fa3FeC444
0 ETH0.00409905109
Transfer109640382020-09-30 13:31:011978 days ago1601472661IN
0xE223B6D4...fa3FeC444
0 ETH0.00402384107.00000145
Transfer109640222020-09-30 13:27:551978 days ago1601472475IN
0xE223B6D4...fa3FeC444
0 ETH0.00402384107
Transfer109639902020-09-30 13:17:361978 days ago1601471856IN
0xE223B6D4...fa3FeC444
0 ETH0.0035725795
Transfer109639762020-09-30 13:15:471978 days ago1601471747IN
0xE223B6D4...fa3FeC444
0 ETH0.0034973593
Transfer109639572020-09-30 13:10:511978 days ago1601471451IN
0xE223B6D4...fa3FeC444
0 ETH0.0034597592.00000123
Transfer109639552020-09-30 13:10:361978 days ago1601471436IN
0xE223B6D4...fa3FeC444
0 ETH0.0048397592.00000123
Transfer Pre Sig...109392482020-09-26 16:16:101981 days ago1601136970IN
0xE223B6D4...fa3FeC444
0 ETH0.01007312109
Transfer108736902020-09-16 14:28:441992 days ago1600266524IN
0xE223B6D4...fa3FeC444
0 ETH0.00571611152
Transfer108735902020-09-16 14:02:431992 days ago1600264963IN
0xE223B6D4...fa3FeC444
0 ETH0.00545461145
Transfer108735142020-09-16 13:47:181992 days ago1600264038IN
0xE223B6D4...fa3FeC444
0 ETH0.00522723139
View all transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GiftCoin

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-08-07
*/

pragma solidity 0.4.24;

/**
 * @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.
   */
  function Ownable() 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 Gift COIN Token
 * @dev ERC20 contract utilizing ERC865-ish structure (3esmit's implementation with alterations).
 * @dev to allow users to pay Ethereum fees in tokens.
**/
contract GiftCoin is Ownable {
    using SafeMathLib for uint256;
    
    string public constant symbol = "G";
    string public constant name = "Gift Coin";
    
    uint8 public constant decimals = 18;
    uint256 private _totalSupply = 1000000000000 * (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 COIN.
     * @dev _amount The amount of COIN 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 COIN instead).
     * @param _signature Signed hash of data for this transfer.
     * @param _to The address to transfer COIN to.
     * @param _value The amount of COIN to transfer.
     * @param _nonce Nonce of the user's new transaction.
    **/
    function transferPreSigned(
        bytes _signature,
        address _to, 
        uint256 _value, 
        bytes _extraData,
        uint256 _nonce) 
      public
      validPayload(292)
    returns (bool) 
    {
        // Log starting gas left of transaction for later gas price calculations.

        // Recover signer address from signature; ensure address is valid.
        address from = recoverPreSigned(_signature, transferSig, _to, _value, _extraData, _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));

       
        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 COIN from user's wallet.
    **/
    function approvePreSigned(
        bytes _signature,
        address _to, 
        uint256 _value, 
        bytes _extraData,
        uint256 _nonce) 
      public
      validPayload(292)
    returns (bool) 
    {
        address from = recoverPreSigned(_signature, approveSig, _to, _value, _extraData, _nonce);
        require(from != address(0));
        require(!invalidSignatures[from][_signature]);
        
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        require(_approve(from, _to, _value));

        
        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, 
        bytes _extraData,
        uint256 _nonce)
      public
      validPayload(292)
    returns (bool) 
    {
        address from = recoverPreSigned(_signature, increaseApprovalSig, _to, _value, _extraData, _nonce);
        require(from != address(0));
        require(!invalidSignatures[from][_signature]);
        
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        require(_increaseApproval(from, _to, _value));

        
        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, 
        bytes _extraData,

        uint256 _nonce) 
      public
      validPayload(292)
    returns (bool) 
    {
        
        address from = recoverPreSigned(_signature, decreaseApprovalSig, _to, _value, _extraData, _nonce);
        require(from != address(0));
        require(!invalidSignatures[from][_signature]);
        
        invalidSignatures[from][_signature] = true;
        nonces[from]++;
        
        require(_decreaseApproval(from, _to, _value));

    
        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 investment 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 _nonce) 
      public
      validPayload(356)
    returns (bool) 
    {
        address from = recoverPreSigned(_signature, approveAndCallSig, _to, _value, _extraData, _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);

      
        
        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.
    **/
    function revokeSignaturePreSigned(
        bytes _signature,
        bytes _sigToRevoke
        )
      public
      validPayload(356)
    returns (bool)
    {
        address from = recoverRevokeHash(_signature, _sigToRevoke);
        require(!invalidSignatures[from][_signature]);
        invalidSignatures[from][_signature] = true;
        
        invalidSignatures[from][_sigToRevoke] = true;
        
        
        emit SignatureRedeemed(_signature, from);
        return true;
    }
    
    /**
     * @dev Get hash for a revocation.
     * @param _sigToRevoke The signature to be revoked.
    **/
    function getRevokeHash(bytes _sigToRevoke)
      public
      pure
    returns (bytes32 txHash)
    {
        return keccak256(revokeSignatureSig, _sigToRevoke);
    }

    /**
     * @dev Recover the address from a revocation signature.
     * @param _sigToRevoke The signature to be revoked.
     * @param _signature The signature allowing this revocation.
    **/
    function recoverRevokeHash(bytes _signature, bytes _sigToRevoke)
      public
      pure
    returns (address from)
    {
        return ecrecoverFromSig(getSignHash(getRevokeHash(_sigToRevoke)), _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 COIN to.
     * @param _value The amount of COIN 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 _nonce The user's nonce of the new transaction.
    **/
    function getPreSignedHash(
        bytes4 _function,
        address _to, 
        uint256 _value,
        bytes _extraData,
        uint256 _nonce)
      public
      view
    returns (bytes32 txHash) 
    {
        return keccak256(address(this), _function, _to, _value, _extraData, _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 _nonce The user's nonce for this transaction.
    **/
    function recoverPreSigned(
        bytes _sig,
        bytes4 _function,
        address _to,
        uint256 _value,
        bytes _extraData,
        uint256 _nonce) 
      public
      view
    returns (address recovered)
    {
        bytes32 hexdData = getPreSignedHash(_function, _to, _value, _extraData, _nonce);
        return ecrecoverFromSig( keccak256("\x19Ethereum Signed Message:\n32",hexdData), _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);
    }

    /**
     * @dev Helps to reduce stack depth problems for delegations. Thank you to Bokky for this!
     * @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 COIN.
    **/
    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
    {
        GiftCoin lostToken = GiftCoin(_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. Don't want the owner messin' around.
        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

API
[{"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":"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":true,"inputs":[{"name":"_sig","type":"bytes"},{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"recoverPreSigned","outputs":[{"name":"recovered","type":"address"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"approvePreSigned","outputs":[{"name":"","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":true,"inputs":[{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"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":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"approveAndCallPreSigned","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":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"decreaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"_hash","type":"bytes32"}],"name":"getSignHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"increaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"_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":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"}],"name":"revokeSignaturePreSigned","outputs":[{"name":"","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":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"transferPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"_sigToRevoke","type":"bytes"}],"name":"getRevokeHash","outputs":[{"name":"txHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"}],"name":"recoverRevokeHash","outputs":[{"name":"from","type":"address"}],"payable":false,"stateMutability":"pure","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"}]

60806040526c0c9f2c9cd04674edea4000000060015534801561002157600080fd5b5060008054600160a060020a0319163390811782556001549082526002602052604090912055612750806100566000396000f3006080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806318160ddd1461033d57806323b872dd146103645780632d0335ab1461038e578063313ce567146103af57806347b5c2a3146103da57806366188463146104b45780636970fe8b146104d857806370a082311461058757806370c3a1b7146105a85780638b4d7634146106235780638da5cb5b146106d2578063930c112b146106e757806395d89b411461079657806398718948146107ab578063a9059cbb146107ea578063b15aa5b71461080e578063b552698714610826578063c22f8250146108d5578063cae9ca51146108fd578063cc5ece1814610966578063ccbfc6ed146109fd578063d035e45f14610a56578063d4acaf6c14610a79578063d5ce97ee14610ad7578063d73dd62314610b86578063dd62ed3e14610baa578063e40d89e514610bd1578063e87b97b214610c2a578063f2fde38b14610cc1575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610ce2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610d19565b604080519115158252519081900360200190f35b34801561034957600080fd5b50610352610d3a565b60408051918252519081900360200190f35b34801561037057600080fd5b50610329600160a060020a0360043581169060243516604435610d40565b34801561039a57600080fd5b50610352600160a060020a0360043516610e0e565b3480156103bb57600080fd5b506103c4610e29565b6040805160ff9092168252519081900360200190f35b3480156103e657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a9199509750608090940195509193509182019181908401838280828437509497505093359450610e2e9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156104c057600080fd5b50610329600160a060020a0360043516602435610e90565b3480156104e457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505093359450610e9d9350505050565b34801561059357600080fd5b50610352600160a060020a03600435166110f1565b3480156105b457600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261035294600160e060020a031981351694600160a060020a036024803591909116956044359536956084949301918190840183828082843750949750509335945061110c9350505050565b34801561062f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506111c19350505050565b3480156106de57600080fd5b506104986114ca565b3480156106f357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506114d99350505050565b3480156107a257600080fd5b50610290611682565b3480156107b757600080fd5b506107cd600160e060020a0319600435166116b9565b60408051600160e060020a03199092168252519081900360200190f35b3480156107f657600080fd5b50610329600160a060020a03600435166024356116d1565b34801561081a57600080fd5b506103526004356116de565b34801561083257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a91999098506060909101965091945090810192508190840183828082843750949750509335945061171c9350505050565b3480156108e157600080fd5b50610329600160e060020a0319600435811690602435166118c5565b34801561090957600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611a509650505050505050565b34801561097257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611b6c9650505050505050565b348015610a0957600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611dd39650505050505050565b348015610a6257600080fd5b50610a77600160a060020a0360043516611edf565b005b348015610a8557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049895833595369560449491939091019190819084018382808284375094975061202e9650505050505050565b348015610ae357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506121029350505050565b348015610b9257600080fd5b50610329600160a060020a03600435166024356122ab565b348015610bb657600080fd5b50610352600160a060020a03600435811690602435166122b8565b348015610bdd57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103529436949293602493928401919081908401838280828437509497506122e39650505050505050565b348015610c3657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506123719650505050505050565b348015610ccd57600080fd5b50610a77600160a060020a0360043516612394565b60408051808201909152600981527f4769667420436f696e0000000000000000000000000000000000000000000000602082015281565b6000610d26338484612428565b1515610d3157600080fd5b50600192915050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610d8b5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610d9657600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610dca908363ffffffff61249316565b600160a060020a0385166000908152600360209081526040808320338452909152902055610df98484846124a5565b1515610e0457600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b600080610e3e878787878761110c565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020909150610e84908961202e565b98975050505050505050565b6000610d263384846125a0565b6000806101243681811015610eb157600080fd5b610edf897f095ea7b3000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a0383161515610ef657600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b60208310610f4b5780518252601f199092019160209182019101610f2c565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610f88905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610fdf5780518252601f199092019160209182019101610fc0565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611046838989612428565b151561105157600080fd5b82600160a060020a03166000805160206127058339815191528a6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110a8578181015183820152602001611090565b50505050905090810190601f1680156110d55780820380516001836020036101000a031916815260200191505b509250505060405180910390a250600198975050505050505050565b600160a060020a031660009081526002602052604090205490565b604051306c010000000000000000000000008181028352600160e060020a031988166014840152600160a060020a038716026018830152602c8201859052835160009288918891889188918891604c82019060208501908083835b602083106111865780518252601f199092019160209182019101611167565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209c9b505050505050505050505050565b60008061016436818110156111d557600080fd5b611203897fcae9ca51000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561121a57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b6020831061126f5780518252601f199092019160209182019101611250565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112ac905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106113035780518252601f1990920191602091820191016112e4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a0385166000908152600490925290208054600101905561136a838989612428565b151561137557600080fd5b87600160a060020a0316638f4ffcb18489308a6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561140d5781810151838201526020016113f5565b50505050905090810190601f16801561143a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561145c57600080fd5b505af1158015611470573d6000803e3d6000fd5b5050505082600160a060020a03166000805160206127058339815191528a604051808060200182810382528381815181526020019150805190602001908083836000838110156110a8578181015183820152602001611090565b600054600160a060020a031681565b60008061012436818110156114ed57600080fd5b61151b897f66188463000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561153257600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106115875780518252601f199092019160209182019101611568565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115c4905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061161b5780518252601f1990920191602091820191016115fc565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896125a0565b60408051808201909152600181527f4700000000000000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610d263384846124a5565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b600080610124368181101561173057600080fd5b61175e897fd73dd623000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561177557600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106117ca5780518252601f1990920191602091820191016117ab565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611807905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061185e5780518252601f19909201916020918201910161183f565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896126bd565b60008054600160a060020a031633146118dd57600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061193e57507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061197257507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119a657507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119da57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b80611a0e57507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b1515611a1957600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b6000611a5d338585612428565b1515611a6857600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611afb578181015183820152602001611ae3565b50505050905090810190601f168015611b285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b4a57600080fd5b505af1158015611b5e573d6000803e3d6000fd5b506001979650505050505050565b6000806101643681811015611b8057600080fd5b611b8a8686612371565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020866040518082805190602001908083835b60208310611be15780518252601f199092019160209182019101611bc2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611c1e905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020876040518082805190602001908083835b60208310611c755780518252601f199092019160209182019101611c56565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a03881660009081526005825294909420895160019591948b9450925082918401908083835b60208310611cfc5780518252601f199092019160209182019101611cdd565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff1916961515969096179095558084528a51848201528a51600160a060020a03891695600080516020612705833981519152958d955093508392908301919085019080838360005b83811015611d8b578181015183820152602001611d73565b50505050905090810190601f168015611db85780820380516001836020036101000a031916815260200191505b509250505060405180910390a2600193505b50505092915050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611e175780518252601f199092019160209182019101611df8565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127058339815191529589955093508392908301919085019080838360005b83811015611e9d578181015183820152602001611e85565b50505050905090810190601f168015611eca5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611ef957600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505050506040513d6020811015611f8757600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b5050505050565b600080600080845160411415156120485760009350611dca565b50505060208201516040830151606084015160001a601b60ff8216101561206d57601b015b8060ff16601b1415801561208557508060ff16601c14155b156120935760009350611dca565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156120ed573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600080610124368181101561211657600080fd5b612144897fa9059cbb000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561215b57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106121b05780518252601f199092019160209182019101612191565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506121ed905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106122445780518252601f199092019160209182019101612225565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896124a5565b6000610d263384846126bd565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825282516000928491600482019060208401908083835b6020831061233e5780518252601f19909201916020918201910161231f565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b600061238d612387612382846122e3565b6116de565b8461202e565b9392505050565b600054600160a060020a031633146123ab57600080fd5b600160a060020a03811615156123c057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60008282111561249f57fe5b50900390565b6000600160a060020a03831615156124bc57600080fd5b600160a060020a0384166000908152600260205260409020548211156124e157600080fd5b600160a060020a03841660009081526002602052604090205461250a908363ffffffff61249316565b600160a060020a03808616600090815260026020526040808220939093559085168152205461253f908363ffffffff6126f516565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b600160a060020a03808416600090815260036020908152604080832093861683529290529081205482106125fb57600160a060020a038085166000908152600360209081526040808320938716835292905290812055612658565b600160a060020a03808516600090815260036020908152604080832093871683529290522054612631908363ffffffff61249316565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054612631908363ffffffff6126f516565b60008282018381101561238d57fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a7230582064a8180ea229c306b55680c97614d549fc9d164840886ba995a60f8fd21643bf0029

Deployed Bytecode

0x6080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806318160ddd1461033d57806323b872dd146103645780632d0335ab1461038e578063313ce567146103af57806347b5c2a3146103da57806366188463146104b45780636970fe8b146104d857806370a082311461058757806370c3a1b7146105a85780638b4d7634146106235780638da5cb5b146106d2578063930c112b146106e757806395d89b411461079657806398718948146107ab578063a9059cbb146107ea578063b15aa5b71461080e578063b552698714610826578063c22f8250146108d5578063cae9ca51146108fd578063cc5ece1814610966578063ccbfc6ed146109fd578063d035e45f14610a56578063d4acaf6c14610a79578063d5ce97ee14610ad7578063d73dd62314610b86578063dd62ed3e14610baa578063e40d89e514610bd1578063e87b97b214610c2a578063f2fde38b14610cc1575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610ce2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610d19565b604080519115158252519081900360200190f35b34801561034957600080fd5b50610352610d3a565b60408051918252519081900360200190f35b34801561037057600080fd5b50610329600160a060020a0360043581169060243516604435610d40565b34801561039a57600080fd5b50610352600160a060020a0360043516610e0e565b3480156103bb57600080fd5b506103c4610e29565b6040805160ff9092168252519081900360200190f35b3480156103e657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a9199509750608090940195509193509182019181908401838280828437509497505093359450610e2e9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156104c057600080fd5b50610329600160a060020a0360043516602435610e90565b3480156104e457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505093359450610e9d9350505050565b34801561059357600080fd5b50610352600160a060020a03600435166110f1565b3480156105b457600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261035294600160e060020a031981351694600160a060020a036024803591909116956044359536956084949301918190840183828082843750949750509335945061110c9350505050565b34801561062f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506111c19350505050565b3480156106de57600080fd5b506104986114ca565b3480156106f357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506114d99350505050565b3480156107a257600080fd5b50610290611682565b3480156107b757600080fd5b506107cd600160e060020a0319600435166116b9565b60408051600160e060020a03199092168252519081900360200190f35b3480156107f657600080fd5b50610329600160a060020a03600435166024356116d1565b34801561081a57600080fd5b506103526004356116de565b34801561083257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a91999098506060909101965091945090810192508190840183828082843750949750509335945061171c9350505050565b3480156108e157600080fd5b50610329600160e060020a0319600435811690602435166118c5565b34801561090957600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611a509650505050505050565b34801561097257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611b6c9650505050505050565b348015610a0957600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611dd39650505050505050565b348015610a6257600080fd5b50610a77600160a060020a0360043516611edf565b005b348015610a8557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049895833595369560449491939091019190819084018382808284375094975061202e9650505050505050565b348015610ae357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506121029350505050565b348015610b9257600080fd5b50610329600160a060020a03600435166024356122ab565b348015610bb657600080fd5b50610352600160a060020a03600435811690602435166122b8565b348015610bdd57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103529436949293602493928401919081908401838280828437509497506122e39650505050505050565b348015610c3657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506123719650505050505050565b348015610ccd57600080fd5b50610a77600160a060020a0360043516612394565b60408051808201909152600981527f4769667420436f696e0000000000000000000000000000000000000000000000602082015281565b6000610d26338484612428565b1515610d3157600080fd5b50600192915050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610d8b5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610d9657600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610dca908363ffffffff61249316565b600160a060020a0385166000908152600360209081526040808320338452909152902055610df98484846124a5565b1515610e0457600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b600080610e3e878787878761110c565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020909150610e84908961202e565b98975050505050505050565b6000610d263384846125a0565b6000806101243681811015610eb157600080fd5b610edf897f095ea7b3000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a0383161515610ef657600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b60208310610f4b5780518252601f199092019160209182019101610f2c565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610f88905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610fdf5780518252601f199092019160209182019101610fc0565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611046838989612428565b151561105157600080fd5b82600160a060020a03166000805160206127058339815191528a6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110a8578181015183820152602001611090565b50505050905090810190601f1680156110d55780820380516001836020036101000a031916815260200191505b509250505060405180910390a250600198975050505050505050565b600160a060020a031660009081526002602052604090205490565b604051306c010000000000000000000000008181028352600160e060020a031988166014840152600160a060020a038716026018830152602c8201859052835160009288918891889188918891604c82019060208501908083835b602083106111865780518252601f199092019160209182019101611167565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209c9b505050505050505050505050565b60008061016436818110156111d557600080fd5b611203897fcae9ca51000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561121a57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b6020831061126f5780518252601f199092019160209182019101611250565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112ac905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106113035780518252601f1990920191602091820191016112e4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a0385166000908152600490925290208054600101905561136a838989612428565b151561137557600080fd5b87600160a060020a0316638f4ffcb18489308a6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561140d5781810151838201526020016113f5565b50505050905090810190601f16801561143a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561145c57600080fd5b505af1158015611470573d6000803e3d6000fd5b5050505082600160a060020a03166000805160206127058339815191528a604051808060200182810382528381815181526020019150805190602001908083836000838110156110a8578181015183820152602001611090565b600054600160a060020a031681565b60008061012436818110156114ed57600080fd5b61151b897f66188463000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561153257600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106115875780518252601f199092019160209182019101611568565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115c4905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061161b5780518252601f1990920191602091820191016115fc565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896125a0565b60408051808201909152600181527f4700000000000000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610d263384846124a5565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b600080610124368181101561173057600080fd5b61175e897fd73dd623000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561177557600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106117ca5780518252601f1990920191602091820191016117ab565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611807905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061185e5780518252601f19909201916020918201910161183f565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896126bd565b60008054600160a060020a031633146118dd57600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061193e57507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061197257507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119a657507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119da57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b80611a0e57507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b1515611a1957600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b6000611a5d338585612428565b1515611a6857600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611afb578181015183820152602001611ae3565b50505050905090810190601f168015611b285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b4a57600080fd5b505af1158015611b5e573d6000803e3d6000fd5b506001979650505050505050565b6000806101643681811015611b8057600080fd5b611b8a8686612371565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020866040518082805190602001908083835b60208310611be15780518252601f199092019160209182019101611bc2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611c1e905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020876040518082805190602001908083835b60208310611c755780518252601f199092019160209182019101611c56565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a03881660009081526005825294909420895160019591948b9450925082918401908083835b60208310611cfc5780518252601f199092019160209182019101611cdd565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff1916961515969096179095558084528a51848201528a51600160a060020a03891695600080516020612705833981519152958d955093508392908301919085019080838360005b83811015611d8b578181015183820152602001611d73565b50505050905090810190601f168015611db85780820380516001836020036101000a031916815260200191505b509250505060405180910390a2600193505b50505092915050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611e175780518252601f199092019160209182019101611df8565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127058339815191529589955093508392908301919085019080838360005b83811015611e9d578181015183820152602001611e85565b50505050905090810190601f168015611eca5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611ef957600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505050506040513d6020811015611f8757600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b5050505050565b600080600080845160411415156120485760009350611dca565b50505060208201516040830151606084015160001a601b60ff8216101561206d57601b015b8060ff16601b1415801561208557508060ff16601c14155b156120935760009350611dca565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156120ed573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600080610124368181101561211657600080fd5b612144897fa9059cbb000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561215b57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106121b05780518252601f199092019160209182019101612191565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506121ed905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106122445780518252601f199092019160209182019101612225565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896124a5565b6000610d263384846126bd565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825282516000928491600482019060208401908083835b6020831061233e5780518252601f19909201916020918201910161231f565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b600061238d612387612382846122e3565b6116de565b8461202e565b9392505050565b600054600160a060020a031633146123ab57600080fd5b600160a060020a03811615156123c057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60008282111561249f57fe5b50900390565b6000600160a060020a03831615156124bc57600080fd5b600160a060020a0384166000908152600260205260409020548211156124e157600080fd5b600160a060020a03841660009081526002602052604090205461250a908363ffffffff61249316565b600160a060020a03808616600090815260026020526040808220939093559085168152205461253f908363ffffffff6126f516565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b600160a060020a03808416600090815260036020908152604080832093861683529290529081205482106125fb57600160a060020a038085166000908152600360209081526040808320938716835292905290812055612658565b600160a060020a03808516600090815260036020908152604080832093871683529290522054612631908363ffffffff61249316565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054612631908363ffffffff6126f516565b60008282018381101561238d57fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a7230582064a8180ea229c306b55680c97614d549fc9d164840886ba995a60f8fd21643bf0029

Deployed Bytecode Sourcemap

2239:21776:0:-;;;;;;;;;-1:-1:-1;;;2239:21776:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:21776:0;4158:21;4201:19;4182:8;;4158:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;4223:21:0;4236:7;;;;4223:21;;:12;:21;;;;;;4158:32;;-1:-1:-1;;;;4223:21:0;;;;-1:-1:-1;;;;4263:17:0;;;;4255:26;;;;;;4336:4;4332:19;;4325:41;;;4405:36;;;;4413:4;;4342:8;;4405:36;;;4332:19;4405:36;;4332:19;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4405:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4397:45;;;;;;;;4500:14;4516:4;4497:24;4487:2;;4535:1;4532;4525:12;4487:2;4574:14;4571:1;4568;4553:36;4613:14;4610:1;4603:25;2359:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2359:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2359:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5994:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5994:189:0;-1:-1:-1;;;;;5994:189:0;;;;;;;;;;;;;;;;;;;;;;;;;21538:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21538:120:0;;;;;;;;;;;;;;;;;;;;5414:359;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5414:359:0;-1:-1:-1;;;;;5414:359:0;;;;;;;;;;;;21241:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21241:136:0;-1:-1:-1;;;;;21241:136:0;;;;;2413:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2413:35:0;;;;;;;;;;;;;;;;;;;;;;;18991:434;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18991:434:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18991:434:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18991:434:0;;;;-1:-1:-1;;;;;18991:434:0;;;;;;;;;;;;;-1:-1:-1;18991:434:0;-1:-1:-1;18991:434:0;;;;;-1:-1:-1;18991:434:0;;-1:-1:-1;18991:434:0;;;;;;;;;;;;;;-1:-1:-1;18991:434:0;;-1:-1:-1;;18991:434:0;;;-1:-1:-1;18991:434:0;;-1:-1:-1;;;;18991:434:0;;;;;-1:-1:-1;;;;;18991:434:0;;;;;;;;;;;;;;6878:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6878:207:0;-1:-1:-1;;;;;6878:207:0;;;;;;;12051:652;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12051:652:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12051:652:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12051:652:0;;;;;;;;;;;-1:-1:-1;12051:652:0;;;;;-1:-1:-1;12051:652:0;;-1:-1:-1;12051:652:0;;;;-1:-1:-1;12051:652:0;;;;;;;;;;-1:-1:-1;12051:652:0;;-1:-1:-1;;12051:652:0;;;-1:-1:-1;12051:652:0;;-1:-1:-1;;;;12051:652:0;21800:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21800:135:0;-1:-1:-1;;;;;21800:135:0;;;;;18190:310;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18190:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18190:310:0;;;;-1:-1:-1;;;;;18190:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18190:310:0;;-1:-1:-1;;18190:310:0;;;-1:-1:-1;18190:310:0;;-1:-1:-1;;;;18190:310:0;14897:768;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14897:768:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14897:768:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14897:768:0;;;;;;;;;;;-1:-1:-1;14897:768:0;;;;;-1:-1:-1;14897:768:0;;-1:-1:-1;14897:768:0;;;;-1:-1:-1;14897:768:0;;;;;;;;;;-1:-1:-1;14897:768:0;;-1:-1:-1;;14897:768:0;;;-1:-1:-1;14897:768:0;;-1:-1:-1;;;;14897:768:0;1052:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1052:20:0;;;;13725:687;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13725:687:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13725:687:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13725:687:0;;;;;;;;;;;-1:-1:-1;13725:687:0;;;;;-1:-1:-1;13725:687:0;;-1:-1:-1;13725:687:0;;;;-1:-1:-1;13725:687:0;;;;;;;;;;-1:-1:-1;13725:687:0;;-1:-1:-1;;13725:687:0;;;-1:-1:-1;13725:687:0;;-1:-1:-1;;;;13725:687:0;2317:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2317:35:0;;;;3544:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3544:46:0;-1:-1:-1;;;;;;3544:46:0;;;;;;;;;-1:-1:-1;;;;;;3544:46:0;;;;;;;;;;;;;;4928:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4928:181:0;-1:-1:-1;;;;;4928:181:0;;;;;;;19596:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19596:177:0;;;;;12905:678;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12905:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12905:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12905:678:0;;;;;;;;;;;-1:-1:-1;12905:678:0;;;;;-1:-1:-1;12905:678:0;;-1:-1:-1;12905:678:0;;;;-1:-1:-1;12905:678:0;;;;;;;;;;-1:-1:-1;12905:678:0;;-1:-1:-1;;12905:678:0;;;-1:-1:-1;12905:678:0;;-1:-1:-1;;;;12905:678:0;23222:488;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23222:488:0;-1:-1:-1;;;;;;23222:488:0;;;;;;;;;;7395:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7395:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7395:312:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7395:312:0;;-1:-1:-1;7395:312:0;;-1:-1:-1;;;;;;;7395:312:0;16381:509;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16381:509:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16381:509:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16381:509:0;;;;-1:-1:-1;16381:509:0;-1:-1:-1;16381:509:0;;-1:-1:-1;16381:509:0;;;;;;;;-1:-1:-1;16381:509:0;;-1:-1:-1;16381:509:0;;-1:-1:-1;;;;;;;16381:509:0;15920:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15920:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15920:244:0;;-1:-1:-1;15920:244:0;;-1:-1:-1;;;;;;;15920:244:0;22559:274;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22559:274:0;-1:-1:-1;;;;;22559:274:0;;;;;;;20039:1010;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20039:1010:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20039:1010:0;;-1:-1:-1;20039:1010:0;;-1:-1:-1;;;;;;;20039:1010:0;10855:928;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10855:928:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10855:928:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10855:928:0;;;;;;;;;;;-1:-1:-1;10855:928:0;;;;;-1:-1:-1;10855:928:0;;-1:-1:-1;10855:928:0;;;;-1:-1:-1;10855:928:0;;;;;;;;;;-1:-1:-1;10855:928:0;;-1:-1:-1;;10855:928:0;;;-1:-1:-1;10855:928:0;;-1:-1:-1;;;;10855:928:0;6427:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6427:207:0;-1:-1:-1;;;;;6427:207:0;;;;;;;22176:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22176:163:0;-1:-1:-1;;;;;22176:163:0;;;;;;;;;;17017:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17017:173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17017:173:0;;-1:-1:-1;17017:173:0;;-1:-1:-1;;;;;;;17017:173:0;17401:220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17401:220:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17401:220:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17401:220:0;;;;-1:-1:-1;17401:220:0;-1:-1:-1;17401:220:0;;-1:-1:-1;17401:220:0;;;;;;;;-1:-1:-1;17401:220:0;;-1:-1:-1;17401:220:0;;-1:-1:-1;;;;;;;17401:220:0;1668:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1668:178:0;-1:-1:-1;;;;;1668:178:0;;;;;2359:41;;;;;;;;;;;;;;;;;;;:::o;5994:189::-;6075:12;6113:39;6122:10;6134:8;6144:7;6113:8;:39::i;:::-;6105:48;;;;;;;;-1:-1:-1;6171:4:0;5994:189;;;;:::o;21538:120::-;21638:12;;21538:120;:::o;5414:359::-;-1:-1:-1;;;;;5544:15:0;;5506:12;5544:15;;;:8;:15;;;;;;:26;-1:-1:-1;5544:26:0;;;:67;;-1:-1:-1;;;;;;5574:14:0;;;;;;:7;:14;;;;;;;;5589:10;5574:26;;;;;;;;:37;-1:-1:-1;5574:37:0;5544:67;5536:76;;;;;;;;-1:-1:-1;;;;;5654:14:0;;;;;;:7;:14;;;;;;;;5669:10;5654:26;;;;;;;;:39;;5685:7;5654:39;:30;:39;:::i;:::-;-1:-1:-1;;;;;5625:14:0;;;;;;:7;:14;;;;;;;;5640:10;5625:26;;;;;;;:68;5712:30;5633:5;5729:3;5734:7;5712:9;:30::i;:::-;5704:39;;;;;;;;-1:-1:-1;5761:4:0;5414:359;;;;;:::o;21241:136::-;-1:-1:-1;;;;;21355:14:0;21317:13;21355:14;;;:6;:14;;;;;;;21241:136::o;2413:35::-;2446:2;2413:35;:::o;18991:434::-;19206:17;19241:16;19260:60;19277:9;19288:3;19293:6;19301:10;19313:6;19260:16;:60::i;:::-;19356:54;;;;;;;;;;;;;;;;;;;;;;19241:79;;-1:-1:-1;19338:79:0;;19412:4;19338:16;:79::i;:::-;19331:86;18991:434;-1:-1:-1;;;;;;;;18991:434:0:o;6878:207::-;6968:12;7006:48;7024:10;7036:8;7046:7;7006:17;:48::i;12051:652::-;12260:4;;12241:3;23923:12;23964:21;;;;23956:30;;;;;;12298:73;12315:10;12327;12339:3;12344:6;12352:10;12364:6;12298:16;:73::i;:::-;12283:88;-1:-1:-1;;;;;;12390:18:0;;;;12382:27;;;;;;12429:17;:23;12447:4;-1:-1:-1;;;;;12429:23:0;-1:-1:-1;;;;;12429:23:0;;;;;;;;;;;;12453:10;12429:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;12429:35:0;;;;;-1:-1:-1;12429:35:0;;;;;;;;;;;;;12428:36;;-1:-1:-1;12420:45:0;;-1:-1:-1;12420:45:0;;;;;12524:4;12486:17;:23;12504:4;-1:-1:-1;;;;;12486:23:0;-1:-1:-1;;;;;12486:23:0;;;;;;;;;;;;12510:10;12486:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;12486:35:0;;;;;-1:-1:-1;12486:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;12486:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;12539:12:0;;-1:-1:-1;12539:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;12539:14:0;;;12582:27;12539:12;12597:3;12602:6;12582:8;:27::i;:::-;12574:36;;;;;;;;12668:4;-1:-1:-1;;;;;12638:35:0;-1:-1:-1;;;;;;;;;;;12656:10:0;12638:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12638:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12691:4:0;;12051:652;-1:-1:-1;;;;;;;;12051:652:0:o;21800:135::-;-1:-1:-1;;;;;21911:16:0;21878:7;21911:16;;;:8;:16;;;;;;;21800:135::o;18190:310::-;18424:68;;18442:4;18424:68;;;;;;-1:-1:-1;;;;;;18424:68:0;;;;;;-1:-1:-1;;;;;18424:68:0;;;;;;;;;;;;;;;-1:-1:-1;;18424:68:0;;;;;;;;18485:6;;18424:68;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;18424:68:0;;;;;-1:-1:-1;18424:68:0;;;;;;;;;;;18190:310;-1:-1:-1;;;;;;;;;;;;18190:310:0:o;14897:768::-;15112:4;;15093:3;23923:12;23964:21;;;;23956:30;;;;;;15150:80;15167:10;15179:17;15198:3;15203:6;15211:10;15223:6;15150:16;:80::i;:::-;15135:95;-1:-1:-1;;;;;;15249:18:0;;;;15241:27;;;;;;15288:17;:23;15306:4;-1:-1:-1;;;;;15288:23:0;-1:-1:-1;;;;;15288:23:0;;;;;;;;;;;;15312:10;15288:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;15288:35:0;;;;;-1:-1:-1;15288:35:0;;;;;;;;;;;;;15287:36;;-1:-1:-1;15279:45:0;;-1:-1:-1;15279:45:0;;;;;15383:4;15345:17;:23;15363:4;-1:-1:-1;;;;;15345:23:0;-1:-1:-1;;;;;15345:23:0;;;;;;;;;;;;15369:10;15345:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;15345:35:0;;;;;-1:-1:-1;15345:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;15345:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;15398:12:0;;-1:-1:-1;15398:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;15398:14:0;;;15441:27;15398:12;15456:3;15461:6;15441:8;:27::i;:::-;15433:36;;;;;;;;15503:3;-1:-1:-1;;;;;15480:43:0;;15524:4;15530:6;15546:4;15553:10;15480:84;;;;;-1:-1:-1;;;15480:84:0;;;;;;;-1:-1:-1;;;;;15480:84:0;-1:-1:-1;;;;;15480:84:0;;;;;;;;;;;-1:-1:-1;;;;;15480:84:0;-1:-1:-1;;;;;15480:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15480:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:84:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15480:84:0;;;;15630:4;-1:-1:-1;;;;;15600:35:0;-1:-1:-1;;;;;;;;;;;15618:10:0;15600:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1052:20:0;;;-1:-1:-1;;;;;1052:20:0;;:::o;13725:687::-;13945:4;;13926:3;23923:12;23964:21;;;;23956:30;;;;;;13993:82;14010:10;14022:19;14043:3;14048:6;14056:10;14068:6;13993:16;:82::i;:::-;13978:97;-1:-1:-1;;;;;;14094:18:0;;;;14086:27;;;;;;14133:17;:23;14151:4;-1:-1:-1;;;;;14133:23:0;-1:-1:-1;;;;;14133:23:0;;;;;;;;;;;;14157:10;14133:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14133:35:0;;;;;-1:-1:-1;14133:35:0;;;;;;;;;;;;;14132:36;;-1:-1:-1;14124:45:0;;-1:-1:-1;14124:45:0;;;;;14228:4;14190:17;:23;14208:4;-1:-1:-1;;;;;14190:23:0;-1:-1:-1;;;;;14190:23:0;;;;;;;;;;;;14214:10;14190:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14190:35:0;;;;;-1:-1:-1;14190:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;14190:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;14243:12:0;;-1:-1:-1;14243:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;14243:14:0;;;14286:36;14243:12;14310:3;14315:6;14286:17;:36::i;2317:35::-;;;;;;;;;;;;;;;;;;;:::o;3544:46::-;;;;;;;;;;;;-1:-1:-1;;;3544:46:0;;:::o;4928:181::-;5005:12;5043:35;5053:10;5065:3;5070:7;5043:9;:35::i;19596:177::-;19713:52;;;;;;;;;;;;;;;;;;;;;;19596:177;;;:::o;12905:678::-;13122:4;;13103:3;23923:12;23964:21;;;;23956:30;;;;;;13160:82;13177:10;13189:19;13210:3;13215:6;13223:10;13235:6;13160:16;:82::i;:::-;13145:97;-1:-1:-1;;;;;;13261:18:0;;;;13253:27;;;;;;13300:17;:23;13318:4;-1:-1:-1;;;;;13300:23:0;-1:-1:-1;;;;;13300:23:0;;;;;;;;;;;;13324:10;13300:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;13300:35:0;;;;;-1:-1:-1;13300:35:0;;;;;;;;;;;;;13299:36;;-1:-1:-1;13291:45:0;;-1:-1:-1;13291:45:0;;;;;13395:4;13357:17;:23;13375:4;-1:-1:-1;;;;;13357:23:0;-1:-1:-1;;;;;13357:23:0;;;;;;;;;;;;13381:10;13357:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;13357:35:0;;;;;-1:-1:-1;13357:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;13357:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;13410:12:0;;-1:-1:-1;13410:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;13410:14:0;;;13453:36;13410:12;13477:3;13482:6;13453:17;:36::i;23222:488::-;23330:12;1481:5;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1459:28;;;;;;23473:21;-1:-1:-1;;;;;;23473:21:0;;;;:46;;-1:-1:-1;23498:21:0;-1:-1:-1;;;;;;23498:21:0;;;23473:46;:71;;;-1:-1:-1;23523:21:0;-1:-1:-1;;;;;;23523:21:0;;;23473:71;:109;;;-1:-1:-1;23561:21:0;-1:-1:-1;;;;;;23561:21:0;;;23473:109;:134;;;-1:-1:-1;23586:21:0;-1:-1:-1;;;;;;23586:21:0;;;23473:134;:159;;;-1:-1:-1;23611:21:0;-1:-1:-1;;;;;;23611:21:0;;;23473:159;23465:168;;;;;;;;-1:-1:-1;;;;;;;23644:26:0;;;;;;:12;:26;;;;;:36;;-1:-1:-1;;;23644:36:0;;-1:-1:-1;;23644:36:0;;;;;;;23222:488;;;;:::o;7395:312::-;7496:12;7535:39;7544:10;7556:8;7566:7;7535:8;:39::i;:::-;7527:48;;;;;;;;7586:91;;;;;7635:10;7586:91;;;;;;;;;;;;7664:4;7586:91;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7586:48:0;;;;;7635:10;7647:7;;7664:4;7671:5;;7586:91;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7586:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7586:91:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7695:4:0;;7395:312;-1:-1:-1;;;;;;;7395:312:0:o;16381:509::-;16535:4;;16516:3;23923:12;23964:21;;;;23956:30;;;;;;16572:43;16590:10;16602:12;16572:17;:43::i;:::-;16557:58;;16635:17;:23;16653:4;-1:-1:-1;;;;;16635:23:0;-1:-1:-1;;;;;16635:23:0;;;;;;;;;;;;16659:10;16635:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16635:35:0;;;;;-1:-1:-1;16635:35:0;;;;;;;;;;;;;16634:36;;-1:-1:-1;16626:45:0;;-1:-1:-1;16626:45:0;;;;;16720:4;16682:17;:23;16700:4;-1:-1:-1;;;;;16682:23:0;-1:-1:-1;;;;;16682:23:0;;;;;;;;;;;;16706:10;16682:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16682:35:0;;;;;-1:-1:-1;16682:35:0;;;;;;;;;;;:42;;-1:-1:-1;;16682:42:0;;;;;;;;;;;-1:-1:-1;;;;;16745:23:0;;-1:-1:-1;16745:23:0;;;:17;:23;;;;;;:37;;-1:-1:-1;;16745:23:0;;:37;;-1:-1:-1;16682:35:0;-1:-1:-1;16682:35:0;;16745:37;;;;16682:35;16745:37;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16745:37:0;;;;;-1:-1:-1;16745:37:0;;;;;;;;;;;:44;;-1:-1:-1;;16745:44:0;;;;;;;;;;;16825:35;;;;;;;;;;;-1:-1:-1;;;;;16825:35:0;;;-1:-1:-1;;;;;;;;;;;16825:35:0;;;-1:-1:-1;16745:37:0;-1:-1:-1;16745:37:0;;16825:35;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16825:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16878:4;16871:11;;23997:1;16381:509;;;;;;;:::o;15920:244::-;16033:10;15993:4;16015:29;;;:17;:29;;;;;;;;:43;;;;16061:4;;16045:12;;16015:43;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16015:43:0;;;;;-1:-1:-1;16015:43:0;;;;;;;;;;;:50;;-1:-1:-1;;16015:50:0;;;;;;;;;;;16091:43;;;;;;;;;;;16123:10;;-1:-1:-1;;;;;;;;;;;16091:43:0;;;-1:-1:-1;16015:43:0;-1:-1:-1;16015:43:0;;16091;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16091:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16152:4:0;15920:244;;;:::o;22559:274::-;22654:18;1481:5;;22654:18;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1459:28;;;;;;22742:34;;;;;;22770:4;22742:34;;;;;;22684:14;;-1:-1:-1;;;;;;22742:19:0;;;;;:34;;;;;;;;;;;;;;-1:-1:-1;22742:19:0;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;22742:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22742:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22742:34:0;22806:5;;;22787:38;;;;;;-1:-1:-1;;;;;22806:5:0;;;22787:38;;;;;;;;;;;;22742:34;;-1:-1:-1;22787:18:0;;;;;;:38;;;;;22742:34;;22787:38;;;;;;;;;;;:18;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;22787:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22787:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;22559:274:0:o;20039:1010::-;20133:24;20176:9;20196;20216:7;20238:3;:10;20252:2;20238:16;;20234:39;;;20271:1;20256:17;;;;20234:39;-1:-1:-1;;;20328:2:0;20319:12;;20313:19;20366:2;20357:12;;20351:19;20611:2;20602:12;;20596:19;20593:1;20588:28;20912:2;20908:6;;;;20904:44;;;20934:2;20929:7;20904:44;20962:1;:7;;20967:2;20962:7;;:18;;;;;20973:1;:7;;20978:2;20973:7;;20962:18;20958:41;;;20997:1;20982:17;;;;20958:41;21017:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21017:24:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;21017:24:0;;-1:-1:-1;;21017:24:0;;;20039:1010;-1:-1:-1;;;;;;;20039:1010:0:o;10855:928::-;11065:4;;11046:3;23923:12;23964:21;;;;23956:30;;;;;;11264:74;11281:10;11293:11;11306:3;11311:6;11319:10;11331:6;11264:16;:74::i;:::-;11249:89;-1:-1:-1;;;;;;11357:18:0;;;;11349:27;;;;;;11488:17;:23;11506:4;-1:-1:-1;;;;;11488:23:0;-1:-1:-1;;;;;11488:23:0;;;;;;;;;;;;11512:10;11488:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11488:35:0;;;;;-1:-1:-1;11488:35:0;;;;;;;;;;;;;11487:36;;-1:-1:-1;11479:45:0;;-1:-1:-1;11479:45:0;;;;;11573:4;11535:17;:23;11553:4;-1:-1:-1;;;;;11535:23:0;-1:-1:-1;;;;;11535:23:0;;;;;;;;;;;;11559:10;11535:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11535:35:0;;;;;-1:-1:-1;11535:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;11535:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;11588:12:0;;-1:-1:-1;11588:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;11588:14:0;;;11662:28;11588:12;11678:3;11683:6;11662:9;:28::i;6427:207::-;6517:12;6555:48;6573:10;6585:8;6595:7;6555:17;:48::i;22176:163::-;-1:-1:-1;;;;;22306:15:0;;;22273:7;22306:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;22176:163::o;17017:173::-;17139:43;;17149:18;17139:43;;;;;17100:14;;17169:12;;17139:43;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;17139:43:0;;;;;;;;;;;;-1:-1:-1;;;;;;17017:173:0:o;17401:220::-;17506:12;17543:70;17560:40;17572:27;17586:12;17572:13;:27::i;:::-;17560:11;:40::i;:::-;17602:10;17543:16;:70::i;:::-;17536:77;17401:220;-1:-1:-1;;;17401:220:0:o;1668:178::-;1481:5;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1459:28;;;;;;-1:-1:-1;;;;;1745:22:0;;;;1737:31;;;;;;1801:5;;;1780:37;;-1:-1:-1;;;;;1780:37:0;;;;1801:5;;;1780:37;;;1824:5;:16;;-1:-1:-1;;1824:16:0;-1:-1:-1;;;;;1824:16:0;;;;;;;;;;1668:178::o;8770:246::-;-1:-1:-1;;;;;8900:15:0;;;8870:12;8900:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;:35;;;8951;;;;;;;8870:12;;8900:25;:15;8951:35;;;;;;;;;;;-1:-1:-1;9004:4:0;8770:246;;;;;:::o;574:113::-;632:7;655:6;;;;648:14;;;;-1:-1:-1;676:5:0;;;574:113::o;8063:402::-;8157:12;-1:-1:-1;;;;;8196:17:0;;;;8187:27;;;;;;-1:-1:-1;;;;;8233:15:0;;;;;;:8;:15;;;;;;:26;-1:-1:-1;8233:26:0;8225:35;;;;;;-1:-1:-1;;;;;8299:15:0;;;;;;:8;:15;;;;;;:28;;8319:7;8299:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;8281:15:0;;;;;;;:8;:15;;;;;;:46;;;;8354:13;;;;;;;:26;;8372:7;8354:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;8338:13:0;;;;;;;:8;:13;;;;;;;;;:42;;;;8406:29;;;;;;;8338:13;;8406:29;;;;;;;;;;;;;-1:-1:-1;8453:4:0;8063:402;;;;;:::o;9932:400::-;-1:-1:-1;;;;;10074:15:0;;;10040:12;10074:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;:36;-1:-1:-1;10070:153:0;;-1:-1:-1;;;;;10112:15:0;;;10140:1;10112:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;:29;10070:153;;;-1:-1:-1;;;;;10185:15:0;;;;;;;:7;:15;;;;;;;;:25;;;;;;;;;;:38;;10215:7;10185:38;:29;:38;:::i;:::-;-1:-1:-1;;;;;10157:15:0;;;;;;;:7;:15;;;;;;;;:25;;;;;;;;;:66;10070:153;-1:-1:-1;;;;;10249:53:0;;;10276:15;;;;:7;:15;;;;;;;;10249:53;;;10276:25;;;;;;;;;;;10249:53;;;;;;;;;;;;;;;;;-1:-1:-1;10320:4:0;9932:400;;;;;:::o;9318:303::-;-1:-1:-1;;;;;9484:15:0;;;9426:12;9484:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;:38;;9514:7;9484:38;:29;:38;:::i;695:133::-;753:7;781:5;;;800:6;;;;793:14;;

Swarm Source

bzzr://64a8180ea229c306b55680c97614d549fc9d164840886ba995a60f8fd21643bf

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.