ETH Price: $2,284.54 (+0.86%)

Contract

0x55d4DFfd363e396d9D4ddA7814DA6D16c384cb54
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer174643732023-06-12 13:48:11453 days ago1686577691IN
0x55d4DFfd...6c384cb54
0 ETH0.0005725916.44018744
Transfer131954442021-09-10 2:56:071093 days ago1631242567IN
0x55d4DFfd...6c384cb54
0 ETH0.00554806140
Transfer131643582021-09-05 7:22:001098 days ago1630826520IN
0x55d4DFfd...6c384cb54
0 ETH0.00554806140
Transfer131643572021-09-05 7:21:311098 days ago1630826491IN
0x55d4DFfd...6c384cb54
0 ETH0.00554806140
Transfer131643412021-09-05 7:18:241098 days ago1630826304IN
0x55d4DFfd...6c384cb54
0 ETH0.00515021130
Transfer131619242021-09-04 22:31:281098 days ago1630794688IN
0x55d4DFfd...6c384cb54
0 ETH0.00680604120
Mint129628862021-08-05 4:31:441129 days ago1628137904IN
0x55d4DFfd...6c384cb54
0 ETH0.0027509748
Transfer129197172021-07-29 8:44:081136 days ago1627548248IN
0x55d4DFfd...6c384cb54
0 ETH0.0006899428
Transfer128683222021-07-21 6:52:521144 days ago1626850372IN
0x55d4DFfd...6c384cb54
0 ETH0.0004102312
Transfer126901722021-06-23 11:41:061172 days ago1624448466IN
0x55d4DFfd...6c384cb54
0 ETH0.000443118
Transfer126572802021-06-18 8:04:121177 days ago1624003452IN
0x55d4DFfd...6c384cb54
0 ETH0.0004360511
Transfer126496822021-06-17 4:08:501178 days ago1623902930IN
0x55d4DFfd...6c384cb54
0 ETH0.0004796512.1
Transfer125661492021-06-04 5:44:341191 days ago1622785474IN
0x55d4DFfd...6c384cb54
0 ETH0.0008718322
Transfer125661492021-06-04 5:44:341191 days ago1622785474IN
0x55d4DFfd...6c384cb54
0 ETH0.000872122
Transfer124761602021-05-21 6:42:391205 days ago1621579359IN
0x55d4DFfd...6c384cb54
0 ETH0.0016010140.4
Transfer124759122021-05-21 5:46:401205 days ago1621576000IN
0x55d4DFfd...6c384cb54
0 ETH0.0016252841
Transfer124131722021-05-11 12:35:141215 days ago1620736514IN
0x55d4DFfd...6c384cb54
0 ETH0.01747253308
Transfer123204922021-04-27 5:29:451229 days ago1619501385IN
0x55d4DFfd...6c384cb54
0 ETH0.002155738
Transfer123204902021-04-27 5:29:281229 days ago1619501368IN
0x55d4DFfd...6c384cb54
0 ETH0.002155738
Transfer123204902021-04-27 5:29:281229 days ago1619501368IN
0x55d4DFfd...6c384cb54
0 ETH0.002155738
Transfer123204882021-04-27 5:28:481229 days ago1619501328IN
0x55d4DFfd...6c384cb54
0 ETH0.002155738
Transfer123204852021-04-27 5:28:161229 days ago1619501296IN
0x55d4DFfd...6c384cb54
0 ETH0.0021552438
Transfer123204852021-04-27 5:28:161229 days ago1619501296IN
0x55d4DFfd...6c384cb54
0 ETH0.002155738
Transfer123204852021-04-27 5:28:161229 days ago1619501296IN
0x55d4DFfd...6c384cb54
0 ETH0.0021552438
Transfer123204832021-04-27 5:27:551229 days ago1619501275IN
0x55d4DFfd...6c384cb54
0 ETH0.002155738
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JCOIN

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-16
*/

pragma solidity ^0.4.24;

