ETH Price: $2,301.91 (-2.83%)

Token

Fang Token (FANG)
 

Overview

Max Total Supply

999,988,963,232.733567878326239146 FANG

Holders

98

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2.419103334559597062 FANG

Value
$0.00
0xcc566e617dc2787e0d61e735e8122fdcfb7511c8
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:
Fang

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-02
*/

/*

        ______                
        |  ____|               
        | |__ __ _ _ __   __ _ 
        |  __/ _` | '_ \ / _` |
        | | | (_| | | | | (_| |
        |_|  \__,_|_| |_|\__, |
                        __/ |
                        |___/ 

             _     ___
            #_~`--'__ `===-,
            `.`.     `#.,//
            ,_\_\     ## #\
            `__.__    `####\          
                 ~~\ ,###'~
                    \##'

*/

//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.4;
interface IUniswapERC20 {
    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;
}

interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapRouter01 {
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getamountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getamountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getamountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getamountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapRouter02 is IUniswapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface ERC20 {
    function totalSupply() external view returns (uint _totalSupply);
    function balanceOf(address _owner) external view returns (uint balance);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint _value) external returns (bool success);
    function approve(address _spender, uint _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}



interface IUniswapV2Pair {
  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 Mint(address indexed sender, uint amount0, uint amount1);
  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 mint(address to) external returns (uint liquidity);
  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;
}

contract Protected {

    address owner;
    mapping(address => bool) isAuth;
    modifier onlyAuth() {
        require(msg.sender==owner || isAuth[msg.sender], "not owner");
        _;
    }

    function setAuth(address addy, bool booly) public onlyAuth {
        isAuth[addy] = booly;
    }

    bool locked;
    modifier safe() {
        require(!locked, "reentrant");
        locked = true;
        _;
        locked = false;
    }

    address farmer;
    modifier onlyFarmer {
        require(msg.sender==farmer, "403");
        _;
    }
    function setFarmer(address addy) public onlyAuth {
        farmer = addy;
    }

    receive() external payable {}
    fallback() external payable {}
}


contract Fang is ERC20, Protected {

    string public constant _name = 'Fang Token';
    string public constant _symbol = 'FANG';
    uint8 public constant _decimals = 18;
    uint256 public constant InitialSupply= 1000 * 10**9 * 10**_decimals;
    uint256 public _circulatingSupply= InitialSupply;
    address public constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public constant Dead = 0x000000000000000000000000000000000000dEaD;
    IUniswapRouter02 router = IUniswapRouter02(UniswapRouter);

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

    mapping(address => bool) taxFree;
    bool public noFees;
    uint public liquidityFee = 1;
    uint public accumulated;
    uint public treshold = _circulatingSupply/1000;
    address public earn;
    address public pair_address;
    IUniswapV2Pair public pair;
    constructor() {

        pair_address = IUniswapFactory(router.factory()).createPair(address(this), router.WETH());
        pair = IUniswapV2Pair(pair_address);
        owner = msg.sender;
        isAuth[owner] = true;
        taxFree[owner] = true;
        _balances[owner] = totalSupply();
        emit Transfer(Dead, owner, totalSupply());
    }

    function _transfer(address sender, address recipient, uint amount) private {
        
        uint taxed_amount;

        bool isExcluded = (taxFree[sender] || taxFree[recipient] || isAuth[sender] || isAuth[recipient] || sender==earn || recipient==earn);
        bool isContractTransfer=(sender==address(this) || recipient==address(this));
        bool isLiquidityTransfer = ((sender == pair_address && recipient == address(router)) || (recipient == pair_address && sender == address(router)));

        if ((!isLiquidityTransfer || !isContractTransfer || !isExcluded) && (!noFees)) {
            uint taxes = (amount*liquidityFee)/100;
            taxed_amount = (amount-taxes);
            _balances[sender] -= taxes;
            _balances[address(this)] += taxes;
            accumulated += taxes;
            if(accumulated >= treshold) {
                _swapContractToken(accumulated);
                accumulated = 0;
            }
            emit Transfer(sender, address(this), taxes);
        } else {
            taxed_amount = amount;
        }

        _balances[sender] -= taxed_amount;
        _balances[recipient] += taxed_amount;
        emit Transfer(sender, recipient, taxed_amount);
    }

    function mint_rewards(uint qty, address receiver) external onlyFarmer {
        _circulatingSupply += qty;
        _balances[receiver] += qty;
        emit Transfer(Dead, receiver, qty);
    }

    function burn_tokens(uint qty, address sender) external onlyFarmer{
        _circulatingSupply -= qty;
        require(_balances[sender] >= qty);
        _balances[sender] -= qty;
        emit Transfer(sender, Dead, qty);
    }

    function UTILITY_SetTaxes(uint8 liquidityFeees) public onlyAuth {
        liquidityFee = liquidityFeees;
    }

    function _swapContractToken(uint256 totalMax) private safe {
        uint256 tokenForLiquidity = totalMax;
        uint256 liqToken = tokenForLiquidity / 2;
        uint256 liqETHToken = tokenForLiquidity - liqToken;

        uint256 swapToken = liqETHToken;
        uint256 initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint256 newETH = (address(this).balance - initialETHBalance);
        uint256 liqETH = (newETH * liqETHToken) / swapToken;
        _addLiquidity(liqToken, liqETH);
    }

    function _swapTokenForETH(uint256 amount) private {
        _approve(address(this), address(router), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private {
        _approve(address(this), address(router), tokenamount);
        router.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }


    function setEarn(address addy) public onlyAuth {
        earn = addy;
    }

    function setFree(address addy, bool booly) public onlyAuth {
        taxFree[addy] = booly;
    }

    function getOwner() external view returns (address) {
        return owner;
    }

    function name() external pure returns (string memory) {
        return _name;
    }

    function symbol() external pure returns (string memory) {
        return _symbol;
    }

    function decimals() external pure returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address _owner, address spender) external view override returns (uint256) {
        return _allowances[_owner][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address _owner, address spender, uint256 amount) private {
        require(_owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }    

}

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":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"liquidityFeees","type":"uint8"}],"name":"UTILITY_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulated","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":[{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"burn_tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"earn","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"noFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"setAuth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setEarn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setFarmer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"setFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[],"name":"treshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620006b7565b64e8d4a51000620000269190620007f4565b600355737a250d5630b4cf539739df2c5dacb4c659f2488d600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016009556103e860035462000095919062000624565b600b55348015620000a557600080fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010f57600080fd5b505afa15801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a919062000586565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001cf57600080fd5b505afa158015620001e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020a919062000586565b6040518363ffffffff1660e01b815260040162000229929190620005da565b602060405180830381600087803b1580156200024457600080fd5b505af115801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000586565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004636200056560201b60201c565b600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661dead73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005486200056560201b60201c565b60405162000557919062000607565b60405180910390a36200092a565b6000600354905090565b600081519050620005808162000910565b92915050565b6000602082840312156200059f576200059e620008fe565b5b6000620005af848285016200056f565b91505092915050565b620005c38162000855565b82525050565b620005d48162000889565b82525050565b6000604082019050620005f16000830185620005b8565b620006006020830184620005b8565b9392505050565b60006020820190506200061e6000830184620005c9565b92915050565b6000620006318262000889565b91506200063e8362000889565b925082620006515762000650620008cf565b5b828204905092915050565b6000808291508390505b6001851115620006ae57808604811115620006865762000685620008a0565b5b6001851615620006965780820291505b8081029050620006a68562000903565b945062000666565b94509492505050565b6000620006c48262000889565b9150620006d18362000893565b9250620007007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000708565b905092915050565b6000826200071a5760019050620007ed565b816200072a5760009050620007ed565b81600181146200074357600281146200074e5762000784565b6001915050620007ed565b60ff841115620007635762000762620008a0565b5b8360020a9150848211156200077d576200077c620008a0565b5b50620007ed565b5060208310610133831016604e8410600b8410161715620007be5782820a905083811115620007b857620007b7620008a0565b5b620007ed565b620007cd84848460016200065c565b92509050818404811115620007e757620007e6620008a0565b5b81810290505b9392505050565b6000620008018262000889565b91506200080e8362000889565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200084a5762000849620008a0565b5b828202905092915050565b6000620008628262000869565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b6200091b8162000855565b81146200092757600080fd5b50565b6130e6806200093a6000396000f3fe6080604052600436106102085760003560e01c806370a0823111610118578063a9059cbb116100a0578063d28d88521161006f578063d28d88521461079f578063d389800f146107ca578063dd62ed3e146107f5578063e2ed781c14610832578063f018e7931461085b5761020f565b8063a9059cbb146106e3578063b09f126614610720578063c7639d801461074b578063d11ace62146107765761020f565b806395d89b41116100e757806395d89b41146105fa57806398118cb414610625578063a253c06e14610650578063a457c2d71461067b578063a8aa1b31146106b85761020f565b806370a082311461053c5780637a0443231461057957806382c4767b146105a4578063893d20e8146105cf5761020f565b8063313ce5671161019b578063395093511161016a57806339509351146104475780634529d559146104845780635508b14e146104ad5780636bc995ac146104d65780636ebcf607146104ff5761020f565b8063313ce5671461039b57806332424aa3146103c657806334184e26146103f1578063382512e81461041c5761020f565b806318160ddd116101d757806318160ddd146102df5780631eb25d131461030a57806323b872dd1461033557806326c081fc146103725761020f565b8063024c2ddd1461021157806306fdde031461024e578063095ea7b3146102795780630b44a218146102b65761020f565b3661020f57005b005b34801561021d57600080fd5b5061023860048036038101906102339190612487565b610886565b6040516102459190612a1b565b60405180910390f35b34801561025a57600080fd5b506102636108ab565b6040516102709190612919565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b919061255a565b6108e8565b6040516102ad91906128e3565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d8919061251a565b6108ff565b005b3480156102eb57600080fd5b506102f4610a3c565b6040516103019190612a1b565b60405180910390f35b34801561031657600080fd5b5061031f610a46565b60405161032c9190612a1b565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906124c7565b610a67565b60405161036991906128e3565b60405180910390f35b34801561037e57600080fd5b506103996004803603810190610394919061251a565b610b5a565b005b3480156103a757600080fd5b506103b0610c97565b6040516103bd9190612a90565b60405180910390f35b3480156103d257600080fd5b506103db610ca0565b6040516103e89190612a90565b60405180910390f35b3480156103fd57600080fd5b50610406610ca5565b6040516104139190612867565b60405180910390f35b34801561042857600080fd5b50610431610ccb565b60405161043e9190612a1b565b60405180910390f35b34801561045357600080fd5b5061046e6004803603810190610469919061255a565b610cd1565b60405161047b91906128e3565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a6919061259a565b610d6f565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061262d565b610ed9565b005b3480156104e257600080fd5b506104fd60048036038101906104f8919061259a565b610fc8565b005b34801561050b57600080fd5b506105266004803603810190610521919061242d565b61117e565b6040516105339190612a1b565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e919061242d565b611196565b6040516105709190612a1b565b60405180910390f35b34801561058557600080fd5b5061058e6111df565b60405161059b9190612a1b565b60405180910390f35b3480156105b057600080fd5b506105b96111e5565b6040516105c69190612867565b60405180910390f35b3480156105db57600080fd5b506105e46111eb565b6040516105f19190612867565b60405180910390f35b34801561060657600080fd5b5061060f611214565b60405161061c9190612919565b60405180910390f35b34801561063157600080fd5b5061063a611251565b6040516106479190612a1b565b60405180910390f35b34801561065c57600080fd5b50610665611257565b6040516106729190612a1b565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d919061255a565b61125d565b6040516106af91906128e3565b60405180910390f35b3480156106c457600080fd5b506106cd611343565b6040516106da91906128fe565b60405180910390f35b3480156106ef57600080fd5b5061070a6004803603810190610705919061255a565b611369565b60405161071791906128e3565b60405180910390f35b34801561072c57600080fd5b50610735611380565b6040516107429190612919565b60405180910390f35b34801561075757600080fd5b506107606113b9565b60405161076d9190612867565b60405180910390f35b34801561078257600080fd5b5061079d6004803603810190610798919061242d565b6113d1565b005b3480156107ab57600080fd5b506107b46114f7565b6040516107c19190612919565b60405180910390f35b3480156107d657600080fd5b506107df611530565b6040516107ec9190612867565b60405180910390f35b34801561080157600080fd5b5061081c60048036038101906108179190612487565b611556565b6040516108299190612a1b565b60405180910390f35b34801561083e57600080fd5b506108596004803603810190610854919061242d565b6115dd565b005b34801561086757600080fd5b50610870611703565b60405161087d91906128e3565b60405180910390f35b6006602052816000526040600020602052806000526040600020600091509150505481565b60606040518060400160405280600a81526020017f46616e6720546f6b656e00000000000000000000000000000000000000000000815250905090565b60006108f5338484611716565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109a25750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d8906129db565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600354905090565b6012600a610a549190612bda565b64e8d4a51000610a649190612cf8565b81565b6000610a748484846118e1565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f9061297b565b60405180910390fd5b610b4e85338584610b499190612d52565b611716565b60019150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bfd5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c33906129db565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b601281565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000610d65338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d609190612b00565b611716565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df69061293b565b60405180910390fd5b8160036000828254610e119190612b00565b9250508190555081600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e679190612b00565b925050819055508073ffffffffffffffffffffffffffffffffffffffff1661dead73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ecd9190612a1b565b60405180910390a35050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f7c5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb2906129db565b60405180910390fd5b8060ff1660098190555050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f9061293b565b60405180910390fd5b816003600082825461106a9190612d52565b9250508190555081600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110bd57600080fd5b81600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461110c9190612d52565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111729190612a1b565b60405180910390a35050565b60056020528060005260406000206000915090505481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b61dead81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f46414e4700000000000000000000000000000000000000000000000000000000815250905090565b60095481565b60035481565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611319906129fb565b60405180910390fd5b611338338585846113339190612d52565b611716565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113763384846118e1565b6001905092915050565b6040518060400160405280600481526020017f46414e470000000000000000000000000000000000000000000000000000000081525081565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114745750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa906129db565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600a81526020017f46616e6720546f6b656e0000000000000000000000000000000000000000000081525081565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116805750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b6906129db565b60405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d9061295b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed906129bb565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d49190612a1b565b60405180910390a3505050565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119855750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119d95750600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a2d5750600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a855750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80611add5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905060003073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480611b4657503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b90506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015611bf45750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80611ca55750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611ca45750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b5b9050801580611cb2575081155b80611cbb575082155b8015611cd45750600860009054906101000a900460ff16155b15611e54576000606460095487611ceb9190612cf8565b611cf59190612b56565b90508086611d039190612d52565b945080600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d549190612d52565b9250508190555080600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611daa9190612b00565b9250508190555080600a6000828254611dc39190612b00565b92505081905550600b54600a5410611de957611de0600a54611f72565b6000600a819055505b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e469190612a1b565b60405180910390a350611e58565b8493505b83600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ea79190612d52565b9250508190555083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611efd9190612b00565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611f619190612a1b565b60405180910390a350505050505050565b600260009054906101000a900460ff1615611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb99061299b565b60405180910390fd5b6001600260006101000a81548160ff02191690831515021790555060008190506000600282611ff19190612b56565b9050600081836120019190612d52565b90506000819050600047905061201682612070565b600081476120249190612d52565b905060008385836120359190612cf8565b61203f9190612b56565b905061204b86826122c2565b505050505050506000600260006101000a81548160ff02191690831515021790555050565b61209d30600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611716565b6000600267ffffffffffffffff8111156120ba576120b9612ee3565b5b6040519080825280602002602001820160405280156120e85781602001602082028036833780820191505090505b5090503081600081518110612100576120ff612eb4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a257600080fd5b505afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da919061245a565b816001815181106121ee576121ed612eb4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161228c959493929190612a36565b600060405180830381600087803b1580156122a657600080fd5b505af11580156122ba573d6000803e3d6000fd5b505050505050565b6122ef30600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611716565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161235696959493929190612882565b6060604051808303818588803b15801561236f57600080fd5b505af1158015612383573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123a891906125da565b5050505050565b6000813590506123be81613054565b92915050565b6000815190506123d381613054565b92915050565b6000813590506123e88161306b565b92915050565b6000813590506123fd81613082565b92915050565b60008151905061241281613082565b92915050565b60008135905061242781613099565b92915050565b60006020828403121561244357612442612f12565b5b6000612451848285016123af565b91505092915050565b6000602082840312156124705761246f612f12565b5b600061247e848285016123c4565b91505092915050565b6000806040838503121561249e5761249d612f12565b5b60006124ac858286016123af565b92505060206124bd858286016123af565b9150509250929050565b6000806000606084860312156124e0576124df612f12565b5b60006124ee868287016123af565b93505060206124ff868287016123af565b9250506040612510868287016123ee565b9150509250925092565b6000806040838503121561253157612530612f12565b5b600061253f858286016123af565b9250506020612550858286016123d9565b9150509250929050565b6000806040838503121561257157612570612f12565b5b600061257f858286016123af565b9250506020612590858286016123ee565b9150509250929050565b600080604083850312156125b1576125b0612f12565b5b60006125bf858286016123ee565b92505060206125d0858286016123af565b9150509250929050565b6000806000606084860312156125f3576125f2612f12565b5b600061260186828701612403565b935050602061261286828701612403565b925050604061262386828701612403565b9150509250925092565b60006020828403121561264357612642612f12565b5b600061265184828501612418565b91505092915050565b60006126668383612672565b60208301905092915050565b61267b81612d86565b82525050565b61268a81612d86565b82525050565b600061269b82612abb565b6126a58185612ade565b93506126b083612aab565b8060005b838110156126e15781516126c8888261265a565b97506126d383612ad1565b9250506001810190506126b4565b5085935050505092915050565b6126f781612d98565b82525050565b61270681612ddb565b82525050565b61271581612ded565b82525050565b600061272682612ac6565b6127308185612aef565b9350612740818560208601612e23565b61274981612f17565b840191505092915050565b6000612761600383612aef565b915061276c82612f35565b602082019050919050565b6000612784601183612aef565b915061278f82612f5e565b602082019050919050565b60006127a7601483612aef565b91506127b282612f87565b602082019050919050565b60006127ca600983612aef565b91506127d582612fb0565b602082019050919050565b60006127ed600f83612aef565b91506127f882612fd9565b602082019050919050565b6000612810600983612aef565b915061281b82613002565b602082019050919050565b6000612833600c83612aef565b915061283e8261302b565b602082019050919050565b61285281612dc4565b82525050565b61286181612dce565b82525050565b600060208201905061287c6000830184612681565b92915050565b600060c0820190506128976000830189612681565b6128a46020830188612849565b6128b1604083018761270c565b6128be606083018661270c565b6128cb6080830185612681565b6128d860a0830184612849565b979650505050505050565b60006020820190506128f860008301846126ee565b92915050565b600060208201905061291360008301846126fd565b92915050565b60006020820190508181036000830152612933818461271b565b905092915050565b6000602082019050818103600083015261295481612754565b9050919050565b6000602082019050818103600083015261297481612777565b9050919050565b600060208201905081810360008301526129948161279a565b9050919050565b600060208201905081810360008301526129b4816127bd565b9050919050565b600060208201905081810360008301526129d4816127e0565b9050919050565b600060208201905081810360008301526129f481612803565b9050919050565b60006020820190508181036000830152612a1481612826565b9050919050565b6000602082019050612a306000830184612849565b92915050565b600060a082019050612a4b6000830188612849565b612a58602083018761270c565b8181036040830152612a6a8186612690565b9050612a796060830185612681565b612a866080830184612849565b9695505050505050565b6000602082019050612aa56000830184612858565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612b0b82612dc4565b9150612b1683612dc4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b4b57612b4a612e56565b5b828201905092915050565b6000612b6182612dc4565b9150612b6c83612dc4565b925082612b7c57612b7b612e85565b5b828204905092915050565b6000808291508390505b6001851115612bd157808604811115612bad57612bac612e56565b5b6001851615612bbc5780820291505b8081029050612bca85612f28565b9450612b91565b94509492505050565b6000612be582612dc4565b9150612bf083612dce565b9250612c1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c25565b905092915050565b600082612c355760019050612cf1565b81612c435760009050612cf1565b8160018114612c595760028114612c6357612c92565b6001915050612cf1565b60ff841115612c7557612c74612e56565b5b8360020a915084821115612c8c57612c8b612e56565b5b50612cf1565b5060208310610133831016604e8410600b8410161715612cc75782820a905083811115612cc257612cc1612e56565b5b612cf1565b612cd48484846001612b87565b92509050818404811115612ceb57612cea612e56565b5b81810290505b9392505050565b6000612d0382612dc4565b9150612d0e83612dc4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d4757612d46612e56565b5b828202905092915050565b6000612d5d82612dc4565b9150612d6883612dc4565b925082821015612d7b57612d7a612e56565b5b828203905092915050565b6000612d9182612da4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612de682612dff565b9050919050565b6000612df882612dc4565b9050919050565b6000612e0a82612e11565b9050919050565b6000612e1c82612da4565b9050919050565b60005b83811015612e41578082015181840152602081019050612e26565b83811115612e50576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f3430330000000000000000000000000000000000000000000000000000000000600082015250565b7f417070726f76652066726f6d207a65726f000000000000000000000000000000600082015250565b7f5472616e73666572203e20616c6c6f77616e6365000000000000000000000000600082015250565b7f7265656e7472616e740000000000000000000000000000000000000000000000600082015250565b7f417070726f766520746f207a65726f0000000000000000000000000000000000600082015250565b7f6e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b7f3c3020616c6c6f77616e63650000000000000000000000000000000000000000600082015250565b61305d81612d86565b811461306857600080fd5b50565b61307481612d98565b811461307f57600080fd5b50565b61308b81612dc4565b811461309657600080fd5b50565b6130a281612dce565b81146130ad57600080fd5b5056fea26469706673582212201f71fcd98f5be27cc114b2cad1007bc64291dfe1ea4639ef59c5caca9d8d216064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102085760003560e01c806370a0823111610118578063a9059cbb116100a0578063d28d88521161006f578063d28d88521461079f578063d389800f146107ca578063dd62ed3e146107f5578063e2ed781c14610832578063f018e7931461085b5761020f565b8063a9059cbb146106e3578063b09f126614610720578063c7639d801461074b578063d11ace62146107765761020f565b806395d89b41116100e757806395d89b41146105fa57806398118cb414610625578063a253c06e14610650578063a457c2d71461067b578063a8aa1b31146106b85761020f565b806370a082311461053c5780637a0443231461057957806382c4767b146105a4578063893d20e8146105cf5761020f565b8063313ce5671161019b578063395093511161016a57806339509351146104475780634529d559146104845780635508b14e146104ad5780636bc995ac146104d65780636ebcf607146104ff5761020f565b8063313ce5671461039b57806332424aa3146103c657806334184e26146103f1578063382512e81461041c5761020f565b806318160ddd116101d757806318160ddd146102df5780631eb25d131461030a57806323b872dd1461033557806326c081fc146103725761020f565b8063024c2ddd1461021157806306fdde031461024e578063095ea7b3146102795780630b44a218146102b65761020f565b3661020f57005b005b34801561021d57600080fd5b5061023860048036038101906102339190612487565b610886565b6040516102459190612a1b565b60405180910390f35b34801561025a57600080fd5b506102636108ab565b6040516102709190612919565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b919061255a565b6108e8565b6040516102ad91906128e3565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d8919061251a565b6108ff565b005b3480156102eb57600080fd5b506102f4610a3c565b6040516103019190612a1b565b60405180910390f35b34801561031657600080fd5b5061031f610a46565b60405161032c9190612a1b565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906124c7565b610a67565b60405161036991906128e3565b60405180910390f35b34801561037e57600080fd5b506103996004803603810190610394919061251a565b610b5a565b005b3480156103a757600080fd5b506103b0610c97565b6040516103bd9190612a90565b60405180910390f35b3480156103d257600080fd5b506103db610ca0565b6040516103e89190612a90565b60405180910390f35b3480156103fd57600080fd5b50610406610ca5565b6040516104139190612867565b60405180910390f35b34801561042857600080fd5b50610431610ccb565b60405161043e9190612a1b565b60405180910390f35b34801561045357600080fd5b5061046e6004803603810190610469919061255a565b610cd1565b60405161047b91906128e3565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a6919061259a565b610d6f565b005b3480156104b957600080fd5b506104d460048036038101906104cf919061262d565b610ed9565b005b3480156104e257600080fd5b506104fd60048036038101906104f8919061259a565b610fc8565b005b34801561050b57600080fd5b506105266004803603810190610521919061242d565b61117e565b6040516105339190612a1b565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e919061242d565b611196565b6040516105709190612a1b565b60405180910390f35b34801561058557600080fd5b5061058e6111df565b60405161059b9190612a1b565b60405180910390f35b3480156105b057600080fd5b506105b96111e5565b6040516105c69190612867565b60405180910390f35b3480156105db57600080fd5b506105e46111eb565b6040516105f19190612867565b60405180910390f35b34801561060657600080fd5b5061060f611214565b60405161061c9190612919565b60405180910390f35b34801561063157600080fd5b5061063a611251565b6040516106479190612a1b565b60405180910390f35b34801561065c57600080fd5b50610665611257565b6040516106729190612a1b565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d919061255a565b61125d565b6040516106af91906128e3565b60405180910390f35b3480156106c457600080fd5b506106cd611343565b6040516106da91906128fe565b60405180910390f35b3480156106ef57600080fd5b5061070a6004803603810190610705919061255a565b611369565b60405161071791906128e3565b60405180910390f35b34801561072c57600080fd5b50610735611380565b6040516107429190612919565b60405180910390f35b34801561075757600080fd5b506107606113b9565b60405161076d9190612867565b60405180910390f35b34801561078257600080fd5b5061079d6004803603810190610798919061242d565b6113d1565b005b3480156107ab57600080fd5b506107b46114f7565b6040516107c19190612919565b60405180910390f35b3480156107d657600080fd5b506107df611530565b6040516107ec9190612867565b60405180910390f35b34801561080157600080fd5b5061081c60048036038101906108179190612487565b611556565b6040516108299190612a1b565b60405180910390f35b34801561083e57600080fd5b506108596004803603810190610854919061242d565b6115dd565b005b34801561086757600080fd5b50610870611703565b60405161087d91906128e3565b60405180910390f35b6006602052816000526040600020602052806000526040600020600091509150505481565b60606040518060400160405280600a81526020017f46616e6720546f6b656e00000000000000000000000000000000000000000000815250905090565b60006108f5338484611716565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109a25750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d8906129db565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600354905090565b6012600a610a549190612bda565b64e8d4a51000610a649190612cf8565b81565b6000610a748484846118e1565b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f9061297b565b60405180910390fd5b610b4e85338584610b499190612d52565b611716565b60019150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bfd5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c33906129db565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b601281565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000610d65338484600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d609190612b00565b611716565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df69061293b565b60405180910390fd5b8160036000828254610e119190612b00565b9250508190555081600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e679190612b00565b925050819055508073ffffffffffffffffffffffffffffffffffffffff1661dead73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ecd9190612a1b565b60405180910390a35050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f7c5750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb2906129db565b60405180910390fd5b8060ff1660098190555050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f9061293b565b60405180910390fd5b816003600082825461106a9190612d52565b9250508190555081600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110bd57600080fd5b81600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461110c9190612d52565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111729190612a1b565b60405180910390a35050565b60056020528060005260406000206000915090505481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b61dead81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f46414e4700000000000000000000000000000000000000000000000000000000815250905090565b60095481565b60035481565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611319906129fb565b60405180910390fd5b611338338585846113339190612d52565b611716565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113763384846118e1565b6001905092915050565b6040518060400160405280600481526020017f46414e470000000000000000000000000000000000000000000000000000000081525081565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114745750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa906129db565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600a81526020017f46616e6720546f6b656e0000000000000000000000000000000000000000000081525081565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116805750600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b6906129db565b60405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900460ff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d9061295b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed906129bb565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118d49190612a1b565b60405180910390a3505050565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119855750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119d95750600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a2d5750600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a855750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80611add5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905060003073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480611b4657503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b90506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015611bf45750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80611ca55750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611ca45750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b5b9050801580611cb2575081155b80611cbb575082155b8015611cd45750600860009054906101000a900460ff16155b15611e54576000606460095487611ceb9190612cf8565b611cf59190612b56565b90508086611d039190612d52565b945080600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d549190612d52565b9250508190555080600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611daa9190612b00565b9250508190555080600a6000828254611dc39190612b00565b92505081905550600b54600a5410611de957611de0600a54611f72565b6000600a819055505b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e469190612a1b565b60405180910390a350611e58565b8493505b83600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ea79190612d52565b9250508190555083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611efd9190612b00565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611f619190612a1b565b60405180910390a350505050505050565b600260009054906101000a900460ff1615611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb99061299b565b60405180910390fd5b6001600260006101000a81548160ff02191690831515021790555060008190506000600282611ff19190612b56565b9050600081836120019190612d52565b90506000819050600047905061201682612070565b600081476120249190612d52565b905060008385836120359190612cf8565b61203f9190612b56565b905061204b86826122c2565b505050505050506000600260006101000a81548160ff02191690831515021790555050565b61209d30600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611716565b6000600267ffffffffffffffff8111156120ba576120b9612ee3565b5b6040519080825280602002602001820160405280156120e85781602001602082028036833780820191505090505b5090503081600081518110612100576120ff612eb4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a257600080fd5b505afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da919061245a565b816001815181106121ee576121ed612eb4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161228c959493929190612a36565b600060405180830381600087803b1580156122a657600080fd5b505af11580156122ba573d6000803e3d6000fd5b505050505050565b6122ef30600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611716565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161235696959493929190612882565b6060604051808303818588803b15801561236f57600080fd5b505af1158015612383573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123a891906125da565b5050505050565b6000813590506123be81613054565b92915050565b6000815190506123d381613054565b92915050565b6000813590506123e88161306b565b92915050565b6000813590506123fd81613082565b92915050565b60008151905061241281613082565b92915050565b60008135905061242781613099565b92915050565b60006020828403121561244357612442612f12565b5b6000612451848285016123af565b91505092915050565b6000602082840312156124705761246f612f12565b5b600061247e848285016123c4565b91505092915050565b6000806040838503121561249e5761249d612f12565b5b60006124ac858286016123af565b92505060206124bd858286016123af565b9150509250929050565b6000806000606084860312156124e0576124df612f12565b5b60006124ee868287016123af565b93505060206124ff868287016123af565b9250506040612510868287016123ee565b9150509250925092565b6000806040838503121561253157612530612f12565b5b600061253f858286016123af565b9250506020612550858286016123d9565b9150509250929050565b6000806040838503121561257157612570612f12565b5b600061257f858286016123af565b9250506020612590858286016123ee565b9150509250929050565b600080604083850312156125b1576125b0612f12565b5b60006125bf858286016123ee565b92505060206125d0858286016123af565b9150509250929050565b6000806000606084860312156125f3576125f2612f12565b5b600061260186828701612403565b935050602061261286828701612403565b925050604061262386828701612403565b9150509250925092565b60006020828403121561264357612642612f12565b5b600061265184828501612418565b91505092915050565b60006126668383612672565b60208301905092915050565b61267b81612d86565b82525050565b61268a81612d86565b82525050565b600061269b82612abb565b6126a58185612ade565b93506126b083612aab565b8060005b838110156126e15781516126c8888261265a565b97506126d383612ad1565b9250506001810190506126b4565b5085935050505092915050565b6126f781612d98565b82525050565b61270681612ddb565b82525050565b61271581612ded565b82525050565b600061272682612ac6565b6127308185612aef565b9350612740818560208601612e23565b61274981612f17565b840191505092915050565b6000612761600383612aef565b915061276c82612f35565b602082019050919050565b6000612784601183612aef565b915061278f82612f5e565b602082019050919050565b60006127a7601483612aef565b91506127b282612f87565b602082019050919050565b60006127ca600983612aef565b91506127d582612fb0565b602082019050919050565b60006127ed600f83612aef565b91506127f882612fd9565b602082019050919050565b6000612810600983612aef565b915061281b82613002565b602082019050919050565b6000612833600c83612aef565b915061283e8261302b565b602082019050919050565b61285281612dc4565b82525050565b61286181612dce565b82525050565b600060208201905061287c6000830184612681565b92915050565b600060c0820190506128976000830189612681565b6128a46020830188612849565b6128b1604083018761270c565b6128be606083018661270c565b6128cb6080830185612681565b6128d860a0830184612849565b979650505050505050565b60006020820190506128f860008301846126ee565b92915050565b600060208201905061291360008301846126fd565b92915050565b60006020820190508181036000830152612933818461271b565b905092915050565b6000602082019050818103600083015261295481612754565b9050919050565b6000602082019050818103600083015261297481612777565b9050919050565b600060208201905081810360008301526129948161279a565b9050919050565b600060208201905081810360008301526129b4816127bd565b9050919050565b600060208201905081810360008301526129d4816127e0565b9050919050565b600060208201905081810360008301526129f481612803565b9050919050565b60006020820190508181036000830152612a1481612826565b9050919050565b6000602082019050612a306000830184612849565b92915050565b600060a082019050612a4b6000830188612849565b612a58602083018761270c565b8181036040830152612a6a8186612690565b9050612a796060830185612681565b612a866080830184612849565b9695505050505050565b6000602082019050612aa56000830184612858565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612b0b82612dc4565b9150612b1683612dc4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b4b57612b4a612e56565b5b828201905092915050565b6000612b6182612dc4565b9150612b6c83612dc4565b925082612b7c57612b7b612e85565b5b828204905092915050565b6000808291508390505b6001851115612bd157808604811115612bad57612bac612e56565b5b6001851615612bbc5780820291505b8081029050612bca85612f28565b9450612b91565b94509492505050565b6000612be582612dc4565b9150612bf083612dce565b9250612c1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c25565b905092915050565b600082612c355760019050612cf1565b81612c435760009050612cf1565b8160018114612c595760028114612c6357612c92565b6001915050612cf1565b60ff841115612c7557612c74612e56565b5b8360020a915084821115612c8c57612c8b612e56565b5b50612cf1565b5060208310610133831016604e8410600b8410161715612cc75782820a905083811115612cc257612cc1612e56565b5b612cf1565b612cd48484846001612b87565b92509050818404811115612ceb57612cea612e56565b5b81810290505b9392505050565b6000612d0382612dc4565b9150612d0e83612dc4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d4757612d46612e56565b5b828202905092915050565b6000612d5d82612dc4565b9150612d6883612dc4565b925082821015612d7b57612d7a612e56565b5b828203905092915050565b6000612d9182612da4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612de682612dff565b9050919050565b6000612df882612dc4565b9050919050565b6000612e0a82612e11565b9050919050565b6000612e1c82612da4565b9050919050565b60005b83811015612e41578082015181840152602081019050612e26565b83811115612e50576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f3430330000000000000000000000000000000000000000000000000000000000600082015250565b7f417070726f76652066726f6d207a65726f000000000000000000000000000000600082015250565b7f5472616e73666572203e20616c6c6f77616e6365000000000000000000000000600082015250565b7f7265656e7472616e740000000000000000000000000000000000000000000000600082015250565b7f417070726f766520746f207a65726f0000000000000000000000000000000000600082015250565b7f6e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b7f3c3020616c6c6f77616e63650000000000000000000000000000000000000000600082015250565b61305d81612d86565b811461306857600080fd5b50565b61307481612d98565b811461307f57600080fd5b50565b61308b81612dc4565b811461309657600080fd5b50565b6130a281612dce565b81146130ad57600080fd5b5056fea26469706673582212201f71fcd98f5be27cc114b2cad1007bc64291dfe1ea4639ef59c5caca9d8d216064736f6c63430008070033

Deployed Bytecode Sourcemap

10902:7058:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11498:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15654:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16510:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10370:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15937:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11084:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16988:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15456:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15844:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11041:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11783:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11704:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17396:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13458:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13902:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13662:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11446:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16051:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11674:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11300:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15563:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15747:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11639:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11158:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17609:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11817:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16180:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10995:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11213:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15371:77;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10945:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11757:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16355:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10739:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11614:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11498:68;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15654:85::-;15693:13;15726:5;;;;;;;;;;;;;;;;;15719:12;;15654:85;:::o;16510:161::-;16587:4;16604:37;16613:10;16625:7;16634:6;16604:8;:37::i;:::-;16659:4;16652:11;;16510:161;;;;:::o;10370:98::-;10301:5;;;;;;;;;;10289:17;;:10;:17;;;:39;;;;10310:6;:18;10317:10;10310:18;;;;;;;;;;;;;;;;;;;;;;;;;10289:39;10281:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10455:5:::1;10440:6;:12;10447:4;10440:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;10370:98:::0;;:::o;15937:106::-;15990:7;16017:18;;16010:25;;15937:106;:::o;11084:67::-;11075:2;11138;:13;;;;:::i;:::-;11123:12;:28;;;;:::i;:::-;11084:67;:::o;16988:392::-;17088:4;17105:36;17115:6;17123:9;17134:6;17105:9;:36::i;:::-;17154:24;17181:11;:19;17193:6;17181:19;;;;;;;;;;;;;;;:31;17201:10;17181:31;;;;;;;;;;;;;;;;17154:58;;17251:6;17231:16;:26;;17223:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;17295:55;17304:6;17312:10;17343:6;17324:16;:25;;;;:::i;:::-;17295:8;:55::i;:::-;17368:4;17361:11;;;16988:392;;;;;:::o;15456:99::-;10301:5;;;;;;;;;;10289:17;;:10;:17;;;:39;;;;10310:6;:18;10317:10;10310:18;;;;;;;;;;;;;;;;;;;;;;;;;10289:39;10281:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15542:5:::1;15526:7;:13;15534:4;15526:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15456:99:::0;;:::o;15844:85::-;15887:5;11075:2;15905:16;;15844:85;:::o;11041:36::-;11075:2;11041:36;:::o;11783:27::-;;;;;;;;;;;;;:::o;11704:46::-;;;;:::o;17396:205::-;17478:4;17495:76;17504:10;17516:7;17560:10;17525:11;:23;17537:10;17525:23;;;;;;;;;;;;;;;:32;17549:7;17525:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;17495:8;:76::i;:::-;17589:4;17582:11;;17396:205;;;;:::o;13458:196::-;10699:6;;;;;;;;;;;10687:18;;:10;:18;;;10679:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;13561:3:::1;13539:18;;:25;;;;;;;:::i;:::-;;;;;;;;13598:3;13575:9;:19;13585:8;13575:19;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;13632:8;13617:29;;11331:42;13617:29;;;13642:3;13617:29;;;;;;:::i;:::-;;;;;;;;13458:196:::0;;:::o;13902:112::-;10301:5;;;;;;;;;;10289:17;;:10;:17;;;:39;;;;10310:6;:18;10317:10;10310:18;;;;;;;;;;;;;;;;;;;;;;;;;10289:39;10281:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13992:14:::1;13977:29;;:12;:29;;;;13902:112:::0;:::o;13662:232::-;10699:6;;;;;;;;;;;10687:18;;:10;:18;;;10679:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;13761:3:::1;13739:18;;:25;;;;;;;:::i;:::-;;;;;;;;13804:3;13783:9;:17;13793:6;13783:17;;;;;;;;;;;;;;;;:24;;13775:33;;;::::0;::::1;;13840:3;13819:9;:17;13829:6;13819:17;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;11331:42;13859:27;;13868:6;13859:27;;;13882:3;13859:27;;;;;;:::i;:::-;;;;;;;;13662:232:::0;;:::o;11446:45::-;;;;;;;;;;;;;;;;;:::o;16051:121::-;16119:7;16146:9;:18;16156:7;16146:18;;;;;;;;;;;;;;;;16139:25;;16051:121;;;:::o;11674:23::-;;;;:::o;11300:73::-;11331:42;11300:73;:::o;15563:83::-;15606:7;15633:5;;;;;;;;;;;15626:12;;15563:83;:::o;15747:89::-;15788:13;15821:7;;;;;;;;;;;;;;;;;15814:14;;15747:89;:::o;11639:28::-;;;;:::o;11158:48::-;;;;:::o;17609:342::-;17696:4;17713:24;17740:11;:23;17752:10;17740:23;;;;;;;;;;;;;;;:32;17764:7;17740:32;;;;;;;;;;;;;;;;17713:59;;17811:15;17791:16;:35;;17783:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17856:65;17865:10;17877:7;17905:15;17886:16;:34;;;;:::i;:::-;17856:8;:65::i;:::-;17939:4;17932:11;;;17609:342;;;;:::o;11817:26::-;;;;;;;;;;;;;:::o;16180:167::-;16260:4;16277:40;16287:10;16299:9;16310:6;16277:9;:40::i;:::-;16335:4;16328:11;;16180:167;;;;:::o;10995:39::-;;;;;;;;;;;;;;;;;;;:::o;11213:80::-;11251:42;11213:80;:::o;15371:77::-;10301:5;;;;;;;;;;10289:17;;:10;:17;;;:39;;;;10310:6;:18;10317:10;10310:18;;;;;;;;;;;;;;;;;;;;;;;;;10289:39;10281:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15436:4:::1;15429;;:11;;;;;;;;;;;;;;;;;;15371:77:::0;:::o;10945:43::-;;;;;;;;;;;;;;;;;;;:::o;11757:19::-;;;;;;;;;;;;;:::o;16355:147::-;16439:7;16466:11;:19;16478:6;16466:19;;;;;;;;;;;;;;;:28;16486:7;16466:28;;;;;;;;;;;;;;;;16459:35;;16355:147;;;;:::o;10739:81::-;10301:5;;;;;;;;;;10289:17;;:10;:17;;;:39;;;;10310:6;:18;10317:10;10310:18;;;;;;;;;;;;;;;;;;;;;;;;;10289:39;10281:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10808:4:::1;10799:6;;:13;;;;;;;;;;;;;;;;;;10739:81:::0;:::o;11614:18::-;;;;;;;;;;;;;:::o;16677:303::-;16789:1;16771:20;;:6;:20;;;;16763:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16851:1;16832:21;;:7;:21;;;;16824:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16917:6;16886:11;:19;16898:6;16886:19;;;;;;;;;;;;;;;:28;16906:7;16886:28;;;;;;;;;;;;;;;:37;;;;16956:7;16939:33;;16948:6;16939:33;;;16965:6;16939:33;;;;;;:::i;:::-;;;;;;;;16677:303;;;:::o;12215:1235::-;12311:17;12341:15;12360:7;:15;12368:6;12360:15;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;12379:7;:18;12387:9;12379:18;;;;;;;;;;;;;;;;;;;;;;;;;12360:37;:55;;;;12401:6;:14;12408:6;12401:14;;;;;;;;;;;;;;;;;;;;;;;;;12360:55;:76;;;;12419:6;:17;12426:9;12419:17;;;;;;;;;;;;;;;;;;;;;;;;;12360:76;:92;;;;12448:4;;;;;;;;;;;12440:12;;:6;:12;;;12360:92;:111;;;;12467:4;;;;;;;;;;;12456:15;;:9;:15;;;12360:111;12341:131;;12483:23;12524:4;12508:21;;:6;:21;;;:49;;;;12552:4;12533:24;;:9;:24;;;12508:49;12483:75;;12569:24;12608:12;;;;;;;;;;;12598:22;;:6;:22;;;:54;;;;;12645:6;;;;;;;;;;;12624:28;;:9;:28;;;12598:54;12597:116;;;;12671:12;;;;;;;;;;;12658:25;;:9;:25;;;:54;;;;;12705:6;;;;;;;;;;;12687:25;;:6;:25;;;12658:54;12597:116;12569:145;;12733:19;12732:20;:43;;;;12757:18;12756:19;12732:43;:58;;;;12780:10;12779:11;12732:58;12731:73;;;;;12797:6;;;;;;;;;;;12796:7;12731:73;12727:566;;;12821:10;12856:3;12842:12;;12835:6;:19;;;;:::i;:::-;12834:25;;;;:::i;:::-;12821:38;;12897:5;12890:6;:12;;;;:::i;:::-;12874:29;;12939:5;12918:9;:17;12928:6;12918:17;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;12987:5;12959:9;:24;12977:4;12959:24;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;13022:5;13007:11;;:20;;;;;;;:::i;:::-;;;;;;;;13060:8;;13045:11;;:23;13042:128;;13089:31;13108:11;;13089:18;:31::i;:::-;13153:1;13139:11;:15;;;;13042:128;13214:4;13189:38;;13198:6;13189:38;;;13221:5;13189:38;;;;;;:::i;:::-;;;;;;;;12806:433;12727:566;;;13275:6;13260:21;;12727:566;13326:12;13305:9;:17;13315:6;13305:17;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;13373:12;13349:9;:20;13359:9;13349:20;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;13418:9;13401:41;;13410:6;13401:41;;;13429:12;13401:41;;;;;;:::i;:::-;;;;;;;;12290:1160;;;;12215:1235;;;:::o;14022:543::-;10530:6;;;;;;;;;;;10529:7;10521:29;;;;;;;;;;;;:::i;:::-;;;;;;;;;10570:4;10561:6;;:13;;;;;;;;;;;;;;;;;;14092:25:::1;14120:8;14092:36;;14139:16;14178:1;14158:17;:21;;;;:::i;:::-;14139:40;;14190:19;14232:8;14212:17;:28;;;;:::i;:::-;14190:50;;14253:17;14273:11;14253:31;;14295:25;14323:21;14295:49;;14355:27;14372:9;14355:16;:27::i;:::-;14393:14;14435:17;14411:21;:41;;;;:::i;:::-;14393:60;;14464:14;14506:9;14491:11;14482:6;:20;;;;:::i;:::-;14481:34;;;;:::i;:::-;14464:51;;14526:31;14540:8;14550:6;14526:13;:31::i;:::-;14081:484;;;;;;;10606:5:::0;10597:6;;:14;;;;;;;;;;;;;;;;;;14022:543;:::o;14573:431::-;14634:48;14651:4;14666:6;;;;;;;;;;;14675;14634:8;:48::i;:::-;14693:21;14731:1;14717:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14693:40;;14762:4;14744;14749:1;14744:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14788:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14778:4;14783:1;14778:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14814:6;;;;;;;;;;;:57;;;14886:6;14907:1;14923:4;14950;14970:15;14814:182;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14623:381;14573:431;:::o;15012:349::-;15094:53;15111:4;15126:6;;;;;;;;;;;15135:11;15094:8;:53::i;:::-;15158:6;;;;;;;;;;;:22;;;15188:9;15221:4;15241:11;15267:1;15283;15307:4;15327:15;15158:195;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15012:349;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:135::-;778:5;816:6;803:20;794:29;;832:31;857:5;832:31;:::i;:::-;734:135;;;;:::o;875:329::-;934:6;983:2;971:9;962:7;958:23;954:32;951:119;;;989:79;;:::i;:::-;951:119;1109:1;1134:53;1179:7;1170:6;1159:9;1155:22;1134:53;:::i;:::-;1124:63;;1080:117;875:329;;;;:::o;1210:351::-;1280:6;1329:2;1317:9;1308:7;1304:23;1300:32;1297:119;;;1335:79;;:::i;:::-;1297:119;1455:1;1480:64;1536:7;1527:6;1516:9;1512:22;1480:64;:::i;:::-;1470:74;;1426:128;1210:351;;;;:::o;1567:474::-;1635:6;1643;1692:2;1680:9;1671:7;1667:23;1663:32;1660:119;;;1698:79;;:::i;:::-;1660:119;1818:1;1843:53;1888:7;1879:6;1868:9;1864:22;1843:53;:::i;:::-;1833:63;;1789:117;1945:2;1971:53;2016:7;2007:6;1996:9;1992:22;1971:53;:::i;:::-;1961:63;;1916:118;1567:474;;;;;:::o;2047:619::-;2124:6;2132;2140;2189:2;2177:9;2168:7;2164:23;2160:32;2157:119;;;2195:79;;:::i;:::-;2157:119;2315:1;2340:53;2385:7;2376:6;2365:9;2361:22;2340:53;:::i;:::-;2330:63;;2286:117;2442:2;2468:53;2513:7;2504:6;2493:9;2489:22;2468:53;:::i;:::-;2458:63;;2413:118;2570:2;2596:53;2641:7;2632:6;2621:9;2617:22;2596:53;:::i;:::-;2586:63;;2541:118;2047:619;;;;;:::o;2672:468::-;2737:6;2745;2794:2;2782:9;2773:7;2769:23;2765:32;2762:119;;;2800:79;;:::i;:::-;2762:119;2920:1;2945:53;2990:7;2981:6;2970:9;2966:22;2945:53;:::i;:::-;2935:63;;2891:117;3047:2;3073:50;3115:7;3106:6;3095:9;3091:22;3073:50;:::i;:::-;3063:60;;3018:115;2672:468;;;;;:::o;3146:474::-;3214:6;3222;3271:2;3259:9;3250:7;3246:23;3242:32;3239:119;;;3277:79;;:::i;:::-;3239:119;3397:1;3422:53;3467:7;3458:6;3447:9;3443:22;3422:53;:::i;:::-;3412:63;;3368:117;3524:2;3550:53;3595:7;3586:6;3575:9;3571:22;3550:53;:::i;:::-;3540:63;;3495:118;3146:474;;;;;:::o;3626:::-;3694:6;3702;3751:2;3739:9;3730:7;3726:23;3722:32;3719:119;;;3757:79;;:::i;:::-;3719:119;3877:1;3902:53;3947:7;3938:6;3927:9;3923:22;3902:53;:::i;:::-;3892:63;;3848:117;4004:2;4030:53;4075:7;4066:6;4055:9;4051:22;4030:53;:::i;:::-;4020:63;;3975:118;3626:474;;;;;:::o;4106:663::-;4194:6;4202;4210;4259:2;4247:9;4238:7;4234:23;4230:32;4227:119;;;4265:79;;:::i;:::-;4227:119;4385:1;4410:64;4466:7;4457:6;4446:9;4442:22;4410:64;:::i;:::-;4400:74;;4356:128;4523:2;4549:64;4605:7;4596:6;4585:9;4581:22;4549:64;:::i;:::-;4539:74;;4494:129;4662:2;4688:64;4744:7;4735:6;4724:9;4720:22;4688:64;:::i;:::-;4678:74;;4633:129;4106:663;;;;;:::o;4775:325::-;4832:6;4881:2;4869:9;4860:7;4856:23;4852:32;4849:119;;;4887:79;;:::i;:::-;4849:119;5007:1;5032:51;5075:7;5066:6;5055:9;5051:22;5032:51;:::i;:::-;5022:61;;4978:115;4775:325;;;;:::o;5106:179::-;5175:10;5196:46;5238:3;5230:6;5196:46;:::i;:::-;5274:4;5269:3;5265:14;5251:28;;5106:179;;;;:::o;5291:108::-;5368:24;5386:5;5368:24;:::i;:::-;5363:3;5356:37;5291:108;;:::o;5405:118::-;5492:24;5510:5;5492:24;:::i;:::-;5487:3;5480:37;5405:118;;:::o;5559:732::-;5678:3;5707:54;5755:5;5707:54;:::i;:::-;5777:86;5856:6;5851:3;5777:86;:::i;:::-;5770:93;;5887:56;5937:5;5887:56;:::i;:::-;5966:7;5997:1;5982:284;6007:6;6004:1;6001:13;5982:284;;;6083:6;6077:13;6110:63;6169:3;6154:13;6110:63;:::i;:::-;6103:70;;6196:60;6249:6;6196:60;:::i;:::-;6186:70;;6042:224;6029:1;6026;6022:9;6017:14;;5982:284;;;5986:14;6282:3;6275:10;;5683:608;;;5559:732;;;;:::o;6297:109::-;6378:21;6393:5;6378:21;:::i;:::-;6373:3;6366:34;6297:109;;:::o;6412:175::-;6521:59;6574:5;6521:59;:::i;:::-;6516:3;6509:72;6412:175;;:::o;6593:147::-;6688:45;6727:5;6688:45;:::i;:::-;6683:3;6676:58;6593:147;;:::o;6746:364::-;6834:3;6862:39;6895:5;6862:39;:::i;:::-;6917:71;6981:6;6976:3;6917:71;:::i;:::-;6910:78;;6997:52;7042:6;7037:3;7030:4;7023:5;7019:16;6997:52;:::i;:::-;7074:29;7096:6;7074:29;:::i;:::-;7069:3;7065:39;7058:46;;6838:272;6746:364;;;;:::o;7116:365::-;7258:3;7279:66;7343:1;7338:3;7279:66;:::i;:::-;7272:73;;7354:93;7443:3;7354:93;:::i;:::-;7472:2;7467:3;7463:12;7456:19;;7116:365;;;:::o;7487:366::-;7629:3;7650:67;7714:2;7709:3;7650:67;:::i;:::-;7643:74;;7726:93;7815:3;7726:93;:::i;:::-;7844:2;7839:3;7835:12;7828:19;;7487:366;;;:::o;7859:::-;8001:3;8022:67;8086:2;8081:3;8022:67;:::i;:::-;8015:74;;8098:93;8187:3;8098:93;:::i;:::-;8216:2;8211:3;8207:12;8200:19;;7859:366;;;:::o;8231:365::-;8373:3;8394:66;8458:1;8453:3;8394:66;:::i;:::-;8387:73;;8469:93;8558:3;8469:93;:::i;:::-;8587:2;8582:3;8578:12;8571:19;;8231:365;;;:::o;8602:366::-;8744:3;8765:67;8829:2;8824:3;8765:67;:::i;:::-;8758:74;;8841:93;8930:3;8841:93;:::i;:::-;8959:2;8954:3;8950:12;8943:19;;8602:366;;;:::o;8974:365::-;9116:3;9137:66;9201:1;9196:3;9137:66;:::i;:::-;9130:73;;9212:93;9301:3;9212:93;:::i;:::-;9330:2;9325:3;9321:12;9314:19;;8974:365;;;:::o;9345:366::-;9487:3;9508:67;9572:2;9567:3;9508:67;:::i;:::-;9501:74;;9584:93;9673:3;9584:93;:::i;:::-;9702:2;9697:3;9693:12;9686:19;;9345:366;;;:::o;9717:118::-;9804:24;9822:5;9804:24;:::i;:::-;9799:3;9792:37;9717:118;;:::o;9841:112::-;9924:22;9940:5;9924:22;:::i;:::-;9919:3;9912:35;9841:112;;:::o;9959:222::-;10052:4;10090:2;10079:9;10075:18;10067:26;;10103:71;10171:1;10160:9;10156:17;10147:6;10103:71;:::i;:::-;9959:222;;;;:::o;10187:807::-;10436:4;10474:3;10463:9;10459:19;10451:27;;10488:71;10556:1;10545:9;10541:17;10532:6;10488:71;:::i;:::-;10569:72;10637:2;10626:9;10622:18;10613:6;10569:72;:::i;:::-;10651:80;10727:2;10716:9;10712:18;10703:6;10651:80;:::i;:::-;10741;10817:2;10806:9;10802:18;10793:6;10741:80;:::i;:::-;10831:73;10899:3;10888:9;10884:19;10875:6;10831:73;:::i;:::-;10914;10982:3;10971:9;10967:19;10958:6;10914:73;:::i;:::-;10187:807;;;;;;;;;:::o;11000:210::-;11087:4;11125:2;11114:9;11110:18;11102:26;;11138:65;11200:1;11189:9;11185:17;11176:6;11138:65;:::i;:::-;11000:210;;;;:::o;11216:266::-;11331:4;11369:2;11358:9;11354:18;11346:26;;11382:93;11472:1;11461:9;11457:17;11448:6;11382:93;:::i;:::-;11216:266;;;;:::o;11488:313::-;11601:4;11639:2;11628:9;11624:18;11616:26;;11688:9;11682:4;11678:20;11674:1;11663:9;11659:17;11652:47;11716:78;11789:4;11780:6;11716:78;:::i;:::-;11708:86;;11488:313;;;;:::o;11807:419::-;11973:4;12011:2;12000:9;11996:18;11988:26;;12060:9;12054:4;12050:20;12046:1;12035:9;12031:17;12024:47;12088:131;12214:4;12088:131;:::i;:::-;12080:139;;11807:419;;;:::o;12232:::-;12398:4;12436:2;12425:9;12421:18;12413:26;;12485:9;12479:4;12475:20;12471:1;12460:9;12456:17;12449:47;12513:131;12639:4;12513:131;:::i;:::-;12505:139;;12232:419;;;:::o;12657:::-;12823:4;12861:2;12850:9;12846:18;12838:26;;12910:9;12904:4;12900:20;12896:1;12885:9;12881:17;12874:47;12938:131;13064:4;12938:131;:::i;:::-;12930:139;;12657:419;;;:::o;13082:::-;13248:4;13286:2;13275:9;13271:18;13263:26;;13335:9;13329:4;13325:20;13321:1;13310:9;13306:17;13299:47;13363:131;13489:4;13363:131;:::i;:::-;13355:139;;13082:419;;;:::o;13507:::-;13673:4;13711:2;13700:9;13696:18;13688:26;;13760:9;13754:4;13750:20;13746:1;13735:9;13731:17;13724:47;13788:131;13914:4;13788:131;:::i;:::-;13780:139;;13507:419;;;:::o;13932:::-;14098:4;14136:2;14125:9;14121:18;14113:26;;14185:9;14179:4;14175:20;14171:1;14160:9;14156:17;14149:47;14213:131;14339:4;14213:131;:::i;:::-;14205:139;;13932:419;;;:::o;14357:::-;14523:4;14561:2;14550:9;14546:18;14538:26;;14610:9;14604:4;14600:20;14596:1;14585:9;14581:17;14574:47;14638:131;14764:4;14638:131;:::i;:::-;14630:139;;14357:419;;;:::o;14782:222::-;14875:4;14913:2;14902:9;14898:18;14890:26;;14926:71;14994:1;14983:9;14979:17;14970:6;14926:71;:::i;:::-;14782:222;;;;:::o;15010:831::-;15273:4;15311:3;15300:9;15296:19;15288:27;;15325:71;15393:1;15382:9;15378:17;15369:6;15325:71;:::i;:::-;15406:80;15482:2;15471:9;15467:18;15458:6;15406:80;:::i;:::-;15533:9;15527:4;15523:20;15518:2;15507:9;15503:18;15496:48;15561:108;15664:4;15655:6;15561:108;:::i;:::-;15553:116;;15679:72;15747:2;15736:9;15732:18;15723:6;15679:72;:::i;:::-;15761:73;15829:3;15818:9;15814:19;15805:6;15761:73;:::i;:::-;15010:831;;;;;;;;:::o;15847:214::-;15936:4;15974:2;15963:9;15959:18;15951:26;;15987:67;16051:1;16040:9;16036:17;16027:6;15987:67;:::i;:::-;15847:214;;;;:::o;16148:132::-;16215:4;16238:3;16230:11;;16268:4;16263:3;16259:14;16251:22;;16148:132;;;:::o;16286:114::-;16353:6;16387:5;16381:12;16371:22;;16286:114;;;:::o;16406:99::-;16458:6;16492:5;16486:12;16476:22;;16406:99;;;:::o;16511:113::-;16581:4;16613;16608:3;16604:14;16596:22;;16511:113;;;:::o;16630:184::-;16729:11;16763:6;16758:3;16751:19;16803:4;16798:3;16794:14;16779:29;;16630:184;;;;:::o;16820:169::-;16904:11;16938:6;16933:3;16926:19;16978:4;16973:3;16969:14;16954:29;;16820:169;;;;:::o;16995:305::-;17035:3;17054:20;17072:1;17054:20;:::i;:::-;17049:25;;17088:20;17106:1;17088:20;:::i;:::-;17083:25;;17242:1;17174:66;17170:74;17167:1;17164:81;17161:107;;;17248:18;;:::i;:::-;17161:107;17292:1;17289;17285:9;17278:16;;16995:305;;;;:::o;17306:185::-;17346:1;17363:20;17381:1;17363:20;:::i;:::-;17358:25;;17397:20;17415:1;17397:20;:::i;:::-;17392:25;;17436:1;17426:35;;17441:18;;:::i;:::-;17426:35;17483:1;17480;17476:9;17471:14;;17306:185;;;;:::o;17497:848::-;17558:5;17565:4;17589:6;17580:15;;17613:5;17604:14;;17627:712;17648:1;17638:8;17635:15;17627:712;;;17743:4;17738:3;17734:14;17728:4;17725:24;17722:50;;;17752:18;;:::i;:::-;17722:50;17802:1;17792:8;17788:16;17785:451;;;18217:4;18210:5;18206:16;18197:25;;17785:451;18267:4;18261;18257:15;18249:23;;18297:32;18320:8;18297:32;:::i;:::-;18285:44;;17627:712;;;17497:848;;;;;;;:::o;18351:281::-;18409:5;18433:23;18451:4;18433:23;:::i;:::-;18425:31;;18477:25;18493:8;18477:25;:::i;:::-;18465:37;;18521:104;18558:66;18548:8;18542:4;18521:104;:::i;:::-;18512:113;;18351:281;;;;:::o;18638:1073::-;18692:5;18883:8;18873:40;;18904:1;18895:10;;18906:5;;18873:40;18932:4;18922:36;;18949:1;18940:10;;18951:5;;18922:36;19018:4;19066:1;19061:27;;;;19102:1;19097:191;;;;19011:277;;19061:27;19079:1;19070:10;;19081:5;;;19097:191;19142:3;19132:8;19129:17;19126:43;;;19149:18;;:::i;:::-;19126:43;19198:8;19195:1;19191:16;19182:25;;19233:3;19226:5;19223:14;19220:40;;;19240:18;;:::i;:::-;19220:40;19273:5;;;19011:277;;19397:2;19387:8;19384:16;19378:3;19372:4;19369:13;19365:36;19347:2;19337:8;19334:16;19329:2;19323:4;19320:12;19316:35;19300:111;19297:246;;;19453:8;19447:4;19443:19;19434:28;;19488:3;19481:5;19478:14;19475:40;;;19495:18;;:::i;:::-;19475:40;19528:5;;19297:246;19568:42;19606:3;19596:8;19590:4;19587:1;19568:42;:::i;:::-;19553:57;;;;19642:4;19637:3;19633:14;19626:5;19623:25;19620:51;;;19651:18;;:::i;:::-;19620:51;19700:4;19693:5;19689:16;19680:25;;18638:1073;;;;;;:::o;19717:348::-;19757:7;19780:20;19798:1;19780:20;:::i;:::-;19775:25;;19814:20;19832:1;19814:20;:::i;:::-;19809:25;;20002:1;19934:66;19930:74;19927:1;19924:81;19919:1;19912:9;19905:17;19901:105;19898:131;;;20009:18;;:::i;:::-;19898:131;20057:1;20054;20050:9;20039:20;;19717:348;;;;:::o;20071:191::-;20111:4;20131:20;20149:1;20131:20;:::i;:::-;20126:25;;20165:20;20183:1;20165:20;:::i;:::-;20160:25;;20204:1;20201;20198:8;20195:34;;;20209:18;;:::i;:::-;20195:34;20254:1;20251;20247:9;20239:17;;20071:191;;;;:::o;20268:96::-;20305:7;20334:24;20352:5;20334:24;:::i;:::-;20323:35;;20268:96;;;:::o;20370:90::-;20404:7;20447:5;20440:13;20433:21;20422:32;;20370:90;;;:::o;20466:126::-;20503:7;20543:42;20536:5;20532:54;20521:65;;20466:126;;;:::o;20598:77::-;20635:7;20664:5;20653:16;;20598:77;;;:::o;20681:86::-;20716:7;20756:4;20749:5;20745:16;20734:27;;20681:86;;;:::o;20773:148::-;20845:9;20878:37;20909:5;20878:37;:::i;:::-;20865:50;;20773:148;;;:::o;20927:121::-;20985:9;21018:24;21036:5;21018:24;:::i;:::-;21005:37;;20927:121;;;:::o;21054:126::-;21104:9;21137:37;21168:5;21137:37;:::i;:::-;21124:50;;21054:126;;;:::o;21186:113::-;21236:9;21269:24;21287:5;21269:24;:::i;:::-;21256:37;;21186:113;;;:::o;21305:307::-;21373:1;21383:113;21397:6;21394:1;21391:13;21383:113;;;21482:1;21477:3;21473:11;21467:18;21463:1;21458:3;21454:11;21447:39;21419:2;21416:1;21412:10;21407:15;;21383:113;;;21514:6;21511:1;21508:13;21505:101;;;21594:1;21585:6;21580:3;21576:16;21569:27;21505:101;21354:258;21305:307;;;:::o;21618:180::-;21666:77;21663:1;21656:88;21763:4;21760:1;21753:15;21787:4;21784:1;21777:15;21804:180;21852:77;21849:1;21842:88;21949:4;21946:1;21939:15;21973:4;21970:1;21963:15;21990:180;22038:77;22035:1;22028:88;22135:4;22132:1;22125:15;22159:4;22156:1;22149:15;22176:180;22224:77;22221:1;22214:88;22321:4;22318:1;22311:15;22345:4;22342:1;22335:15;22485:117;22594:1;22591;22584:12;22608:102;22649:6;22700:2;22696:7;22691:2;22684:5;22680:14;22676:28;22666:38;;22608:102;;;:::o;22716:::-;22758:8;22805:5;22802:1;22798:13;22777:34;;22716:102;;;:::o;22824:153::-;22964:5;22960:1;22952:6;22948:14;22941:29;22824:153;:::o;22983:167::-;23123:19;23119:1;23111:6;23107:14;23100:43;22983:167;:::o;23156:170::-;23296:22;23292:1;23284:6;23280:14;23273:46;23156:170;:::o;23332:159::-;23472:11;23468:1;23460:6;23456:14;23449:35;23332:159;:::o;23497:165::-;23637:17;23633:1;23625:6;23621:14;23614:41;23497:165;:::o;23668:159::-;23808:11;23804:1;23796:6;23792:14;23785:35;23668:159;:::o;23833:162::-;23973:14;23969:1;23961:6;23957:14;23950:38;23833:162;:::o;24001:122::-;24074:24;24092:5;24074:24;:::i;:::-;24067:5;24064:35;24054:63;;24113:1;24110;24103:12;24054:63;24001:122;:::o;24129:116::-;24199:21;24214:5;24199:21;:::i;:::-;24192:5;24189:32;24179:60;;24235:1;24232;24225:12;24179:60;24129:116;:::o;24251:122::-;24324:24;24342:5;24324:24;:::i;:::-;24317:5;24314:35;24304:63;;24363:1;24360;24353:12;24304:63;24251:122;:::o;24379:118::-;24450:22;24466:5;24450:22;:::i;:::-;24443:5;24440:33;24430:61;;24487:1;24484;24477:12;24430:61;24379:118;:::o

Swarm Source

ipfs://1f71fcd98f5be27cc114b2cad1007bc64291dfe1ea4639ef59c5caca9d8d2160
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.