ETH Price: $3,199.78 (+3.45%)
Gas: 12 Gwei

Token

Onasander (ONA)
 

Overview

Max Total Supply

88,000,000 ONA

Holders

130

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OnasanderToken

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-05-05
*/

/** @title Onasander Token Contract
*   
*   @author: Andrzej Wegrzyn
*   Contact: [email protected]
*   Date: May 5, 2018
*   Location: New York, USA
*   Token: Onasander
*   Symbol: ONA
*   
*   @notice This is a simple contract due to solidity bugs and complications. 
*
*   @notice Owner has the option to burn all the remaining tokens after the ICO.  That way Owners will not end up with majority of the tokens.
*   @notice Onasander would love to give every user the option to burn the remaining tokens, but due to Solidity VM bugs and risk, we will process
*   @notice all coin burns and refunds manually.
*   
*   @notice How to run the contract:
*
*   Requires:
*   Wallet Address
*
*   Run:
*   1. Create Contract
*   2. Set Minimum Goal
*   3. Set Tokens Per ETH
*   4. Create PRE ICO Sale (can have multiple PRE-ICOs)
*   5. End PRE ICO Sale
*   6. Create ICO Sale
*   7. End ICO Sale
*   8. END ICO
*   9. Burn Remaining Tokens
*
*   e18 for every value except tokens per ETH
*   
*   @dev This contract allows you to configure as many Pre-ICOs as you need.  It's a very simple contract written to give contract admin lots of dynamic options.
*   @dev Here, most features except for total supply, max tokens for sale, company reserves, and token standard features, are dynamic.  You can configure your contract
*   @dev however you want to.  
*
*   @dev IDE: Remix with Mist 0.10
*   @dev Token supply numbers are provided in 0e18 format in MIST in order to bypass MIST number format errors.
*/

pragma solidity ^0.4.23;