// ----------------------------------------------------------------------------
// @Name SafeMath
// @Desc Math operations with safety checks that throw on error
// https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol
// ----------------------------------------------------------------------------
library SafeMath {
    
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}
// ----------------------------------------------------------------------------
// @title ERC20Basic
// @dev Simpler version of ERC20 interface
// See https://github.com/ethereum/EIPs/issues/179
// ----------------------------------------------------------------------------
contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}
// ----------------------------------------------------------------------------
// @title ERC20 interface
// @dev See https://github.com/ethereum/EIPs/issues/20
// ----------------------------------------------------------------------------
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool); 
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
// ----------------------------------------------------------------------------
// @title Basic token
// @dev Basic version of StandardToken, with no allowances.
// ----------------------------------------------------------------------------
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    uint256 totalSupply_;

    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
    
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }
}
// ----------------------------------------------------------------------------
// @title Ownable
// ----------------------------------------------------------------------------
contract Ownable {

    address public owner;
    address public operator;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event OperatorTransferred(address indexed previousOperator, address indexed newOperator);

    constructor() public {
        owner    = msg.sender;
        operator = msg.sender;
    }

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

    function transferOwnership(address _newOwner) external onlyOwner {
        require(_newOwner != address(0));
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
  
    function transferOperator(address _newOperator) external onlyOwner {
        require(_newOperator != address(0));
        emit OperatorTransferred(operator, _newOperator);
        operator = _newOperator;
    }
}
// ----------------------------------------------------------------------------
// @title BlackList
// @dev Base contract which allows children to implement an emergency stop mechanism.
// ----------------------------------------------------------------------------
contract BlackList is Ownable {

    event Lock(address indexed LockedAddress);
    event Unlock(address indexed UnLockedAddress);

    mapping( address => bool ) public blackList;

    modifier CheckBlackList { require(blackList[msg.sender] != true); _; }

    function SetLockAddress(address _lockAddress) external onlyOwnerOrOperator returns (bool) {
        require(_lockAddress != address(0));
        require(_lockAddress != owner);
        require(blackList[_lockAddress] != true);
        
        blackList[_lockAddress] = true;
        
        emit Lock(_lockAddress);

        return true;
    }

    function UnLockAddress(address _unlockAddress) external onlyOwner returns (bool) {
        require(blackList[_unlockAddress] != false);
        
        blackList[_unlockAddress] = false;
        
        emit Unlock(_unlockAddress);

        return true;
    }
}
// ----------------------------------------------------------------------------
// @title Pausable
// @dev Base contract which allows children to implement an emergency stop mechanism.
// ----------------------------------------------------------------------------
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;

    modifier whenNotPaused() { require(!paused); _; }
    modifier whenPaused() { require(paused); _; }

    function pause() onlyOwnerOrOperator whenNotPaused public {
        paused = true;
        emit Pause();
    }

    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }
}
// ----------------------------------------------------------------------------
// @title Standard ERC20 token
// @dev Implementation of the basic standard token.
// https://github.com/ethereum/EIPs/issues/20
// ----------------------------------------------------------------------------
contract StandardToken is ERC20, BasicToken {
  
    mapping (address => mapping (address => uint256)) internal allowed;

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    
        emit Transfer(_from, _to, _value);
        emit Approval(_from, msg.sender, allowed[_from][msg.sender]);
    
        return true;
    }

    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
    
        emit Approval(msg.sender, _spender, _value);
    
        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }

    function increaseApproval(address _spender, uint256 _addedValue) public returns (bool) {
        allowed[msg.sender][_spender] = (allowed[msg.sender][_spender].add(_addedValue));
    
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    
        return true;
    }

    function decreaseApproval(address _spender, uint256 _subtractedValue) public returns (bool) {
        uint256 oldValue = allowed[msg.sender][_spender];
    
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
    
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
}
// ----------------------------------------------------------------------------
// @title MultiTransfer Token
// @dev Only Admin
// ----------------------------------------------------------------------------
contract MultiTransferToken is StandardToken, Ownable {

    function MultiTransfer(address[] _to, uint256[] _amount) onlyOwner public returns (bool) {
        require(_to.length == _amount.length);

        uint256 ui;
        uint256 amountSum = 0;
    
        for (ui = 0; ui < _to.length; ui++) {
            require(_to[ui] != address(0));

            amountSum = amountSum.add(_amount[ui]);
        }

        require(amountSum <= balances[msg.sender]);

        for (ui = 0; ui < _to.length; ui++) {
            balances[msg.sender] = balances[msg.sender].sub(_amount[ui]);
            balances[_to[ui]] = balances[_to[ui]].add(_amount[ui]);
        
            emit Transfer(msg.sender, _to[ui], _amount[ui]);
        }
    
        return true;
    }
}
// ----------------------------------------------------------------------------
// @title Burnable Token
// @dev Token that can be irreversibly burned (destroyed).
// ----------------------------------------------------------------------------
contract BurnableToken is StandardToken, Ownable {

    event BurnAdminAmount(address indexed burner, uint256 value);

    function burnAdminAmount(uint256 _value) onlyOwner public {
        require(_value <= balances[msg.sender]);

        balances[msg.sender] = balances[msg.sender].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
    
        emit BurnAdminAmount(msg.sender, _value);
        emit Transfer(msg.sender, address(0), _value);
    }
}
// ----------------------------------------------------------------------------
// @title Mintable token
// @dev Simple ERC20 Token example, with mintable token creation
// Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
// ----------------------------------------------------------------------------
contract MintableToken is StandardToken, Ownable {
    event Mint(address indexed to, uint256 amount);
    event MintFinished();

    bool public mintingFinished = false;

    modifier canMint() { require(!mintingFinished); _; }

    function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
        totalSupply_ = totalSupply_.add(_amount);
        balances[_to] = balances[_to].add(_amount);
    
        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);
    
        return true;
    }

    function finishMinting() onlyOwner canMint public returns (bool) {
        mintingFinished = true;
        emit MintFinished();
        return true;
    }
}
// ----------------------------------------------------------------------------
// @title Pausable token
// @dev StandardToken modified with pausable transfers.
// ----------------------------------------------------------------------------
contract PausableToken is StandardToken, Pausable, BlackList {

    function transfer(address _to, uint256 _value) public whenNotPaused CheckBlackList returns (bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused CheckBlackList returns (bool) {
        require(blackList[_from] != true);
        require(blackList[_to] != true);

        return super.transferFrom(_from, _to, _value);
    }

    function approve(address _spender, uint256 _value) public whenNotPaused CheckBlackList returns (bool) {
        return super.approve(_spender, _value);
    }

    function increaseApproval(address _spender, uint _addedValue) public whenNotPaused CheckBlackList returns (bool success) {
        return super.increaseApproval(_spender, _addedValue);
    }

    function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused CheckBlackList returns (bool success) {
        return super.decreaseApproval(_spender, _subtractedValue);
    }
}
// ----------------------------------------------------------------------------
// @Project Jcoin
// ----------------------------------------------------------------------------
contract JCOIN is PausableToken, MintableToken, BurnableToken, MultiTransferToken {
    string public name = "JCOIN";
    string public symbol = "JCO";
    uint256 public decimals = 18;
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"MultiTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOperator","type":"address"}],"name":"transferOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"blackList","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"operator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burnAdminAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","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":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_unlockAddress","type":"address"}],"name":"UnLockAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_lockAddress","type":"address"}],"name":"SetLockAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","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":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"BurnAdminAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"LockedAddress","type":"address"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"UnLockedAddress","type":"address"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOperator","type":"address"},{"indexed":true,"name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040526000600460146101000a81548160ff0219169083151502179055506000600660006101000a81548160ff0219169083151502179055506040805190810160405280600581526020017f4a434f494e000000000000000000000000000000000000000000000000000000815250600790805190602001906200008792919062000163565b506040805190810160405280600381526020017f4a434f000000000000000000000000000000000000000000000000000000000081525060089080519060200190620000d592919062000163565b50601260095533600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000212565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001a657805160ff1916838001178555620001d7565b82800160010185558215620001d7579182015b82811115620001d6578251825591602001919060010190620001b9565b5b509050620001e69190620001ea565b5090565b6200020f91905b808211156200020b576000816000905550600101620001f1565b5090565b90565b612d7680620002226000396000f300608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461015957806306fdde03146101885780630896937e14610218578063095ea7b3146102d957806318160ddd1461033e57806323b872dd1461036957806329605e77146103ee578063313ce567146104315780633f4ba83a1461045c57806340c10f19146104735780634838d165146104d8578063570ca735146105335780635c975abb1461058a57806366188463146105b957806370a082311461061e57806376227f3b146106755780637d64bcb4146106a25780638456cb59146106d15780638da5cb5b146106e857806395d89b411461073f578063a9059cbb146107cf578063c201df9714610834578063c286f3d91461088f578063d73dd623146108ea578063dd62ed3e1461094f578063f2fde38b146109c6575b600080fd5b34801561016557600080fd5b5061016e610a09565b604051808215151515815260200191505060405180910390f35b34801561019457600080fd5b5061019d610a1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101dd5780820151818401526020810190506101c2565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022457600080fd5b506102bf6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610aba565b604051808215151515815260200191505060405180910390f35b3480156102e557600080fd5b50610324600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e52565b604051808215151515815260200191505060405180910390f35b34801561034a57600080fd5b50610353610ee2565b6040518082815260200191505060405180910390f35b34801561037557600080fd5b506103d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eec565b604051808215151515815260200191505060405180910390f35b3480156103fa57600080fd5b5061042f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061103e565b005b34801561043d57600080fd5b50610446611196565b6040518082815260200191505060405180910390f35b34801561046857600080fd5b5061047161119c565b005b34801561047f57600080fd5b506104be600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061125c565b604051808215151515815260200191505060405180910390f35b3480156104e457600080fd5b50610519600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611442565b604051808215151515815260200191505060405180910390f35b34801561053f57600080fd5b50610548611462565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059657600080fd5b5061059f611488565b604051808215151515815260200191505060405180910390f35b3480156105c557600080fd5b50610604600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149b565b604051808215151515815260200191505060405180910390f35b34801561062a57600080fd5b5061065f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061152b565b6040518082815260200191505060405180910390f35b34801561068157600080fd5b506106a060048036038101908080359060200190929190505050611573565b005b3480156106ae57600080fd5b506106b7611781565b604051808215151515815260200191505060405180910390f35b3480156106dd57600080fd5b506106e6611849565b005b3480156106f457600080fd5b506106fd611962565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074b57600080fd5b50610754611988565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610794578082015181840152602081019050610779565b50505050905090810190601f1680156107c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107db57600080fd5b5061081a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a26565b604051808215151515815260200191505060405180910390f35b34801561084057600080fd5b50610875600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ab6565b604051808215151515815260200191505060405180910390f35b34801561089b57600080fd5b506108d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c18565b604051808215151515815260200191505060405180910390f35b3480156108f657600080fd5b50610935600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e6b565b604051808215151515815260200191505060405180910390f35b34801561095b57600080fd5b506109b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611efb565b6040518082815260200191505060405180910390f35b3480156109d257600080fd5b50610a07600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f82565b005b600660009054906101000a900460ff1681565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ab25780601f10610a8757610100808354040283529160200191610ab2565b820191906000526020600020905b815481529060010190602001808311610a9557829003601f168201915b505050505081565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b1b57600080fd5b83518551141515610b2b57600080fd5b60009050600091505b8451821015610bc957600073ffffffffffffffffffffffffffffffffffffffff168583815181101515610b6357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515610b9057600080fd5b610bba8483815181101515610ba157fe5b90602001906020020151826120da90919063ffffffff16565b90508180600101925050610b34565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515610c1657600080fd5b600091505b8451821015610e4657610c8c8483815181101515610c3557fe5b906020019060200201516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d4d8483815181101515610cdf57fe5b906020019060200201516000808886815181101515610cfa57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808785815181101515610d5e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508482815181101515610db457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8685815181101515610e1a57fe5b906020019060200201516040518082815260200191505060405180910390a38180600101925050610c1b565b60019250505092915050565b6000600460149054906101000a900460ff16151515610e7057600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515610ed057600080fd5b610eda8383612111565b905092915050565b6000600154905090565b6000600460149054906101000a900460ff16151515610f0a57600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515610f6a57600080fd5b60011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515610fca57600080fd5b60011515600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415151561102a57600080fd5b611035848484612203565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156110d657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111f857600080fd5b600460149054906101000a900460ff16151561121357600080fd5b6000600460146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ba57600080fd5b600660009054906101000a900460ff161515156112d657600080fd5b6112eb826001546120da90919063ffffffff16565b600181905550611342826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460149054906101000a900460ff1681565b6000600460149054906101000a900460ff161515156114b957600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415151561151957600080fd5b611523838361269e565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115cf57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561161c57600080fd5b61166d816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116c4816001546120f890919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fa0f3dea10c8bf26d7f1b6b0cf33166195f48616c562c681b49eaaa2423894d00826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117df57600080fd5b600660009054906101000a900460ff161515156117fb57600080fd5b6001600660006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118f25750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156118fd57600080fd5b600460149054906101000a900460ff1615151561191957600080fd5b6001600460146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a1e5780601f106119f357610100808354040283529160200191611a1e565b820191906000526020600020905b815481529060010190602001808311611a0157829003601f168201915b505050505081565b6000600460149054906101000a900460ff16151515611a4457600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611aa457600080fd5b611aae838361292f565b905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1457600080fd5b60001515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611b7457600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f0be774851955c26a1d6a32b13b020663a069006b4a3b643ff0b809d31826057260405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cc35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611cce57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d0a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d6757600080fd5b60011515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611dc757600080fd5b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fc1b5f12cea7c200ad495a43bf2d4c7ba1a753343c06c339093937849de84d91360405160405180910390a260019050919050565b6000600460149054906101000a900460ff16151515611e8957600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611ee957600080fd5b611ef38383612b4e565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fde57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561201a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101515156120ee57fe5b8091505092915050565b600082821115151561210657fe5b818303905092915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561224057600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561228d57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561231857600080fd5b612369826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123fc826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124cd82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156127af576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612843565b6127c283826120f890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561296c57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156129b957600080fd5b612a0a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9d826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000612bdf82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019050929150505600a165627a7a7230582087208b055cfed2fe3f27aa38b4ca0906c850ab25fe93c2125944f6b9525827cb0029

