ETH Price: $3,103.63 (+1.15%)
Gas: 13 Gwei

Token

GEM (GEM)
 

Overview

Max Total Supply

1,000,000,000 GEM

Holders

306

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
66,830.213317567538635822 GEM

Value
$0.00
0x9d8812e34fcd091e2e3ee792bbe0449e31bfab55
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:
GEMToken

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : gemtoken.sol
// SPDX-License-Identifier:MIT

pragma solidity ^0.8.10;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract GEMToken is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "GEM";
    string private _symbol = "GEM";
    uint8 private _decimals = 18; 

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint256 public _buyTreasuryFee = 0;
    uint256 public _sellTreasuryFee = 250;

    address public Treasury;
    
    uint256 feedenominator = 1000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

    uint256 public swapThreshold = 500000 * 10**_decimals;

    bool public swapEnabled = true;
    bool public swapbylimit = true;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool inSwap;
    
    modifier onlyGuard() {
        require(msg.sender == Treasury,"Error: Invalid Caller!");
        _;
    }

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = IDexSwapFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        dexRouter = _dexRouter;

        Treasury = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        isMarketPair[address(dexPair)] = true;

        _allowances[address(this)][address(dexRouter)] = ~uint256(0);
        _allowances[address(this)][address(dexPair)] = ~uint256(0);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (overMinimumTokenBalance && !inSwap && !isMarketPair[sender] && swapEnabled) {
                swapBack(contractTokenBalance);
            }
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(_buyTreasuryFee).div(feedenominator);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(_sellTreasuryFee).div(feedenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

       if(amountReceived > 0) payable(Treasury).transfer(amountReceived);

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external onlyGuard { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,address recipient,uint _amount) external onlyGuard {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function setFee(uint _buyFee, uint _sellFee) external onlyOwner {    
        _buyTreasuryFee = _buyFee;
        _sellTreasuryFee = _sellFee;
    }

    function setDeno(uint _deno) external onlyOwner {    
        feedenominator = _deno;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }
    
    function setTreasuryWallet(address _newWallet) external onlyOwner {
        Treasury = _newWallet;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
    }

    function setSwapBackSettings(bool _enabled, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
    }

    function setSwapthreshold(uint _threshold) external onlyOwner {
        swapThreshold = _threshold;
    }

    function setManualRouter(address _router) external onlyOwner {
        dexRouter = IDexSwapRouter(_router);
    }

    function setManualPair(address _pair) external onlyOwner {
        dexPair = _pair;
    }


}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deno","type":"uint256"}],"name":"setDeno","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600381526020017f47454d0000000000000000000000000000000000000000000000000000000000815250600190816200004a919062000b19565b506040518060400160405280600381526020017f47454d00000000000000000000000000000000000000000000000000000000008152506002908162000091919062000b19565b506012600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250600060045560fa6005556103e8600755600360009054906101000a900460ff16600a62000145919062000d90565b633b9aca0062000156919062000de1565b600c55600360009054906101000a900460ff16600a62000177919062000d90565b6207a12062000187919062000de1565b600d556001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550348015620001cd57600080fd5b50620001ee620001e2620007d360201b60201c565b620007db60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000279919062000e96565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000e96565b6040518363ffffffff1660e01b81526004016200032692919062000ed9565b6020604051808303816000875af115801562000346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036c919062000e96565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c54600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620007c4919062000f17565b60405180910390a35062000f34565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200092157607f821691505b602082108103620009375762000936620008d9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000962565b620009ad868362000962565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009fa620009f4620009ee84620009c5565b620009cf565b620009c5565b9050919050565b6000819050919050565b62000a1683620009d9565b62000a2e62000a258262000a01565b8484546200096f565b825550505050565b600090565b62000a4562000a36565b62000a5281848462000a0b565b505050565b5b8181101562000a7a5762000a6e60008262000a3b565b60018101905062000a58565b5050565b601f82111562000ac95762000a93816200093d565b62000a9e8462000952565b8101602085101562000aae578190505b62000ac662000abd8562000952565b83018262000a57565b50505b505050565b600082821c905092915050565b600062000aee6000198460080262000ace565b1980831691505092915050565b600062000b09838362000adb565b9150826002028217905092915050565b62000b24826200089f565b67ffffffffffffffff81111562000b405762000b3f620008aa565b5b62000b4c825462000908565b62000b5982828562000a7e565b600060209050601f83116001811462000b91576000841562000b7c578287015190505b62000b88858262000afb565b86555062000bf8565b601f19841662000ba1866200093d565b60005b8281101562000bcb5784890151825560018201915060208501945060208101905062000ba4565b8683101562000beb578489015162000be7601f89168262000adb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c8e5780860481111562000c665762000c6562000c00565b5b600185161562000c765780820291505b808102905062000c868562000c2f565b945062000c46565b94509492505050565b60008262000ca9576001905062000d7c565b8162000cb9576000905062000d7c565b816001811462000cd2576002811462000cdd5762000d13565b600191505062000d7c565b60ff84111562000cf25762000cf162000c00565b5b8360020a91508482111562000d0c5762000d0b62000c00565b5b5062000d7c565b5060208310610133831016604e8410600b841016171562000d4d5782820a90508381111562000d475762000d4662000c00565b5b62000d7c565b62000d5c848484600162000c3c565b9250905081840481111562000d765762000d7562000c00565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d9d82620009c5565b915062000daa8362000d83565b925062000dd97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c97565b905092915050565b600062000dee82620009c5565b915062000dfb83620009c5565b925082820262000e0b81620009c5565b9150828204841483151762000e255762000e2462000c00565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e5e8262000e31565b9050919050565b62000e708162000e51565b811462000e7c57600080fd5b50565b60008151905062000e908162000e65565b92915050565b60006020828403121562000eaf5762000eae62000e2c565b5b600062000ebf8482850162000e7f565b91505092915050565b62000ed38162000e51565b82525050565b600060408201905062000ef0600083018562000ec8565b62000eff602083018462000ec8565b9392505050565b62000f1181620009c5565b82525050565b600060208201905062000f2e600083018462000f06565b92915050565b60805160a051613b8b62000f68600039600081816109bb0152610b13015260008181610ae70152610b3f0152613b8b6000f3fe6080604052600436106102295760003560e01c806370a0823111610123578063cea9d26f116100ab578063e6b2603b1161006f578063e6b2603b1461083c578063e9fd339414610853578063f242ab411461087e578063f2fde38b146108a9578063f71b9bbf146108d257610230565b8063cea9d26f14610759578063d4e43fb314610782578063d628df9c146107ab578063dd62ed3e146107d6578063df8408fe1461081357610230565b8063a457c2d7116100f2578063a457c2d714610664578063a8602fea146106a1578063a9059cbb146106ca578063adc0d09214610707578063c16dd4a41461073057610230565b806370a08231146105ba578063715018a6146105f75780638da5cb5b1461060e57806395d89b411461063957610230565b80632b112e49116101b15780635342acb4116101755780635342acb4146104d5578063563df32f1461051257806359fac5171461053d578063618cd5e6146105665780636ddd17131461058f57610230565b80632b112e49146103dc578063313ce5671461040757806339509351146104325780633ecad2711461046f57806352f7c988146104ac57610230565b8063095ea7b3116101f8578063095ea7b3146102e157806318160ddd1461031e57806323b872dd1461034957806324fcf8cf1461038657806327c8f835146103b157610230565b80630445b6671461023557806306fdde03146102605780630758d9241461028b5780630930907b146102b657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108fb565b6040516102579190612bea565b60405180910390f35b34801561026c57600080fd5b50610275610901565b6040516102829190612c95565b60405180910390f35b34801561029757600080fd5b506102a0610993565b6040516102ad9190612d36565b60405180910390f35b3480156102c257600080fd5b506102cb6109b9565b6040516102d89190612d72565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612dea565b6109dd565b6040516103159190612e45565b60405180910390f35b34801561032a57600080fd5b506103336109fb565b6040516103409190612bea565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612e60565b610a05565b60405161037d9190612e45565b60405180910390f35b34801561039257600080fd5b5061039b610adf565b6040516103a89190612bea565b60405180910390f35b3480156103bd57600080fd5b506103c6610ae5565b6040516103d39190612d72565b60405180910390f35b3480156103e857600080fd5b506103f1610b09565b6040516103fe9190612bea565b60405180910390f35b34801561041357600080fd5b5061041c610b87565b6040516104299190612ecf565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612dea565b610b9e565b6040516104669190612e45565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612eea565b610c51565b6040516104a39190612e45565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612f17565b610c71565b005b3480156104e157600080fd5b506104fc60048036038101906104f79190612eea565b610cff565b6040516105099190612e45565b60405180910390f35b34801561051e57600080fd5b50610527610d1f565b6040516105349190612d72565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190612eea565b610d45565b005b34801561057257600080fd5b5061058d60048036038101906105889190612f57565b610e05565b005b34801561059b57600080fd5b506105a4610e8b565b6040516105b19190612e45565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612eea565b610e9e565b6040516105ee9190612bea565b60405180910390f35b34801561060357600080fd5b5061060c610ee7565b005b34801561061a57600080fd5b50610623610f6f565b6040516106309190612d72565b60405180910390f35b34801561064557600080fd5b5061064e610f98565b60405161065b9190612c95565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190612dea565b61102a565b6040516106989190612e45565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190612eea565b6110f7565b005b3480156106d657600080fd5b506106f160048036038101906106ec9190612dea565b6111b7565b6040516106fe9190612e45565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190612f57565b6111d6565b005b34801561073c57600080fd5b5061075760048036038101906107529190612fb0565b61125c565b005b34801561076557600080fd5b50610780600480360381019061077b9190612e60565b611333565b005b34801561078e57600080fd5b506107a960048036038101906107a49190612ff0565b611505565b005b3480156107b757600080fd5b506107c06115b9565b6040516107cd9190612bea565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f89190613030565b6115bf565b60405161080a9190612bea565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612fb0565b611646565b005b34801561084857600080fd5b5061085161171d565b005b34801561085f57600080fd5b5061086861185c565b6040516108759190612e45565b60405180910390f35b34801561088a57600080fd5b5061089361186f565b6040516108a09190612d72565b60405180910390f35b3480156108b557600080fd5b506108d060048036038101906108cb9190612eea565b611895565b005b3480156108de57600080fd5b506108f960048036038101906108f49190612eea565b61198c565b005b600d5481565b6060600180546109109061309f565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061309f565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109f16109ea611a4c565b8484611a54565b6001905092915050565b6000600c54905090565b6000610a12848484611c1d565b50610ad484610a1f611a4c565b610acf85604051806060016040528060288152602001613b0960289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a85611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b600190509392505050565b60055481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610b82610b377f0000000000000000000000000000000000000000000000000000000000000000610e9e565b610b74610b637f0000000000000000000000000000000000000000000000000000000000000000610e9e565b600c5461207190919063ffffffff16565b61207190919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000610c47610bab611a4c565b84610c428560096000610bbc611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b611a54565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b610c79611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610c97610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061311c565b60405180910390fd5b81600481905550806005819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610d6b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db89061311c565b60405180910390fd5b80600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e0d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610e2b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e789061311c565b60405180910390fd5b8060078190555050565b600e60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eef611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610f0d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a9061311c565b60405180910390fd5b610f6d6000612119565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610fa79061309f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd39061309f565b80156110205780601f10610ff557610100808354040283529160200191611020565b820191906000526020600020905b81548152906001019060200180831161100357829003601f168201915b5050505050905090565b60006110ed611037611a4c565b846110e885604051806060016040528060258152602001613b316025913960096000611061611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b6001905092915050565b6110ff611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661111d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061311c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111cb6111c4611a4c565b8484611c1d565b506001905092915050565b6111de611a4c565b73ffffffffffffffffffffffffffffffffffffffff166111fc610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112499061311c565b60405180910390fd5b80600d8190555050565b611264611a4c565b73ffffffffffffffffffffffffffffffffffffffff16611282610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061311c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613188565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516024016113ef9291906131a8565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516114799190613218565b6000604051808303816000865af19150503d80600081146114b6576040519150601f19603f3d011682016040523d82523d6000602084013e6114bb565b606091505b50509050806114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f69061327b565b60405180910390fd5b50505050565b61150d611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661152b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789061311c565b60405180910390fd5b81600e60006101000a81548160ff02191690831515021790555080600e60016101000a81548160ff0219169083151502179055505050565b60045481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164e611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661166c610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b99061311c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490613188565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516117d3906132c1565b60006040518083038185875af1925050503d8060008114611810576040519150601f19603f3d011682016040523d82523d6000602084013e611815565b606091505b5050905080611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613322565b60405180910390fd5b50565b600e60019054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189d611a4c565b73ffffffffffffffffffffffffffffffffffffffff166118bb610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061311c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906133b4565b60405180910390fd5b61198981612119565b50565b611994611a4c565b73ffffffffffffffffffffffffffffffffffffffff166119b2610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ff9061311c565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba90613446565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b29906134d8565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c109190612bea565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061356a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf3906135fc565b60405180910390fd5b60008211611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d369061368e565b60405180910390fd5b600f60149054906101000a900460ff1615611d6657611d5f8484846121dd565b9050612006565b6000611d7130610e9e565b90506000600d548210159050808015611d975750600f60149054906101000a900460ff16155b8015611ded5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e055750600e60009054906101000a900460ff165b15611e1457611e13826123b0565b5b611e9d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611eec878761249e565b611f0057611efb878787612609565b611f02565b845b9050611f5681600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ff69190612bea565b60405180910390a3600193505050505b9392505050565b6000838311158290612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c9190612c95565b60405180910390fd5b506000838561206491906136dd565b9050809150509392505050565b60006120b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061200d565b905092915050565b60008082846120ca9190613711565b90508381101561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690613791565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612268826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122fd82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239d9190612bea565b60405180910390a3600190509392505050565b6001600f60146101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16156123e657600d5490505b60004790506123f48261282e565b6000612409824761207190919063ffffffff16565b9050600081111561247e57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561247c573d6000803e3d6000fd5b505b50506000600f60146101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125415750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561254f5760019050612603565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125f05750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125fe5760009050612603565b600090505b92915050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561268e5761268760075461267960045486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b905061270d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561270c576127096007546126fb60055486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b90505b5b60008111156128115761276881600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128089190612bea565b60405180910390a35b612824818461207190919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561284b5761284a6137b1565b5b6040519080825280602002602001820160405280156128795781602001602082028036833780820191505090505b5090503081600081518110612891576128906137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295c9190613824565b816001815181106129705761296f6137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129d730600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a54565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a3b95949392919061394a565b600060405180830381600087803b158015612a5557600080fd5b505af1158015612a69573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a9e9291906139a4565b60405180910390a15050565b6000808303612abc5760009050612b1e565b60008284612aca91906139d4565b9050828482612ad99190613a45565b14612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1090613ae8565b60405180910390fd5b809150505b92915050565b6000612b6683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b6e565b905092915050565b60008083118290612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac9190612c95565b60405180910390fd5b5060008385612bc49190613a45565b9050809150509392505050565b6000819050919050565b612be481612bd1565b82525050565b6000602082019050612bff6000830184612bdb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c3f578082015181840152602081019050612c24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6782612c05565b612c718185612c10565b9350612c81818560208601612c21565b612c8a81612c4b565b840191505092915050565b60006020820190508181036000830152612caf8184612c5c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612cfc612cf7612cf284612cb7565b612cd7565b612cb7565b9050919050565b6000612d0e82612ce1565b9050919050565b6000612d2082612d03565b9050919050565b612d3081612d15565b82525050565b6000602082019050612d4b6000830184612d27565b92915050565b6000612d5c82612cb7565b9050919050565b612d6c81612d51565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600080fd5b612d9b81612d51565b8114612da657600080fd5b50565b600081359050612db881612d92565b92915050565b612dc781612bd1565b8114612dd257600080fd5b50565b600081359050612de481612dbe565b92915050565b60008060408385031215612e0157612e00612d8d565b5b6000612e0f85828601612da9565b9250506020612e2085828601612dd5565b9150509250929050565b60008115159050919050565b612e3f81612e2a565b82525050565b6000602082019050612e5a6000830184612e36565b92915050565b600080600060608486031215612e7957612e78612d8d565b5b6000612e8786828701612da9565b9350506020612e9886828701612da9565b9250506040612ea986828701612dd5565b9150509250925092565b600060ff82169050919050565b612ec981612eb3565b82525050565b6000602082019050612ee46000830184612ec0565b92915050565b600060208284031215612f0057612eff612d8d565b5b6000612f0e84828501612da9565b91505092915050565b60008060408385031215612f2e57612f2d612d8d565b5b6000612f3c85828601612dd5565b9250506020612f4d85828601612dd5565b9150509250929050565b600060208284031215612f6d57612f6c612d8d565b5b6000612f7b84828501612dd5565b91505092915050565b612f8d81612e2a565b8114612f9857600080fd5b50565b600081359050612faa81612f84565b92915050565b60008060408385031215612fc757612fc6612d8d565b5b6000612fd585828601612da9565b9250506020612fe685828601612f9b565b9150509250929050565b6000806040838503121561300757613006612d8d565b5b600061301585828601612f9b565b925050602061302685828601612f9b565b9150509250929050565b6000806040838503121561304757613046612d8d565b5b600061305585828601612da9565b925050602061306685828601612da9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130b757607f821691505b6020821081036130ca576130c9613070565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613106602083612c10565b9150613111826130d0565b602082019050919050565b60006020820190508181036000830152613135816130f9565b9050919050565b7f4572726f723a20496e76616c69642043616c6c65722100000000000000000000600082015250565b6000613172601683612c10565b915061317d8261313c565b602082019050919050565b600060208201905081810360008301526131a181613165565b9050919050565b60006040820190506131bd6000830185612d63565b6131ca6020830184612bdb565b9392505050565b600081519050919050565b600081905092915050565b60006131f2826131d1565b6131fc81856131dc565b935061320c818560208601612c21565b80840191505092915050565b600061322482846131e7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613265601483612c10565b91506132708261322f565b602082019050919050565b6000602082019050818103600083015261329481613258565b9050919050565b50565b60006132ab6000836131dc565b91506132b68261329b565b600082019050919050565b60006132cc8261329e565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061330c601483612c10565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339e602683612c10565b91506133a982613342565b604082019050919050565b600060208201905081810360008301526133cd81613391565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613430602483612c10565b915061343b826133d4565b604082019050919050565b6000602082019050818103600083015261345f81613423565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c2602283612c10565b91506134cd82613466565b604082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613554602583612c10565b915061355f826134f8565b604082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e6602383612c10565b91506135f18261358a565b604082019050919050565b60006020820190508181036000830152613615816135d9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613678602983612c10565b91506136838261361c565b604082019050919050565b600060208201905081810360008301526136a78161366b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136e882612bd1565b91506136f383612bd1565b925082820390508181111561370b5761370a6136ae565b5b92915050565b600061371c82612bd1565b915061372783612bd1565b925082820190508082111561373f5761373e6136ae565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061377b601b83612c10565b915061378682613745565b602082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061381e81612d92565b92915050565b60006020828403121561383a57613839612d8d565b5b60006138488482850161380f565b91505092915050565b6000819050919050565b600061387661387161386c84613851565b612cd7565b612bd1565b9050919050565b6138868161385b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138c181612d51565b82525050565b60006138d383836138b8565b60208301905092915050565b6000602082019050919050565b60006138f78261388c565b6139018185613897565b935061390c836138a8565b8060005b8381101561393d57815161392488826138c7565b975061392f836138df565b925050600181019050613910565b5085935050505092915050565b600060a08201905061395f6000830188612bdb565b61396c602083018761387d565b818103604083015261397e81866138ec565b905061398d6060830185612d63565b61399a6080830184612bdb565b9695505050505050565b60006040820190506139b96000830185612bdb565b81810360208301526139cb81846138ec565b90509392505050565b60006139df82612bd1565b91506139ea83612bd1565b92508282026139f881612bd1565b91508282048414831517613a0f57613a0e6136ae565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5082612bd1565b9150613a5b83612bd1565b925082613a6b57613a6a613a16565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad2602183612c10565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220335fcd3ca407597c18a0ed978a5853d479da0201d79478422b309f8ce8d419c364736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806370a0823111610123578063cea9d26f116100ab578063e6b2603b1161006f578063e6b2603b1461083c578063e9fd339414610853578063f242ab411461087e578063f2fde38b146108a9578063f71b9bbf146108d257610230565b8063cea9d26f14610759578063d4e43fb314610782578063d628df9c146107ab578063dd62ed3e146107d6578063df8408fe1461081357610230565b8063a457c2d7116100f2578063a457c2d714610664578063a8602fea146106a1578063a9059cbb146106ca578063adc0d09214610707578063c16dd4a41461073057610230565b806370a08231146105ba578063715018a6146105f75780638da5cb5b1461060e57806395d89b411461063957610230565b80632b112e49116101b15780635342acb4116101755780635342acb4146104d5578063563df32f1461051257806359fac5171461053d578063618cd5e6146105665780636ddd17131461058f57610230565b80632b112e49146103dc578063313ce5671461040757806339509351146104325780633ecad2711461046f57806352f7c988146104ac57610230565b8063095ea7b3116101f8578063095ea7b3146102e157806318160ddd1461031e57806323b872dd1461034957806324fcf8cf1461038657806327c8f835146103b157610230565b80630445b6671461023557806306fdde03146102605780630758d9241461028b5780630930907b146102b657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108fb565b6040516102579190612bea565b60405180910390f35b34801561026c57600080fd5b50610275610901565b6040516102829190612c95565b60405180910390f35b34801561029757600080fd5b506102a0610993565b6040516102ad9190612d36565b60405180910390f35b3480156102c257600080fd5b506102cb6109b9565b6040516102d89190612d72565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612dea565b6109dd565b6040516103159190612e45565b60405180910390f35b34801561032a57600080fd5b506103336109fb565b6040516103409190612bea565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612e60565b610a05565b60405161037d9190612e45565b60405180910390f35b34801561039257600080fd5b5061039b610adf565b6040516103a89190612bea565b60405180910390f35b3480156103bd57600080fd5b506103c6610ae5565b6040516103d39190612d72565b60405180910390f35b3480156103e857600080fd5b506103f1610b09565b6040516103fe9190612bea565b60405180910390f35b34801561041357600080fd5b5061041c610b87565b6040516104299190612ecf565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612dea565b610b9e565b6040516104669190612e45565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612eea565b610c51565b6040516104a39190612e45565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612f17565b610c71565b005b3480156104e157600080fd5b506104fc60048036038101906104f79190612eea565b610cff565b6040516105099190612e45565b60405180910390f35b34801561051e57600080fd5b50610527610d1f565b6040516105349190612d72565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190612eea565b610d45565b005b34801561057257600080fd5b5061058d60048036038101906105889190612f57565b610e05565b005b34801561059b57600080fd5b506105a4610e8b565b6040516105b19190612e45565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612eea565b610e9e565b6040516105ee9190612bea565b60405180910390f35b34801561060357600080fd5b5061060c610ee7565b005b34801561061a57600080fd5b50610623610f6f565b6040516106309190612d72565b60405180910390f35b34801561064557600080fd5b5061064e610f98565b60405161065b9190612c95565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190612dea565b61102a565b6040516106989190612e45565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190612eea565b6110f7565b005b3480156106d657600080fd5b506106f160048036038101906106ec9190612dea565b6111b7565b6040516106fe9190612e45565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190612f57565b6111d6565b005b34801561073c57600080fd5b5061075760048036038101906107529190612fb0565b61125c565b005b34801561076557600080fd5b50610780600480360381019061077b9190612e60565b611333565b005b34801561078e57600080fd5b506107a960048036038101906107a49190612ff0565b611505565b005b3480156107b757600080fd5b506107c06115b9565b6040516107cd9190612bea565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f89190613030565b6115bf565b60405161080a9190612bea565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612fb0565b611646565b005b34801561084857600080fd5b5061085161171d565b005b34801561085f57600080fd5b5061086861185c565b6040516108759190612e45565b60405180910390f35b34801561088a57600080fd5b5061089361186f565b6040516108a09190612d72565b60405180910390f35b3480156108b557600080fd5b506108d060048036038101906108cb9190612eea565b611895565b005b3480156108de57600080fd5b506108f960048036038101906108f49190612eea565b61198c565b005b600d5481565b6060600180546109109061309f565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061309f565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109f16109ea611a4c565b8484611a54565b6001905092915050565b6000600c54905090565b6000610a12848484611c1d565b50610ad484610a1f611a4c565b610acf85604051806060016040528060288152602001613b0960289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a85611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b600190509392505050565b60055481565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610b82610b377f0000000000000000000000000000000000000000000000000000000000000000610e9e565b610b74610b637f000000000000000000000000000000000000000000000000000000000000dead610e9e565b600c5461207190919063ffffffff16565b61207190919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000610c47610bab611a4c565b84610c428560096000610bbc611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b611a54565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b610c79611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610c97610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061311c565b60405180910390fd5b81600481905550806005819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610d6b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db89061311c565b60405180910390fd5b80600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e0d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610e2b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e789061311c565b60405180910390fd5b8060078190555050565b600e60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eef611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610f0d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a9061311c565b60405180910390fd5b610f6d6000612119565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610fa79061309f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd39061309f565b80156110205780601f10610ff557610100808354040283529160200191611020565b820191906000526020600020905b81548152906001019060200180831161100357829003601f168201915b5050505050905090565b60006110ed611037611a4c565b846110e885604051806060016040528060258152602001613b316025913960096000611061611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b6001905092915050565b6110ff611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661111d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061311c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111cb6111c4611a4c565b8484611c1d565b506001905092915050565b6111de611a4c565b73ffffffffffffffffffffffffffffffffffffffff166111fc610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112499061311c565b60405180910390fd5b80600d8190555050565b611264611a4c565b73ffffffffffffffffffffffffffffffffffffffff16611282610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061311c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613188565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516024016113ef9291906131a8565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516114799190613218565b6000604051808303816000865af19150503d80600081146114b6576040519150601f19603f3d011682016040523d82523d6000602084013e6114bb565b606091505b50509050806114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f69061327b565b60405180910390fd5b50505050565b61150d611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661152b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789061311c565b60405180910390fd5b81600e60006101000a81548160ff02191690831515021790555080600e60016101000a81548160ff0219169083151502179055505050565b60045481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164e611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661166c610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b99061311c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490613188565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516117d3906132c1565b60006040518083038185875af1925050503d8060008114611810576040519150601f19603f3d011682016040523d82523d6000602084013e611815565b606091505b5050905080611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613322565b60405180910390fd5b50565b600e60019054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189d611a4c565b73ffffffffffffffffffffffffffffffffffffffff166118bb610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061311c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906133b4565b60405180910390fd5b61198981612119565b50565b611994611a4c565b73ffffffffffffffffffffffffffffffffffffffff166119b2610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ff9061311c565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba90613446565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b29906134d8565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c109190612bea565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061356a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf3906135fc565b60405180910390fd5b60008211611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d369061368e565b60405180910390fd5b600f60149054906101000a900460ff1615611d6657611d5f8484846121dd565b9050612006565b6000611d7130610e9e565b90506000600d548210159050808015611d975750600f60149054906101000a900460ff16155b8015611ded5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e055750600e60009054906101000a900460ff165b15611e1457611e13826123b0565b5b611e9d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611eec878761249e565b611f0057611efb878787612609565b611f02565b845b9050611f5681600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ff69190612bea565b60405180910390a3600193505050505b9392505050565b6000838311158290612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c9190612c95565b60405180910390fd5b506000838561206491906136dd565b9050809150509392505050565b60006120b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061200d565b905092915050565b60008082846120ca9190613711565b90508381101561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690613791565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612268826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122fd82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239d9190612bea565b60405180910390a3600190509392505050565b6001600f60146101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16156123e657600d5490505b60004790506123f48261282e565b6000612409824761207190919063ffffffff16565b9050600081111561247e57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561247c573d6000803e3d6000fd5b505b50506000600f60146101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125415750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561254f5760019050612603565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125f05750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125fe5760009050612603565b600090505b92915050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561268e5761268760075461267960045486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b905061270d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561270c576127096007546126fb60055486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b90505b5b60008111156128115761276881600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128089190612bea565b60405180910390a35b612824818461207190919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561284b5761284a6137b1565b5b6040519080825280602002602001820160405280156128795781602001602082028036833780820191505090505b5090503081600081518110612891576128906137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295c9190613824565b816001815181106129705761296f6137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129d730600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a54565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a3b95949392919061394a565b600060405180830381600087803b158015612a5557600080fd5b505af1158015612a69573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a9e9291906139a4565b60405180910390a15050565b6000808303612abc5760009050612b1e565b60008284612aca91906139d4565b9050828482612ad99190613a45565b14612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1090613ae8565b60405180910390fd5b809150505b92915050565b6000612b6683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b6e565b905092915050565b60008083118290612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac9190612c95565b60405180910390fd5b5060008385612bc49190613a45565b9050809150509392505050565b6000819050919050565b612be481612bd1565b82525050565b6000602082019050612bff6000830184612bdb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c3f578082015181840152602081019050612c24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6782612c05565b612c718185612c10565b9350612c81818560208601612c21565b612c8a81612c4b565b840191505092915050565b60006020820190508181036000830152612caf8184612c5c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612cfc612cf7612cf284612cb7565b612cd7565b612cb7565b9050919050565b6000612d0e82612ce1565b9050919050565b6000612d2082612d03565b9050919050565b612d3081612d15565b82525050565b6000602082019050612d4b6000830184612d27565b92915050565b6000612d5c82612cb7565b9050919050565b612d6c81612d51565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600080fd5b612d9b81612d51565b8114612da657600080fd5b50565b600081359050612db881612d92565b92915050565b612dc781612bd1565b8114612dd257600080fd5b50565b600081359050612de481612dbe565b92915050565b60008060408385031215612e0157612e00612d8d565b5b6000612e0f85828601612da9565b9250506020612e2085828601612dd5565b9150509250929050565b60008115159050919050565b612e3f81612e2a565b82525050565b6000602082019050612e5a6000830184612e36565b92915050565b600080600060608486031215612e7957612e78612d8d565b5b6000612e8786828701612da9565b9350506020612e9886828701612da9565b9250506040612ea986828701612dd5565b9150509250925092565b600060ff82169050919050565b612ec981612eb3565b82525050565b6000602082019050612ee46000830184612ec0565b92915050565b600060208284031215612f0057612eff612d8d565b5b6000612f0e84828501612da9565b91505092915050565b60008060408385031215612f2e57612f2d612d8d565b5b6000612f3c85828601612dd5565b9250506020612f4d85828601612dd5565b9150509250929050565b600060208284031215612f6d57612f6c612d8d565b5b6000612f7b84828501612dd5565b91505092915050565b612f8d81612e2a565b8114612f9857600080fd5b50565b600081359050612faa81612f84565b92915050565b60008060408385031215612fc757612fc6612d8d565b5b6000612fd585828601612da9565b9250506020612fe685828601612f9b565b9150509250929050565b6000806040838503121561300757613006612d8d565b5b600061301585828601612f9b565b925050602061302685828601612f9b565b9150509250929050565b6000806040838503121561304757613046612d8d565b5b600061305585828601612da9565b925050602061306685828601612da9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130b757607f821691505b6020821081036130ca576130c9613070565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613106602083612c10565b9150613111826130d0565b602082019050919050565b60006020820190508181036000830152613135816130f9565b9050919050565b7f4572726f723a20496e76616c69642043616c6c65722100000000000000000000600082015250565b6000613172601683612c10565b915061317d8261313c565b602082019050919050565b600060208201905081810360008301526131a181613165565b9050919050565b60006040820190506131bd6000830185612d63565b6131ca6020830184612bdb565b9392505050565b600081519050919050565b600081905092915050565b60006131f2826131d1565b6131fc81856131dc565b935061320c818560208601612c21565b80840191505092915050565b600061322482846131e7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613265601483612c10565b91506132708261322f565b602082019050919050565b6000602082019050818103600083015261329481613258565b9050919050565b50565b60006132ab6000836131dc565b91506132b68261329b565b600082019050919050565b60006132cc8261329e565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061330c601483612c10565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339e602683612c10565b91506133a982613342565b604082019050919050565b600060208201905081810360008301526133cd81613391565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613430602483612c10565b915061343b826133d4565b604082019050919050565b6000602082019050818103600083015261345f81613423565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c2602283612c10565b91506134cd82613466565b604082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613554602583612c10565b915061355f826134f8565b604082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e6602383612c10565b91506135f18261358a565b604082019050919050565b60006020820190508181036000830152613615816135d9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613678602983612c10565b91506136838261361c565b604082019050919050565b600060208201905081810360008301526136a78161366b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136e882612bd1565b91506136f383612bd1565b925082820390508181111561370b5761370a6136ae565b5b92915050565b600061371c82612bd1565b915061372783612bd1565b925082820190508082111561373f5761373e6136ae565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061377b601b83612c10565b915061378682613745565b602082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061381e81612d92565b92915050565b60006020828403121561383a57613839612d8d565b5b60006138488482850161380f565b91505092915050565b6000819050919050565b600061387661387161386c84613851565b612cd7565b612bd1565b9050919050565b6138868161385b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138c181612d51565b82525050565b60006138d383836138b8565b60208301905092915050565b6000602082019050919050565b60006138f78261388c565b6139018185613897565b935061390c836138a8565b8060005b8381101561393d57815161392488826138c7565b975061392f836138df565b925050600181019050613910565b5085935050505092915050565b600060a08201905061395f6000830188612bdb565b61396c602083018761387d565b818103604083015261397e81866138ec565b905061398d6060830185612d63565b61399a6080830184612bdb565b9695505050505050565b60006040820190506139b96000830185612bdb565b81810360208301526139cb81846138ec565b90509392505050565b60006139df82612bd1565b91506139ea83612bd1565b92508282026139f881612bd1565b91508282048414831517613a0f57613a0e6136ae565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5082612bd1565b9150613a5b83612bd1565b925082613a6b57613a6a613a16565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad2602183612c10565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220335fcd3ca407597c18a0ed978a5853d479da0201d79478422b309f8ce8d419c364736f6c63430008120033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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