contract OnasanderToken
{
    using SafeMath for uint;
    
    address private wallet;                                // Address where funds are collected
    address public owner;                                  // contract owner
    string constant public name = "Onasander";
    string constant public symbol = "ONA";
    uint8 constant public decimals = 18;
    uint public totalSupply = 88000000e18;                       
    uint public totalTokensSold = 0e18;                    // total number of tokens sold to date
    uint public totalTokensSoldInThisSale = 0e18;          // total number of tokens sold in this sale
    uint public maxTokensForSale = 79200000e18;            // 90%  max tokens we can ever sale  
    uint public companyReserves = 8800000e18;              // 10%  company reserves. this is what we end up with after eco ends and burns the rest if any  
    uint public minimumGoal = 0e18;                        // hold minimum goal
    uint public tokensForSale = 0e18;                      // total number of tokens we are selling in the current sale (ICO, preICO)
    bool public saleEnabled = false;                       // enables all sales: ICO and tokensPreICO
    bool public ICOEnded = false;                          // flag checking if the ICO has completed
    bool public burned = false;                            // Excess tokens burned flag after ICO ends
    uint public tokensPerETH = 800;                        // amount of Onasander tokens you get for 1 ETH
    bool public wasGoalReached = false;                    // checks if minimum goal was reached
    address private lastBuyer;
    uint private singleToken = 1e18;

    constructor(address icoWallet) public 
    {   
        require(icoWallet != address(0), "ICO Wallet address is required.");

        owner = msg.sender;
        wallet = icoWallet;
        balances[owner] = totalSupply;  // give initial full balance to contract owner
        emit TokensMinted(owner, totalSupply);        
    }

    event ICOHasEnded();
    event SaleEnded();
    event OneTokenBugFixed();
    event ICOConfigured(uint minimumGoal);
    event TokenPerETHReset(uint amount);
    event ICOCapReached(uint amount);
    event SaleCapReached(uint amount);
    event GoalReached(uint amount);
    event Burned(uint amount);    
    event BuyTokens(address buyer, uint tokens);
    event SaleStarted(uint tokensForSale);    
    event TokensMinted(address targetAddress, uint tokens);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner, uint tokens);
    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);

    mapping(address => uint) balances;
    
    mapping(address => mapping (address => uint)) allowances;

    function balanceOf(address accountAddress) public constant returns (uint balance)
    {
        return balances[accountAddress];
    }

    function allowance(address sender, address spender) public constant returns (uint remainingAllowedAmount)
    {
        return allowances[sender][spender];
    }

    function transfer(address to, uint tokens) public returns (bool success)
    {     
        require (ICOEnded, "ICO has not ended.  Can not transfer.");
        require (balances[to] + tokens > balances[to], "Overflow is not allowed.");

        // actual transfer
        // SafeMath.sub will throw if there is not enough balance.
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        
        emit Transfer(msg.sender, to, tokens);
        return true;
    }



    function transferFrom(address from, address to, uint tokens) public returns(bool success) 
    {
        require (ICOEnded, "ICO has not ended.  Can not transfer.");
        require (balances[to] + tokens > balances[to], "Overflow is not allowed.");

        // actual transfer
        balances[from] = balances[from].sub(tokens);
        allowances[from][msg.sender] = allowances[from][msg.sender].sub(tokens); // lower the allowance by the amount of tokens 
        balances[to] = balances[to].add(tokens);
        
        emit Transfer(from, to, tokens);        
        return true;
    }

    function approve(address spender, uint tokens) public returns(bool success) 
    {          
        require (ICOEnded, "ICO has not ended.  Can not transfer.");      
        allowances[msg.sender][spender] = tokens;                
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

        // in case some investor pays by wire or credit card we will transfer him the tokens manually.
    function wirePurchase(address to, uint numberOfTokenPurchased) onlyOwner public
    {     
        require (saleEnabled, "Sale must be enabled.");
        require (!ICOEnded, "ICO already ended.");
        require (numberOfTokenPurchased > 0, "Tokens must be greater than 0.");
        require (tokensForSale > totalTokensSoldInThisSale, "There is no more tokens for sale in this sale.");
                        
        // calculate amount
        uint buyAmount = numberOfTokenPurchased;
        uint tokens = 0e18;

        // this check is not perfect as someone may want to buy more than we offer for sale and we lose a sale.
        // the best would be to calclate and sell you only the amout of tokens that is left and refund the rest of money        
        if (totalTokensSoldInThisSale.add(buyAmount) >= tokensForSale)
        {
            tokens = tokensForSale.sub(totalTokensSoldInThisSale);  // we allow you to buy only up to total tokens for sale, and refund the rest
            // need to program the refund for the rest,or do it manually.  
        }
        else
        {
            tokens = buyAmount;
        }

        // transfer only as we do not need to take the payment since we already did in wire
        require (balances[to].add(tokens) > balances[to], "Overflow is not allowed.");
        balances[to] = balances[to].add(tokens);
        balances[owner] = balances[owner].sub(tokens);
        lastBuyer = to;

        // update counts
        totalTokensSold = totalTokensSold.add(tokens);
        totalTokensSoldInThisSale = totalTokensSoldInThisSale.add(tokens);
        
        emit BuyTokens(to, tokens);
        emit Transfer(owner, to, tokens);

        isGoalReached();
        isMaxCapReached();
    }

    function buyTokens() payable public
    {        
        require (saleEnabled, "Sale must be enabled.");
        require (!ICOEnded, "ICO already ended.");
        require (tokensForSale > totalTokensSoldInThisSale, "There is no more tokens for sale in this sale.");
        require (msg.value > 0, "Must send ETH");

        // calculate amount
        uint buyAmount = SafeMath.mul(msg.value, tokensPerETH);
        uint tokens = 0e18;

        // this check is not perfect as someone may want to buy more than we offer for sale and we lose a sale.
        // the best would be to calclate and sell you only the amout of tokens that is left and refund the rest of money        
        if (totalTokensSoldInThisSale.add(buyAmount) >= tokensForSale)
        {
            tokens = tokensForSale.sub(totalTokensSoldInThisSale);  // we allow you to buy only up to total tokens for sale, and refund the rest

            // need to program the refund for the rest
        }
        else
        {
            tokens = buyAmount;
        }

        // buy
        require (balances[msg.sender].add(tokens) > balances[msg.sender], "Overflow is not allowed.");
        balances[msg.sender] = balances[msg.sender].add(tokens);
        balances[owner] = balances[owner].sub(tokens);
        lastBuyer = msg.sender;

        // take the money out right away
        wallet.transfer(msg.value);

        // update counts
        totalTokensSold = totalTokensSold.add(tokens);
        totalTokensSoldInThisSale = totalTokensSoldInThisSale.add(tokens);
        
        emit BuyTokens(msg.sender, tokens);
        emit Transfer(owner, msg.sender, tokens);

        isGoalReached();
        isMaxCapReached();
    }

    // Fallback function. Used for buying tokens from contract owner by simply
    // sending Ethers to contract.
    function() public payable 
    {
        // we buy tokens using whatever ETH was sent in
        buyTokens();
    }

    // Called when ICO is closed. Burns the remaining tokens except the tokens reserved
    // Must be called by the owner to trigger correct transfer event
    function burnRemainingTokens() public onlyOwner
    {
        require (!burned, "Remaining tokens have been burned already.");
        require (ICOEnded, "ICO has not ended yet.");

        uint difference = balances[owner].sub(companyReserves); 

        if (wasGoalReached)
        {
            totalSupply = totalSupply.sub(difference);
            balances[owner] = companyReserves;
        }
        else
        {
            // in case we did not reach the goal, we burn all tokens except tokens purchased.
            totalSupply = totalTokensSold;
            balances[owner] = 0e18;
        }

        burned = true;

        emit Transfer(owner, address(0), difference);    // this is run in order to update token holders in the website
        emit Burned(difference);        
    }

    modifier onlyOwner() 
    {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) onlyOwner public
    {
        address preOwner = owner;        
        owner = newOwner;

        uint previousBalance = balances[preOwner];

        // transfer balance 
        balances[newOwner] = balances[newOwner].add(previousBalance);
        balances[preOwner] = 0;

        //emit Transfer(preOwner, newOwner, previousBalance); // required to update the Token Holders on the network
        emit OwnershipTransferred(preOwner, newOwner, previousBalance);
    }

    // Set the number of ONAs sold per ETH 
    function setTokensPerETH(uint newRate) onlyOwner public
    {
        require (!ICOEnded, "ICO already ended.");
        require (newRate > 0, "Rate must be higher than 0.");
        tokensPerETH = newRate;
        emit TokenPerETHReset(newRate);
    }

    // Minimum goal is based on USD, not on ETH. Since we will have different dynamic prices based on the daily pirce of ETH, we
    // will need to be able to adjust our minimum goal in tokens sold, as our goal is set in tokens, not USD.
    function setMinimumGoal(uint goal) onlyOwner public
    {   
        require(goal > 0e18,"Minimum goal must be greater than 0.");
        minimumGoal = goal;

        // since we can edit the goal, we want to check if we reached the goal before in case we lowered the goal number.
        isGoalReached();

        emit ICOConfigured(goal);
    }

    function createSale(uint numberOfTokens) onlyOwner public
    {
        require (!saleEnabled, "Sale is already going on.");
        require (!ICOEnded, "ICO already ended.");
        require (totalTokensSold < maxTokensForSale, "We already sold all our tokens.");

        totalTokensSoldInThisSale = 0e18;
        uint tryingToSell = totalTokensSold.add(numberOfTokens);

        // in case we are trying to create a sale with too many tokens, we subtract and sell only what's left
        if (tryingToSell > maxTokensForSale)
        {
            tokensForSale = maxTokensForSale.sub(totalTokensSold); 
        }
        else
        {
            tokensForSale = numberOfTokens;
        }

        tryingToSell = 0e18;
        saleEnabled = true;
        emit SaleStarted(tokensForSale);
    }

    function endSale() public
    {
        if (saleEnabled)
        {
            saleEnabled = false;
            tokensForSale = 0e18;
            emit SaleEnded();
        }
    }

    function endICO() onlyOwner public
    {
        if (!ICOEnded)
        {
            // run this before end of ICO and end of last sale            
            fixTokenCalcBug();

            endSale();

            ICOEnded = true;            
            lastBuyer = address(0);
            
            emit ICOHasEnded();
        }
    }

    function isGoalReached() internal
    {
        // check if we reached the goal
        if (!wasGoalReached)
        {
            if (totalTokensSold >= minimumGoal)
            {
                wasGoalReached = true;
                emit GoalReached(minimumGoal);
            }
        }
    }

    function isMaxCapReached() internal
    {
        if (totalTokensSoldInThisSale >= tokensForSale)
        {            
            emit SaleCapReached(totalTokensSoldInThisSale);
            endSale();
        }

        if (totalTokensSold >= maxTokensForSale)
        {            
            emit ICOCapReached(maxTokensForSale);
            endICO();
        }
    }

    // This is a hack to add the lost token during final full sale. 
    function fixTokenCalcBug() internal
    {        
        require(!burned, "Fix lost token can only run before the burning of the tokens.");        
        
        if (maxTokensForSale.sub(totalTokensSold) == singleToken)
        {
            totalTokensSold = totalTokensSold.add(singleToken);
            totalTokensSoldInThisSale = totalTokensSoldInThisSale.add(singleToken);
            
            balances[lastBuyer] = balances[lastBuyer].add(singleToken);
            balances[owner] = balances[owner].sub(singleToken);

            emit Transfer(owner, lastBuyer, singleToken);
            emit OneTokenBugFixed();
        }
    }
}