Deployed Bytecode

0x608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461015957806306fdde03146101885780630896937e14610218578063095ea7b3146102d957806318160ddd1461033e57806323b872dd1461036957806329605e77146103ee578063313ce567146104315780633f4ba83a1461045c57806340c10f19146104735780634838d165146104d8578063570ca735146105335780635c975abb1461058a57806366188463146105b957806370a082311461061e57806376227f3b146106755780637d64bcb4146106a25780638456cb59146106d15780638da5cb5b146106e857806395d89b411461073f578063a9059cbb146107cf578063c201df9714610834578063c286f3d91461088f578063d73dd623146108ea578063dd62ed3e1461094f578063f2fde38b146109c6575b600080fd5b34801561016557600080fd5b5061016e610a09565b604051808215151515815260200191505060405180910390f35b34801561019457600080fd5b5061019d610a1c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101dd5780820151818401526020810190506101c2565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022457600080fd5b506102bf6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610aba565b604051808215151515815260200191505060405180910390f35b3480156102e557600080fd5b50610324600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e52565b604051808215151515815260200191505060405180910390f35b34801561034a57600080fd5b50610353610ee2565b6040518082815260200191505060405180910390f35b34801561037557600080fd5b506103d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eec565b604051808215151515815260200191505060405180910390f35b3480156103fa57600080fd5b5061042f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061103e565b005b34801561043d57600080fd5b50610446611196565b6040518082815260200191505060405180910390f35b34801561046857600080fd5b5061047161119c565b005b34801561047f57600080fd5b506104be600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061125c565b604051808215151515815260200191505060405180910390f35b3480156104e457600080fd5b50610519600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611442565b604051808215151515815260200191505060405180910390f35b34801561053f57600080fd5b50610548611462565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059657600080fd5b5061059f611488565b604051808215151515815260200191505060405180910390f35b3480156105c557600080fd5b50610604600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061149b565b604051808215151515815260200191505060405180910390f35b34801561062a57600080fd5b5061065f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061152b565b6040518082815260200191505060405180910390f35b34801561068157600080fd5b506106a060048036038101908080359060200190929190505050611573565b005b3480156106ae57600080fd5b506106b7611781565b604051808215151515815260200191505060405180910390f35b3480156106dd57600080fd5b506106e6611849565b005b3480156106f457600080fd5b506106fd611962565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074b57600080fd5b50610754611988565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610794578082015181840152602081019050610779565b50505050905090810190601f1680156107c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107db57600080fd5b5061081a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a26565b604051808215151515815260200191505060405180910390f35b34801561084057600080fd5b50610875600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ab6565b604051808215151515815260200191505060405180910390f35b34801561089b57600080fd5b506108d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c18565b604051808215151515815260200191505060405180910390f35b3480156108f657600080fd5b50610935600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e6b565b604051808215151515815260200191505060405180910390f35b34801561095b57600080fd5b506109b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611efb565b6040518082815260200191505060405180910390f35b3480156109d257600080fd5b50610a07600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f82565b005b600660009054906101000a900460ff1681565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ab25780601f10610a8757610100808354040283529160200191610ab2565b820191906000526020600020905b815481529060010190602001808311610a9557829003601f168201915b505050505081565b6000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b1b57600080fd5b83518551141515610b2b57600080fd5b60009050600091505b8451821015610bc957600073ffffffffffffffffffffffffffffffffffffffff168583815181101515610b6357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515610b9057600080fd5b610bba8483815181101515610ba157fe5b90602001906020020151826120da90919063ffffffff16565b90508180600101925050610b34565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515610c1657600080fd5b600091505b8451821015610e4657610c8c8483815181101515610c3557fe5b906020019060200201516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d4d8483815181101515610cdf57fe5b906020019060200201516000808886815181101515610cfa57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808785815181101515610d5e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508482815181101515610db457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8685815181101515610e1a57fe5b906020019060200201516040518082815260200191505060405180910390a38180600101925050610c1b565b60019250505092915050565b6000600460149054906101000a900460ff16151515610e7057600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515610ed057600080fd5b610eda8383612111565b905092915050565b6000600154905090565b6000600460149054906101000a900460ff16151515610f0a57600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515610f6a57600080fd5b60011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515610fca57600080fd5b60011515600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415151561102a57600080fd5b611035848484612203565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156110d657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111f857600080fd5b600460149054906101000a900460ff16151561121357600080fd5b6000600460146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ba57600080fd5b600660009054906101000a900460ff161515156112d657600080fd5b6112eb826001546120da90919063ffffffff16565b600181905550611342826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460149054906101000a900460ff1681565b6000600460149054906101000a900460ff161515156114b957600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415151561151957600080fd5b611523838361269e565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115cf57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561161c57600080fd5b61166d816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116c4816001546120f890919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fa0f3dea10c8bf26d7f1b6b0cf33166195f48616c562c681b49eaaa2423894d00826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117df57600080fd5b600660009054906101000a900460ff161515156117fb57600080fd5b6001600660006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118f25750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156118fd57600080fd5b600460149054906101000a900460ff1615151561191957600080fd5b6001600460146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a1e5780601f106119f357610100808354040283529160200191611a1e565b820191906000526020600020905b815481529060010190602001808311611a0157829003601f168201915b505050505081565b6000600460149054906101000a900460ff16151515611a4457600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611aa457600080fd5b611aae838361292f565b905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1457600080fd5b60001515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611b7457600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f0be774851955c26a1d6a32b13b020663a069006b4a3b643ff0b809d31826057260405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cc35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611cce57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d0a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d6757600080fd5b60011515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611dc757600080fd5b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fc1b5f12cea7c200ad495a43bf2d4c7ba1a753343c06c339093937849de84d91360405160405180910390a260019050919050565b6000600460149054906101000a900460ff16151515611e8957600080fd5b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151515611ee957600080fd5b611ef38383612b4e565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fde57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561201a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101515156120ee57fe5b8091505092915050565b600082821115151561210657fe5b818303905092915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561224057600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561228d57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561231857600080fd5b612369826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123fc826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124cd82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156127af576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612843565b6127c283826120f890919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561296c57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156129b957600080fd5b612a0a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120f890919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9d826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000612bdf82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120da90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a360019050929150505600a165627a7a7230582087208b055cfed2fe3f27aa38b4ca0906c850ab25fe93c2125944f6b9525827cb0029

Deployed Bytecode Sourcemap

12711:191:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10616:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10616:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12800:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12800:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12800:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8654:723;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8654:723:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11956:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11956:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2603:91:0;;;;;;;;;;;;;;;;;;;;;;;11679:269;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11679:269:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4109:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12870:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12870:28:0;;;;;;;;;;;;;;;;;;;;;;;6119:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6119:105:0;;;;;;10720:314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10720:314:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4739:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4739:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3417:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5855:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5855:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12323:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12323:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3071:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3071:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9757:347;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9757:347:0;;;;;;;;;;;;;;;;;;;;;;;;;;11042:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11042:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5998:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5998:113:0;;;;;;3390:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3390:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12835:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12835:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12835:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11520:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11520:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:269;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5232:269:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4869:355;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4869:355:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12123:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12123:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7458:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7458:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3901:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3901:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10616:35;;;;;;;;;;;;;:::o;12800:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8654:723::-;8737:4;8804:10;8825:17;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;8776:7;:14;8762:3;:10;:28;8754:37;;;;;;;;8845:1;8825:21;;8873:1;8868:6;;8863:148;8881:3;:10;8876:2;:15;8863:148;;;8941:1;8922:21;;:3;8926:2;8922:7;;;;;;;;;;;;;;;;;;:21;;;;8914:30;;;;;;;;8973:26;8987:7;8995:2;8987:11;;;;;;;;;;;;;;;;;;8973:9;:13;;:26;;;;:::i;:::-;8961:38;;8893:4;;;;;;;8863:148;;;9044:8;:20;9053:10;9044:20;;;;;;;;;;;;;;;;9031:9;:33;;9023:42;;;;;;;;9088:1;9083:6;;9078:264;9096:3;:10;9091:2;:15;9078:264;;;9152:37;9177:7;9185:2;9177:11;;;;;;;;;;;;;;;;;;9152:8;:20;9161:10;9152:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;9129:8;:20;9138:10;9129:20;;;;;;;;;;;;;;;:60;;;;9224:34;9246:7;9254:2;9246:11;;;;;;;;;;;;;;;;;;9224:8;:17;9233:3;9237:2;9233:7;;;;;;;;;;;;;;;;;;9224:17;;;;;;;;;;;;;;;;:21;;:34;;;;:::i;:::-;9204:8;:17;9213:3;9217:2;9213:7;;;;;;;;;;;;;;;;;;9204:17;;;;;;;;;;;;;;;:54;;;;9309:3;9313:2;9309:7;;;;;;;;;;;;;;;;;;9288:42;;9297:10;9288:42;;;9318:7;9326:2;9318:11;;;;;;;;;;;;;;;;;;9288:42;;;;;;;;;;;;;;;;;;9108:4;;;;;;;9078:264;;;9365:4;9358:11;;8654:723;;;;;;:::o;11956:159::-;12052:4;5926:6;;;;;;;;;;;5925:7;5917:16;;;;;;;;4850:4;4825:29;;:9;:21;4835:10;4825:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;4817:38;;;;;;;;12076:31;12090:8;12100:6;12076:13;:31::i;:::-;12069:38;;11956:159;;;;:::o;2603:91::-;2647:7;2674:12;;2667:19;;2603:91;:::o;11679:269::-;11790:4;5926:6;;;;;;;;;;;5925:7;5917:16;;;;;;;;4850:4;4825:29;;:9;:21;4835:10;4825:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;4817:38;;;;;;;;11835:4;11815:24;;:9;:16;11825:5;11815:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;11807:33;;;;;;;;11877:4;11859:22;;:9;:14;11869:3;11859:14;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;11851:31;;;;;;;;11902:38;11921:5;11928:3;11933:6;11902:18;:38::i;:::-;11895:45;;11679:269;;;;;:::o;4109:214::-;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;4219:1;4195:26;;:12;:26;;;;4187:35;;;;;;;;4268:12;4238:43;;4258:8;;;;;;;;;;;4238:43;;;;;;;;;;;;4303:12;4292:8;;:23;;;;;;;;;;;;;;;;;;4109:214;:::o;12870:28::-;;;;:::o;6119:105::-;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;5977:6;;;;;;;;;;;5969:15;;;;;;;;6186:5;6177:6;;:14;;;;;;;;;;;;;;;;;;6207:9;;;;;;;;;;6119:105::o;10720:314::-;10798:4;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;10690:15;;;;;;;;;;;10689:16;10681:25;;;;;;;;10830;10847:7;10830:12;;:16;;:25;;;;:::i;:::-;10815:12;:40;;;;10882:26;10900:7;10882:8;:13;10891:3;10882:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;10866:8;:13;10875:3;10866:13;;;;;;;;;;;;;;;:42;;;;10935:3;10930:18;;;10940:7;10930:18;;;;;;;;;;;;;;;;;;10985:3;10964:34;;10981:1;10964:34;;;10990:7;10964:34;;;;;;;;;;;;;;;;;;11022:4;11015:11;;10720:314;;;;:::o;4739:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;3417:23::-;;;;;;;;;;;;;:::o;5855:26::-;;;;;;;;;;;;;:::o;12323:202::-;12435:12;5926:6;;;;;;;;;;;5925:7;5917:16;;;;;;;;4850:4;4825:29;;:9;:21;4835:10;4825:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;4817:38;;;;;;;;12467:50;12490:8;12500:16;12467:22;:50::i;:::-;12460:57;;12323:202;;;;:::o;3071:107::-;3127:7;3154:8;:16;3163:6;3154:16;;;;;;;;;;;;;;;;3147:23;;3071:107;;;:::o;9757:347::-;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;9844:8;:20;9853:10;9844:20;;;;;;;;;;;;;;;;9834:6;:30;;9826:39;;;;;;;;9901:32;9926:6;9901:8;:20;9910:10;9901:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9878:8;:20;9887:10;9878:20;;;;;;;;;;;;;;;:55;;;;9959:24;9976:6;9959:12;;:16;;:24;;;;:::i;:::-;9944:12;:39;;;;10021:10;10005:35;;;10033:6;10005:35;;;;;;;;;;;;;;;;;;10085:1;10056:40;;10065:10;10056:40;;;10089:6;10056:40;;;;;;;;;;;;;;;;;;9757:347;:::o;11042:158::-;11101:4;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;10690:15;;;;;;;;;;;10689:16;10681:25;;;;;;;;11136:4;11118:15;;:22;;;;;;;;;;;;;;;;;;11156:14;;;;;;;;;;11188:4;11181:11;;11042:158;:::o;5998:113::-;3855:5;;;;;;;;;;;3841:19;;:10;:19;;;:45;;;;3878:8;;;;;;;;;;;3864:22;;:10;:22;;;3841:45;3833:54;;;;;;;;5926:6;;;;;;;;;;;5925:7;5917:16;;;;;;;;6076:4;6067:6;;:13;;;;;;;;;;;;;;;;;;6096:7;;;;;;;;;;5998:113::o;3390:20::-;;;;;;;;;;;;;:::o;12835:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11520:151::-;11612:4;5926:6;;;;;;;;;;;5925:7;5917:16;;;;;;;;4850:4;4825:29;;:9;:21;4835:10;4825:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;4817:38;;;;;;;;11636:27;11651:3;11656:6;11636:14;:27::i;:::-;11629:34;;11520:151;;;;:::o;5232:269::-;5307:4;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;5361:5;5332:34;;:9;:25;5342:14;5332:25;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;5324:43;;;;;;;;5416:5;5388:9;:25;5398:14;5388:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5454:14;5447:22;;;;;;;;;;;;5489:4;5482:11;;5232:269;;;:::o;4869:355::-;4953:4;3855:5;;;;;;;;;;;3841:19;;:10;:19;;;:45;;;;3878:8;;;;;;;;;;;3864:22;;:10;:22;;;3841:45;3833:54;;;;;;;;5002:1;4978:26;;:12;:26;;;;4970:35;;;;;;;;5040:5;;;;;;;;;;;5024:21;;:12;:21;;;;5016:30;;;;;;;;5092:4;5065:31;;:9;:23;5075:12;5065:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;5057:40;;;;;;;;5144:4;5118:9;:23;5128:12;5118:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;5179:12;5174:18;;;;;;;;;;;;5212:4;5205:11;;4869:355;;;:::o;12123:192::-;12230:12;5926:6;;;;;;;;;;;5925:7;5917:16;;;;;;;;4850:4;4825:29;;:9;:21;4835:10;4825:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;4817:38;;;;;;;;12262:45;12285:8;12295:11;12262:22;:45::i;:::-;12255:52;;12123:192;;;;:::o;7458:134::-;7532:7;7559;:15;7567:6;7559:15;;;;;;;;;;;;;;;:25;7575:8;7559:25;;;;;;;;;;;;;;;;7552:32;;7458:134;;;;:::o;3901:198::-;3782:5;;;;;;;;;;;3768:19;;:10;:19;;;3760:28;;;;;;;;4006:1;3985:23;;:9;:23;;;;3977:32;;;;;;;;4053:9;4025:38;;4046:5;;;;;;;;;;;4025:38;;;;;;;;;;;;4082:9;4074:5;;:17;;;;;;;;;;;;;;;;;;3901:198;:::o;851:147::-;909:7;929:9;945:1;941;:5;929:17;;969:1;964;:6;;957:14;;;;;;989:1;982:8;;851:147;;;;;:::o;720:123::-;778:7;810:1;805;:6;;798:14;;;;;;834:1;830;:5;823:12;;720:123;;;;:::o;7232:218::-;7299:4;7348:6;7316:7;:19;7324:10;7316:19;;;;;;;;;;;;;;;:29;7336:8;7316:29;;;;;;;;;;;;;;;:38;;;;7397:8;7376:38;;7385:10;7376:38;;;7407:6;7376:38;;;;;;;;;;;;;;;;;;7438:4;7431:11;;7232:218;;;;:::o;6653:571::-;6735:4;6775:1;6760:17;;:3;:17;;;;6752:26;;;;;;;;6807:8;:15;6816:5;6807:15;;;;;;;;;;;;;;;;6797:6;:25;;6789:34;;;;;;;;6852:7;:14;6860:5;6852:14;;;;;;;;;;;;;;;:26;6867:10;6852:26;;;;;;;;;;;;;;;;6842:6;:36;;6834:45;;;;;;;;6910:27;6930:6;6910:8;:15;6919:5;6910:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;6892:8;:15;6901:5;6892:15;;;;;;;;;;;;;;;:45;;;;6964:25;6982:6;6964:8;:13;6973:3;6964:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;6948:8;:13;6957:3;6948:13;;;;;;;;;;;;;;;:41;;;;7029:38;7060:6;7029:7;:14;7037:5;7029:14;;;;;;;;;;;;;;;:26;7044:10;7029:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;7000:7;:14;7008:5;7000:14;;;;;;;;;;;;;;;:26;7015:10;7000:26;;;;;;;;;;;;;;;:67;;;;7105:3;7089:28;;7098:5;7089:28;;;7110:6;7089:28;;;;;;;;;;;;;;;;;;7149:10;7133:55;;7142:5;7133:55;;;7161:7;:14;7169:5;7161:14;;;;;;;;;;;;;;;:26;7176:10;7161:26;;;;;;;;;;;;;;;;7133:55;;;;;;;;;;;;;;;;;;7212:4;7205:11;;6653:571;;;;;:::o;7905:468::-;7991:4;8008:16;8027:7;:19;8035:10;8027:19;;;;;;;;;;;;;;;:29;8047:8;8027:29;;;;;;;;;;;;;;;;8008:48;;8096:8;8077:16;:27;8073:188;;;8153:1;8121:7;:19;8129:10;8121:19;;;;;;;;;;;;;;;:29;8141:8;8121:29;;;;;;;;;;;;;;;:33;;;;8073:188;;;8219:30;8232:16;8219:8;:12;;:30;;;;:::i;:::-;8187:7;:19;8195:10;8187:19;;;;;;;;;;;;;;;:29;8207:8;8187:29;;;;;;;;;;;;;;;:62;;;;8073:188;8303:8;8282:61;;8291:10;8282:61;;;8313:7;:19;8321:10;8313:19;;;;;;;;;;;;;;;:29;8333:8;8313:29;;;;;;;;;;;;;;;;8282:61;;;;;;;;;;;;;;;;;;8361:4;8354:11;;7905:468;;;;;:::o;2702:361::-;2765:4;2805:1;2790:17;;:3;:17;;;;2782:26;;;;;;;;2837:8;:20;2846:10;2837:20;;;;;;;;;;;;;;;;2827:6;:30;;2819:39;;;;;;;;2894:32;2919:6;2894:8;:20;2903:10;2894:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;2871:8;:20;2880:10;2871:20;;;;;;;;;;;;;;;:55;;;;2953:25;2971:6;2953:8;:13;2962:3;2953:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;2937:8;:13;2946:3;2937:13;;;;;;;;;;;;;;;:41;;;;3021:3;3000:33;;3009:10;3000:33;;;3026:6;3000:33;;;;;;;;;;;;;;;;;;3051:4;3044:11;;2702:361;;;;:::o;7600:297::-;7681:4;7731:46;7765:11;7731:7;:19;7739:10;7731:19;;;;;;;;;;;;;;;:29;7751:8;7731:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;7698:7;:19;7706:10;7698:19;;;;;;;;;;;;;;;:29;7718:8;7698:29;;;;;;;;;;;;;;;:80;;;;7821:8;7800:61;;7809:10;7800:61;;;7831:7;:19;7839:10;7831:19;;;;;;;;;;;;;;;:29;7851:8;7831:29;;;;;;;;;;;;;;;;7800:61;;;;;;;;;;;;;;;;;;7885:4;7878:11;;7600:297;;;;:::o

Swarm Source

bzzr://87208b055cfed2fe3f27aa38b4ca0906c850ab25fe93c2125944f6b9525827cb

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.