library SafeMath {

  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(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
    // uint c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newRate","type":"uint256"}],"name":"setTokensPerETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensForSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensPerETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"numberOfTokenPurchased","type":"uint256"}],"name":"wirePurchase","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"endICO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ICOEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wasGoalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"accountAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensSoldInThisSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"burnRemainingTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxTokensForSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"numberOfTokens","type":"uint256"}],"name":"createSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"companyReserves","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"goal","type":"uint256"}],"name":"setMinimumGoal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minimumGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"sender","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remainingAllowedAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"icoWallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"ICOHasEnded","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleEnded","type":"event"},{"anonymous":false,"inputs":[],"name":"OneTokenBugFixed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minimumGoal","type":"uint256"}],"name":"ICOConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPerETHReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"ICOCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"SaleCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"GoalReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"BuyTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokensForSale","type":"uint256"}],"name":"SaleStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"targetAddress","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"TokensMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"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":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526a48cab98f1671af58000000600255600060035560006004556a4183409a60ffea9c0000006005556a074778f4b571c4bc000000600655600060075560006008556000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548160ff021916908315150217905550610320600a556000600b60006101000a81548160ff021916908315150217905550670de0b6b3a7640000600c553480156100cf57600080fd5b506040516020806136ec83398101806040528101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f49434f2057616c6c657420616464726573732069732072657175697265642e0081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a4273600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600254604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1506133cd8061031f6000396000f300608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461018a578063095ea7b31461021a578063116fb2a81461027f57806312aef8c3146102ac57806318160ddd146102d757806323b872dd1461030257806324562747146103875780632cc88401146103b2578063313ce567146103ff578063380d831b146104305780634f2484091461044757806362d9c2671461045e57806363b201171461048d5780636c4d0c00146104b857806370a08231146104e757806371b9b6461461053e57806373f425611461056d578063755f12db1461059c57806383408d73146105c75780638da5cb5b146105de57806395d89b411461063557806397f2f5c3146106c55780639da1b02a146106f05780639f0e7d441461071d578063a9059cbb14610748578063b2561417146107ad578063bc697319146107da578063d0febe4c14610805578063dd62ed3e1461080f578063f2fde38b14610886575b6101886108c9565b005b34801561019657600080fd5b5061019f610f9b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101df5780820151818401526020810190506101c4565b50505050905090810190601f16801561020c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022657600080fd5b50610265600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fd4565b604051808215151515815260200191505060405180910390f35b34801561028b57600080fd5b506102aa60048036038101908080359060200190929190505050611170565b005b3480156102b857600080fd5b506102c161130a565b6040518082815260200191505060405180910390f35b3480156102e357600080fd5b506102ec611310565b6040518082815260200191505060405180910390f35b34801561030e57600080fd5b5061036d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611316565b604051808215151515815260200191505060405180910390f35b34801561039357600080fd5b5061039c611762565b6040518082815260200191505060405180910390f35b3480156103be57600080fd5b506103fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611768565b005b34801561040b57600080fd5b50610414611e25565b604051808260ff1660ff16815260200191505060405180910390f35b34801561043c57600080fd5b50610445611e2a565b005b34801561045357600080fd5b5061045c611e91565b005b34801561046a57600080fd5b50610473611f9f565b604051808215151515815260200191505060405180910390f35b34801561049957600080fd5b506104a2611fb2565b6040518082815260200191505060405180910390f35b3480156104c457600080fd5b506104cd611fb8565b604051808215151515815260200191505060405180910390f35b3480156104f357600080fd5b50610528600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fcb565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b50610553612014565b604051808215151515815260200191505060405180910390f35b34801561057957600080fd5b50610582612027565b604051808215151515815260200191505060405180910390f35b3480156105a857600080fd5b506105b161203a565b6040518082815260200191505060405180910390f35b3480156105d357600080fd5b506105dc612040565b005b3480156105ea57600080fd5b506105f3612430565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064157600080fd5b5061064a612456565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561068a57808201518184015260208101905061066f565b50505050905090810190601f1680156106b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106d157600080fd5b506106da61248f565b6040518082815260200191505060405180910390f35b3480156106fc57600080fd5b5061071b60048036038101908080359060200190929190505050612495565b005b34801561072957600080fd5b50610732612727565b6040518082815260200191505060405180910390f35b34801561075457600080fd5b50610793600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061272d565b604051808215151515815260200191505060405180910390f35b3480156107b957600080fd5b506107d860048036038101908080359060200190929190505050612a69565b005b3480156107e657600080fd5b506107ef612bac565b6040518082815260200191505060405180910390f35b61080d6108c9565b005b34801561081b57600080fd5b50610870600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bb2565b6040518082815260200191505060405180910390f35b34801561089257600080fd5b506108c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c39565b005b600080600960009054906101000a900460ff161515610950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f53616c65206d75737420626520656e61626c65642e000000000000000000000081525060200191505060405180910390fd5b600960019054906101000a900460ff161515156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b600454600854111515610a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f5468657265206973206e6f206d6f726520746f6b656e7320666f722073616c6581526020017f20696e20746869732073616c652e00000000000000000000000000000000000081525060400191505060405180910390fd5b600034111515610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742073656e64204554480000000000000000000000000000000000000081525060200191505060405180910390fd5b610afa34600a54612e84565b915060009050600854610b1883600454612ebc90919063ffffffff16565b101515610b3d57610b36600454600854612ed890919063ffffffff16565b9050610b41565b8190505b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd382600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b111515610c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b610c9a81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d5181600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610e5e573d6000803e3d6000fd5b50610e7481600354612ebc90919063ffffffff16565b600381905550610e8f81600454612ebc90919063ffffffff16565b6004819055507f4aff2c4e63da20aaa26764b3e97f557bf5e95b76ddba8f97a156abbecb0818463382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3610f8f612ef1565b610f97612f6c565b5050565b6040805190810160405280600981526020017f4f6e6173616e646572000000000000000000000000000000000000000000000081525081565b6000600960019054906101000a900460ff161515611080576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f49434f20686173206e6f7420656e6465642e202043616e206e6f74207472616e81526020017f736665722e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111cc57600080fd5b600960019054906101000a900460ff16151515611251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b6000811115156112c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f52617465206d75737420626520686967686572207468616e20302e000000000081525060200191505060405180910390fd5b80600a819055507f52305729103b1933f51f949a09d2b9a1c408363a6e7b0b315a0e00464bc029d5816040518082815260200191505060405180910390a150565b60085481565b60025481565b6000600960019054906101000a900460ff1615156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f49434f20686173206e6f7420656e6465642e202043616e206e6f74207472616e81526020017f736665722e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115156114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b61150b82600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115dd82600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116af82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600a5481565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c757600080fd5b600960009054906101000a900460ff16151561184b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f53616c65206d75737420626520656e61626c65642e000000000000000000000081525060200191505060405180910390fd5b600960019054906101000a900460ff161515156118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b600083111515611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546f6b656e73206d7573742062652067726561746572207468616e20302e000081525060200191505060405180910390fd5b6004546008541115156119e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f5468657265206973206e6f206d6f726520746f6b656e7320666f722073616c6581526020017f20696e20746869732073616c652e00000000000000000000000000000000000081525060400191505060405180910390fd5b82915060009050600854611a0883600454612ebc90919063ffffffff16565b101515611a2d57611a26600454600854612ed890919063ffffffff16565b9050611a31565b8190505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ac382600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b111515611b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b611b8a81600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4181600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611cfc81600354612ebc90919063ffffffff16565b600381905550611d1781600454612ebc90919063ffffffff16565b6004819055507f4aff2c4e63da20aaa26764b3e97f557bf5e95b76ddba8f97a156abbecb0818468482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611e17612ef1565b611e1f612f6c565b50505050565b601281565b600960009054906101000a900460ff1615611e8f576000600960006101000a81548160ff02191690831515021790555060006008819055507f0bd8a3eb532e5fbcd3f5b00335f0fb42fdc11969e9af0fab7c9e71a36ae0d31a60405160405180910390a15b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eed57600080fd5b600960019054906101000a900460ff161515611f9d57611f0b61300c565b611f13611e2a565b6001600960016101000a81548160ff0219169083151502179055506000600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f89a5180095e498e64367fb3fe8a42dbd6fbcdc7b5c429a7844318fbc3be3a13760405160405180910390a15b565b600960019054906101000a900460ff1681565b60035481565b600b60009054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900460ff1681565b600960029054906101000a900460ff1681565b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209e57600080fd5b600960029054906101000a900460ff16151515612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f52656d61696e696e6720746f6b656e732068617665206265656e206275726e6581526020017f6420616c72656164792e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600960019054906101000a900460ff1615156121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f49434f20686173206e6f7420656e646564207965742e0000000000000000000081525060200191505060405180910390fd5b612243600654600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b9050600b60009054906101000a900460ff16156122e25761226f81600254612ed890919063ffffffff16565b600281905550600654600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612353565b6003546002819055506000600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600960026101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a37fd83c63197e8e676d80ab0122beba9a9d20f3828839e9a1d6fe81d242e9cd7e6e816040518082815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f4f4e41000000000000000000000000000000000000000000000000000000000081525081565b60055481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124f357600080fd5b600960009054906101000a900460ff16151515612578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53616c6520697320616c726561647920676f696e67206f6e2e0000000000000081525060200191505060405180910390fd5b600960019054906101000a900460ff161515156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b600554600354101515612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f576520616c726561647920736f6c6420616c6c206f757220746f6b656e732e0081525060200191505060405180910390fd5b600060048190555061269582600354612ebc90919063ffffffff16565b90506005548111156126c3576126b8600354600554612ed890919063ffffffff16565b6008819055506126cb565b816008819055505b600090506001600960006101000a81548160ff0219169083151502179055507fa78c547613f6306e7a70d1bd161c18a496cae1eeb8d4f9e58b60d69ad72ddf586008546040518082815260200191505060405180910390a15050565b60065481565b6000600960019054906101000a900460ff1615156127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f49434f20686173206e6f7420656e6465642e202043616e206e6f74207472616e81526020017f736665722e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115156128d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b61292282600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129b782600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ac557600080fd5b600081111515612b63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4d696e696d756d20676f616c206d75737420626520677265617465722074686181526020017f6e20302e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600781905550612b72612ef1565b7f0a64ca691d1f0b1a24c79a664d494042b0e7e40ca1495ad40ba5f3f71f23ddfd816040518082815260200191505060405180910390a150565b60075481565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c9857600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612d9281600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b836040518082815260200191505060405180910390a3505050565b600080831415612e975760009050612eb6565b8183029050818382811515612ea857fe5b04141515612eb257fe5b8090505b92915050565b60008183019050828110151515612ecf57fe5b80905092915050565b6000828211151515612ee657fe5b818303905092915050565b600b60009054906101000a900460ff161515612f6a57600754600354101515612f69576001600b60006101000a81548160ff0219169083151502179055507ffbfd8ab7c24300fa9888cd721c8565a7da56759384781283684dcf7c7c4a846b6007546040518082815260200191505060405180910390a15b5b565b600854600454101515612fbb577fb73e71437a3dd947096186742d93725c20946637d210c36562cef949e19dafae6004546040518082815260200191505060405180910390a1612fba611e2a565b5b60055460035410151561300a577ffc7d1c6bb49966a7b98ad244a063c952205109f2f0d1f8b50b5ce50d8019d9146005546040518082815260200191505060405180910390a1613009611e91565b5b565b600960029054906101000a900460ff161515156130b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001807f466978206c6f737420746f6b656e2063616e206f6e6c792072756e206265666f81526020017f726520746865206275726e696e67206f662074686520746f6b656e732e00000081525060400191505060405180910390fd5b600c546130d1600354600554612ed890919063ffffffff16565b141561339f576130ee600c54600354612ebc90919063ffffffff16565b60038190555061310b600c54600454612ebc90919063ffffffff16565b600481905550613187600c54600d6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613262600c54600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040518082815260200191505060405180910390a37fedf2ef24b74d409b6957d607578f64cbb8b4fa11afaad64eedf2de58043772fe60405160405180910390a15b5600a165627a7a72305820a473a0b54ed24bd66c59e500def6aa48b310b7d56b41369d38ebcb19672050630029000000000000000000000000c5190398f2cdf63504df8150e13a2b70ce91d24d

Deployed Bytecode

0x608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461018a578063095ea7b31461021a578063116fb2a81461027f57806312aef8c3146102ac57806318160ddd146102d757806323b872dd1461030257806324562747146103875780632cc88401146103b2578063313ce567146103ff578063380d831b146104305780634f2484091461044757806362d9c2671461045e57806363b201171461048d5780636c4d0c00146104b857806370a08231146104e757806371b9b6461461053e57806373f425611461056d578063755f12db1461059c57806383408d73146105c75780638da5cb5b146105de57806395d89b411461063557806397f2f5c3146106c55780639da1b02a146106f05780639f0e7d441461071d578063a9059cbb14610748578063b2561417146107ad578063bc697319146107da578063d0febe4c14610805578063dd62ed3e1461080f578063f2fde38b14610886575b6101886108c9565b005b34801561019657600080fd5b5061019f610f9b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101df5780820151818401526020810190506101c4565b50505050905090810190601f16801561020c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022657600080fd5b50610265600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fd4565b604051808215151515815260200191505060405180910390f35b34801561028b57600080fd5b506102aa60048036038101908080359060200190929190505050611170565b005b3480156102b857600080fd5b506102c161130a565b6040518082815260200191505060405180910390f35b3480156102e357600080fd5b506102ec611310565b6040518082815260200191505060405180910390f35b34801561030e57600080fd5b5061036d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611316565b604051808215151515815260200191505060405180910390f35b34801561039357600080fd5b5061039c611762565b6040518082815260200191505060405180910390f35b3480156103be57600080fd5b506103fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611768565b005b34801561040b57600080fd5b50610414611e25565b604051808260ff1660ff16815260200191505060405180910390f35b34801561043c57600080fd5b50610445611e2a565b005b34801561045357600080fd5b5061045c611e91565b005b34801561046a57600080fd5b50610473611f9f565b604051808215151515815260200191505060405180910390f35b34801561049957600080fd5b506104a2611fb2565b6040518082815260200191505060405180910390f35b3480156104c457600080fd5b506104cd611fb8565b604051808215151515815260200191505060405180910390f35b3480156104f357600080fd5b50610528600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fcb565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b50610553612014565b604051808215151515815260200191505060405180910390f35b34801561057957600080fd5b50610582612027565b604051808215151515815260200191505060405180910390f35b3480156105a857600080fd5b506105b161203a565b6040518082815260200191505060405180910390f35b3480156105d357600080fd5b506105dc612040565b005b3480156105ea57600080fd5b506105f3612430565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561064157600080fd5b5061064a612456565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561068a57808201518184015260208101905061066f565b50505050905090810190601f1680156106b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106d157600080fd5b506106da61248f565b6040518082815260200191505060405180910390f35b3480156106fc57600080fd5b5061071b60048036038101908080359060200190929190505050612495565b005b34801561072957600080fd5b50610732612727565b6040518082815260200191505060405180910390f35b34801561075457600080fd5b50610793600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061272d565b604051808215151515815260200191505060405180910390f35b3480156107b957600080fd5b506107d860048036038101908080359060200190929190505050612a69565b005b3480156107e657600080fd5b506107ef612bac565b6040518082815260200191505060405180910390f35b61080d6108c9565b005b34801561081b57600080fd5b50610870600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bb2565b6040518082815260200191505060405180910390f35b34801561089257600080fd5b506108c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c39565b005b600080600960009054906101000a900460ff161515610950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f53616c65206d75737420626520656e61626c65642e000000000000000000000081525060200191505060405180910390fd5b600960019054906101000a900460ff161515156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b600454600854111515610a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f5468657265206973206e6f206d6f726520746f6b656e7320666f722073616c6581526020017f20696e20746869732073616c652e00000000000000000000000000000000000081525060400191505060405180910390fd5b600034111515610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742073656e64204554480000000000000000000000000000000000000081525060200191505060405180910390fd5b610afa34600a54612e84565b915060009050600854610b1883600454612ebc90919063ffffffff16565b101515610b3d57610b36600454600854612ed890919063ffffffff16565b9050610b41565b8190505b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd382600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b111515610c48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b610c9a81600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d5181600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610e5e573d6000803e3d6000fd5b50610e7481600354612ebc90919063ffffffff16565b600381905550610e8f81600454612ebc90919063ffffffff16565b6004819055507f4aff2c4e63da20aaa26764b3e97f557bf5e95b76ddba8f97a156abbecb0818463382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3610f8f612ef1565b610f97612f6c565b5050565b6040805190810160405280600981526020017f4f6e6173616e646572000000000000000000000000000000000000000000000081525081565b6000600960019054906101000a900460ff161515611080576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f49434f20686173206e6f7420656e6465642e202043616e206e6f74207472616e81526020017f736665722e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111cc57600080fd5b600960019054906101000a900460ff16151515611251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b6000811115156112c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f52617465206d75737420626520686967686572207468616e20302e000000000081525060200191505060405180910390fd5b80600a819055507f52305729103b1933f51f949a09d2b9a1c408363a6e7b0b315a0e00464bc029d5816040518082815260200191505060405180910390a150565b60085481565b60025481565b6000600960019054906101000a900460ff1615156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f49434f20686173206e6f7420656e6465642e202043616e206e6f74207472616e81526020017f736665722e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115156114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b61150b82600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115dd82600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116af82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600a5481565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c757600080fd5b600960009054906101000a900460ff16151561184b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f53616c65206d75737420626520656e61626c65642e000000000000000000000081525060200191505060405180910390fd5b600960019054906101000a900460ff161515156118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b600083111515611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546f6b656e73206d7573742062652067726561746572207468616e20302e000081525060200191505060405180910390fd5b6004546008541115156119e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f5468657265206973206e6f206d6f726520746f6b656e7320666f722073616c6581526020017f20696e20746869732073616c652e00000000000000000000000000000000000081525060400191505060405180910390fd5b82915060009050600854611a0883600454612ebc90919063ffffffff16565b101515611a2d57611a26600454600854612ed890919063ffffffff16565b9050611a31565b8190505b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ac382600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b111515611b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b611b8a81600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4181600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611cfc81600354612ebc90919063ffffffff16565b600381905550611d1781600454612ebc90919063ffffffff16565b6004819055507f4aff2c4e63da20aaa26764b3e97f557bf5e95b76ddba8f97a156abbecb0818468482604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611e17612ef1565b611e1f612f6c565b50505050565b601281565b600960009054906101000a900460ff1615611e8f576000600960006101000a81548160ff02191690831515021790555060006008819055507f0bd8a3eb532e5fbcd3f5b00335f0fb42fdc11969e9af0fab7c9e71a36ae0d31a60405160405180910390a15b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611eed57600080fd5b600960019054906101000a900460ff161515611f9d57611f0b61300c565b611f13611e2a565b6001600960016101000a81548160ff0219169083151502179055506000600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f89a5180095e498e64367fb3fe8a42dbd6fbcdc7b5c429a7844318fbc3be3a13760405160405180910390a15b565b600960019054906101000a900460ff1681565b60035481565b600b60009054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900460ff1681565b600960029054906101000a900460ff1681565b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209e57600080fd5b600960029054906101000a900460ff16151515612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f52656d61696e696e6720746f6b656e732068617665206265656e206275726e6581526020017f6420616c72656164792e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600960019054906101000a900460ff1615156121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f49434f20686173206e6f7420656e646564207965742e0000000000000000000081525060200191505060405180910390fd5b612243600654600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b9050600b60009054906101000a900460ff16156122e25761226f81600254612ed890919063ffffffff16565b600281905550600654600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612353565b6003546002819055506000600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600960026101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a37fd83c63197e8e676d80ab0122beba9a9d20f3828839e9a1d6fe81d242e9cd7e6e816040518082815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f4f4e41000000000000000000000000000000000000000000000000000000000081525081565b60055481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124f357600080fd5b600960009054906101000a900460ff16151515612578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53616c6520697320616c726561647920676f696e67206f6e2e0000000000000081525060200191505060405180910390fd5b600960019054906101000a900460ff161515156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f49434f20616c726561647920656e6465642e000000000000000000000000000081525060200191505060405180910390fd5b600554600354101515612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f576520616c726561647920736f6c6420616c6c206f757220746f6b656e732e0081525060200191505060405180910390fd5b600060048190555061269582600354612ebc90919063ffffffff16565b90506005548111156126c3576126b8600354600554612ed890919063ffffffff16565b6008819055506126cb565b816008819055505b600090506001600960006101000a81548160ff0219169083151502179055507fa78c547613f6306e7a70d1bd161c18a496cae1eeb8d4f9e58b60d69ad72ddf586008546040518082815260200191505060405180910390a15050565b60065481565b6000600960019054906101000a900460ff1615156127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f49434f20686173206e6f7420656e6465642e202043616e206e6f74207472616e81526020017f736665722e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115156128d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f766572666c6f77206973206e6f7420616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b61292282600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129b782600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ac557600080fd5b600081111515612b63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4d696e696d756d20676f616c206d75737420626520677265617465722074686181526020017f6e20302e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600781905550612b72612ef1565b7f0a64ca691d1f0b1a24c79a664d494042b0e7e40ca1495ad40ba5f3f71f23ddfd816040518082815260200191505060405180910390a150565b60075481565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c9857600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612d9281600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b836040518082815260200191505060405180910390a3505050565b600080831415612e975760009050612eb6565b8183029050818382811515612ea857fe5b04141515612eb257fe5b8090505b92915050565b60008183019050828110151515612ecf57fe5b80905092915050565b6000828211151515612ee657fe5b818303905092915050565b600b60009054906101000a900460ff161515612f6a57600754600354101515612f69576001600b60006101000a81548160ff0219169083151502179055507ffbfd8ab7c24300fa9888cd721c8565a7da56759384781283684dcf7c7c4a846b6007546040518082815260200191505060405180910390a15b5b565b600854600454101515612fbb577fb73e71437a3dd947096186742d93725c20946637d210c36562cef949e19dafae6004546040518082815260200191505060405180910390a1612fba611e2a565b5b60055460035410151561300a577ffc7d1c6bb49966a7b98ad244a063c952205109f2f0d1f8b50b5ce50d8019d9146005546040518082815260200191505060405180910390a1613009611e91565b5b565b600960029054906101000a900460ff161515156130b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001807f466978206c6f737420746f6b656e2063616e206f6e6c792072756e206265666f81526020017f726520746865206275726e696e67206f662074686520746f6b656e732e00000081525060400191505060405180910390fd5b600c546130d1600354600554612ed890919063ffffffff16565b141561339f576130ee600c54600354612ebc90919063ffffffff16565b60038190555061310b600c54600454612ebc90919063ffffffff16565b600481905550613187600c54600d6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebc90919063ffffffff16565b600d6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613262600c54600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ed890919063ffffffff16565b600d6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040518082815260200191505060405180910390a37fedf2ef24b74d409b6957d607578f64cbb8b4fa11afaad64eedf2de58043772fe60405160405180910390a15b5600a165627a7a72305820a473a0b54ed24bd66c59e500def6aa48b310b7d56b41369d38ebcb19672050630029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000c5190398f2cdf63504df8150e13a2b70ce91d24d

-----Decoded View---------------
Arg [0] : icoWallet (address): 0xc5190398f2cdf63504dF8150E13A2B70cE91d24D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c5190398f2cdf63504df8150e13a2b70ce91d24d


Swarm Source

bzzr://a473a0b54ed24bd66c59e500def6aa48b310b7d56b41369d38ebcb1967205063
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.