ETH Price: $3,511.02 (-0.07%)
Gas: 2 Gwei

Token

Red Panda (REDPANDA)
 

Overview

Max Total Supply

100,000,000 REDPANDA

Holders

109

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
654,253.605119673 REDPANDA

Value
$0.00
0x035abc552201330f113a0e09c2b080727238ae2c
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:
Red_Panda

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-31
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.19;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

interface IUniswapV2Factory {
    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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

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

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

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    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 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 IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}

contract Red_Panda is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "Red Panda";
    string private _symbol = "REDPANDA";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0x02B8D25B4713BDab5E2AA4EAa2B8669AF1C4f0DA); // Marketing
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 35;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 45;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 80;

    uint256 public _totalTaxIfBuying = 35;
    uint256 public _totalTaxIfSelling = 45;
    uint256 public _totalDistributionShares = 80;

    uint256 private _totalSupply = 100 * 10**6 * 10**9;
    uint256 public _maxTxAmount = 3 * 10**6 * 10**9;
    uint256 public _walletMax = 3 * 10**6 * 10**9;
    uint256 private minimumTokensBeforeSwap = 550000 * 10**9; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(marketingWalletAddress)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(marketingWalletAddress)] = true;
        isWalletLimitExempt[address(0x71B5759d73262FBb223956913ecF4ecC51057641)] = true; //Pinksale address
        isWalletLimitExempt[address(deadAddress)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(marketingWalletAddress)] = true;
        isTxLimitExempt[address(0x71B5759d73262FBb223956913ecF4ecC51057641)] = true; //Pinksale address
        isTxLimitExempt[address(deadAddress)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

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

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

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee);
        require(_totalTaxIfBuying <= 35, "Buy tax must be less than 35%");
    }

    function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee);
        require(_totalTaxIfSelling <= 45, "Sell tax must be less than 45%");
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare);
        require(_totalDistributionShares <=80, "Distribution Shares must be less than 80%");
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= _totalSupply / 200, "Cannot set MaxTxAmount lower than 0.5%");
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= _totalSupply / 200, "Cannot set MaxWallet lower than 0.5%");
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        require(newLimit > 1, "NumTokensBeforeSwap should be not 0");
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

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

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

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

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountReceived.mul(_marketingShare).div(totalETHFee);

        if(amountETHMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountETHMarketing);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600981526020017f5265642050616e64610000000000000000000000000000000000000000000000815250600290816200004a919062000fb0565b506040518060400160405280600881526020017f52454450414e44410000000000000000000000000000000000000000000000008152506003908162000091919062000fb0565b506009600460006101000a81548160ff021916908360ff1602179055507302b8d25b4713bdab5e2aa4eaa2b8669af1c4f0da600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000600b556023600c556000600d55602d600e556000600f5560506010556023601155602d601255605060135567016345785d8a0000601455660aa87bee538000601555660aa87bee5380006016556601f438daa060006017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff021916908315150217905550348015620001f057600080fd5b5060006200020362000ca260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000306573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032c919062001101565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ba919062001101565b6040518363ffffffff1660e01b8152600401620003d992919062001144565b6020604051808303816000875af1158015620003f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041f919062001101565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601454600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760006200055b62000caa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000697600c54600b5462000cd360201b90919060201c565b601181905550620006b6600e54600d5462000cd360201b90919060201c565b601281905550620006d5601054600f5462000cd360201b90919060201c565b601381905550600160086000620006f162000caa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860007371b5759d73262fbb223956913ecf4ecc5105764173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006200096a62000caa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960007371b5759d73262fbb223956913ecf4ecc5105764173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000be462000ca260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000c3262000ca260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000c93919062001182565b60405180910390a3506200128c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000ce49190620011ce565b90508381101562000d2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d23906200126a565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000db857607f821691505b60208210810362000dce5762000dcd62000d70565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000df9565b62000e44868362000df9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e9162000e8b62000e858462000e5c565b62000e66565b62000e5c565b9050919050565b6000819050919050565b62000ead8362000e70565b62000ec562000ebc8262000e98565b84845462000e06565b825550505050565b600090565b62000edc62000ecd565b62000ee981848462000ea2565b505050565b5b8181101562000f115762000f0560008262000ed2565b60018101905062000eef565b5050565b601f82111562000f605762000f2a8162000dd4565b62000f358462000de9565b8101602085101562000f45578190505b62000f5d62000f548562000de9565b83018262000eee565b50505b505050565b600082821c905092915050565b600062000f856000198460080262000f65565b1980831691505092915050565b600062000fa0838362000f72565b9150826002028217905092915050565b62000fbb8262000d36565b67ffffffffffffffff81111562000fd75762000fd662000d41565b5b62000fe3825462000d9f565b62000ff082828562000f15565b600060209050601f83116001811462001028576000841562001013578287015190505b6200101f858262000f92565b8655506200108f565b601f198416620010388662000dd4565b60005b8281101562001062578489015182556001820191506020850194506020810190506200103b565b868310156200108257848901516200107e601f89168262000f72565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010c9826200109c565b9050919050565b620010db81620010bc565b8114620010e757600080fd5b50565b600081519050620010fb81620010d0565b92915050565b6000602082840312156200111a576200111962001097565b5b60006200112a84828501620010ea565b91505092915050565b6200113e81620010bc565b82525050565b60006040820190506200115b600083018562001133565b6200116a602083018462001133565b9392505050565b6200117c8162000e5c565b82525050565b600060208201905062001199600083018462001171565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011db8262000e5c565b9150620011e88362000e5c565b92508282019050808211156200120357620012026200119f565b5b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001252601b8362001209565b91506200125f826200121a565b602082019050919050565b60006020820190508181036000830152620012858162001243565b9050919050565b608051614310620012af60003960008181610ef10152610f1d01526143106000f3fe6080604052600436106102b25760003560e01c80638da5cb5b11610175578063c8607952116100dc578063ec28438a11610095578063f0cd1dac1161006f578063f0cd1dac14610aeb578063f1d5f51714610b16578063f84ba65d14610b3f578063f872858a14610b68576102b9565b8063ec28438a14610a70578063eea5b63f14610a99578063ef422a1814610ac2576102b9565b8063c86079521461094a578063c867d60b14610975578063d158272d146109b2578063da00097d146109dd578063dc44b6a014610a08578063dd62ed3e14610a33576102b9565b8063a457c2d71161012e578063a457c2d714610828578063a9059cbb14610865578063aa35822c146108a2578063c49b9a80146108cb578063c5d24189146108f4578063c816841b1461091f576102b9565b80638da5cb5b1461073c578063914eb66a1461076757806395d89b411461077e578063a073d37f146107a9578063a08e671f146107d4578063a11a1682146107ff576102b9565b80633ecad2711161021957806370a08231116101d257806370a08231146106165780637d1db4a514610653578063807c2d9c1461067e57806382eefb43146106a957806388790a68146106d45780638b42507f146106ff576102b9565b80633ecad271146104f25780634a74bb021461052f5780634cb80fd51461055a5780635342acb41461058357806357a5802f146105c057806361a23c69146105eb576102b9565b80632563ae831161026b5780632563ae83146103e257806327c8f8351461040b5780632b112e4914610436578063313ce56714610461578063395093511461048c5780633b97084a146104c9576102b9565b806306fdde03146102be578063095ea7b3146102e95780631694505e1461032657806318160ddd146103515780632198cf6c1461037c57806323b872dd146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b93565b6040516102e0919061326c565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613327565b610c25565b60405161031d9190613382565b60405180910390f35b34801561033257600080fd5b5061033b610c43565b60405161034891906133fc565b60405180910390f35b34801561035d57600080fd5b50610366610c69565b6040516103739190613426565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e919061346d565b610c73565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906134ad565b610d63565b6040516103d99190613382565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613500565b610e3d565b005b34801561041757600080fd5b50610420610eef565b60405161042d919061353c565b60405180910390f35b34801561044257600080fd5b5061044b610f13565b6040516104589190613426565b60405180910390f35b34801561046d57600080fd5b50610476610f57565b6040516104839190613573565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190613327565b610f6e565b6040516104c09190613382565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb919061358e565b611021565b005b3480156104fe57600080fd5b50610519600480360381019061051491906135bb565b611103565b6040516105269190613382565b60405180910390f35b34801561053b57600080fd5b50610544611123565b6040516105519190613382565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c91906135bb565b611136565b005b34801561058f57600080fd5b506105aa60048036038101906105a591906135bb565b61120f565b6040516105b79190613382565b60405180910390f35b3480156105cc57600080fd5b506105d561122f565b6040516105e29190613426565b60405180910390f35b3480156105f757600080fd5b50610600611235565b60405161060d9190613426565b60405180910390f35b34801561062257600080fd5b5061063d600480360381019061063891906135bb565b61123b565b60405161064a9190613426565b60405180910390f35b34801561065f57600080fd5b50610668611284565b6040516106759190613426565b60405180910390f35b34801561068a57600080fd5b5061069361128a565b6040516106a09190613426565b60405180910390f35b3480156106b557600080fd5b506106be611290565b6040516106cb9190613426565b60405180910390f35b3480156106e057600080fd5b506106e9611296565b6040516106f69190613426565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906135bb565b61129c565b6040516107339190613382565b60405180910390f35b34801561074857600080fd5b506107516112bc565b60405161075e919061353c565b60405180910390f35b34801561077357600080fd5b5061077c6112e5565b005b34801561078a57600080fd5b50610793611438565b6040516107a0919061326c565b60405180910390f35b3480156107b557600080fd5b506107be6114ca565b6040516107cb9190613426565b60405180910390f35b3480156107e057600080fd5b506107e96114d4565b6040516107f69190613426565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906135e8565b6114da565b005b34801561083457600080fd5b5061084f600480360381019061084a9190613327565b6115e4565b60405161085c9190613382565b60405180910390f35b34801561087157600080fd5b5061088c60048036038101906108879190613327565b6116b1565b6040516108999190613382565b60405180910390f35b3480156108ae57600080fd5b506108c960048036038101906108c491906135e8565b6116d0565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190613500565b6117da565b005b34801561090057600080fd5b506109096118c3565b6040516109169190613426565b60405180910390f35b34801561092b57600080fd5b506109346118c9565b604051610941919061353c565b60405180910390f35b34801561095657600080fd5b5061095f6118ef565b60405161096c9190613426565b60405180910390f35b34801561098157600080fd5b5061099c600480360381019061099791906135bb565b6118f5565b6040516109a99190613382565b60405180910390f35b3480156109be57600080fd5b506109c7611915565b6040516109d49190613649565b60405180910390f35b3480156109e957600080fd5b506109f261193b565b6040516109ff9190613382565b60405180910390f35b348015610a1457600080fd5b50610a1d61194e565b604051610a2a9190613426565b60405180910390f35b348015610a3f57600080fd5b50610a5a6004803603810190610a559190613664565b611954565b604051610a679190613426565b60405180910390f35b348015610a7c57600080fd5b50610a976004803603810190610a92919061358e565b6119db565b005b348015610aa557600080fd5b50610ac06004803603810190610abb91906135e8565b611acb565b005b348015610ace57600080fd5b50610ae96004803603810190610ae4919061346d565b611bd5565b005b348015610af757600080fd5b50610b00611cc5565b604051610b0d9190613426565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b38919061358e565b611ccb565b005b348015610b4b57600080fd5b50610b666004803603810190610b61919061346d565b611dbb565b005b348015610b7457600080fd5b50610b7d611eab565b604051610b8a9190613382565b60405180910390f35b606060028054610ba2906136d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bce906136d3565b8015610c1b5780601f10610bf057610100808354040283529160200191610c1b565b820191906000526020600020905b815481529060010190602001808311610bfe57829003601f168201915b5050505050905090565b6000610c39610c32611ebe565b8484611ec6565b6001905092915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b610c7b611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90613750565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610d7084848461208f565b50610e3284610d7d611ebe565b610e2d8560405180606001604052806028815260200161428e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610de3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b611ec6565b600190509392505050565b610e45611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613750565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f52610f417f000000000000000000000000000000000000000000000000000000000000000061123b565b6014546126d690919063ffffffff16565b905090565b6000600460009054906101000a900460ff16905090565b6000611017610f7b611ebe565b846110128560066000610f8c611ebe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b611ec6565b6001905092915050565b611029611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad90613750565b60405180910390fd5b600181116110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906137e2565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61113e611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290613750565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b600f5481565b60105481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60155481565b60165481565b60125481565b600d5481565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ed611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190613750565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054611447906136d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611473906136d3565b80156114c05780601f10611495576101008083540402835291602001916114c0565b820191906000526020600020905b8154815290600101906020018083116114a357829003601f168201915b5050505050905090565b6000601754905090565b60135481565b6114e2611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613750565b60405180910390fd5b81600d8190555080600e81905550611594600e54600d5461272090919063ffffffff16565b601281905550602d60125411156115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d79061384e565b60405180910390fd5b5050565b60006116a76115f1611ebe565b846116a2856040518060600160405280602581526020016142b6602591396006600061161b611ebe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b611ec6565b6001905092915050565b60006116c56116be611ebe565b848461208f565b506001905092915050565b6116d8611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90613750565b60405180910390fd5b81600b8190555080600c8190555061178a600c54600b5461272090919063ffffffff16565b601181905550602360115411156117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd906138ba565b60405180910390fd5b5050565b6117e2611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186690613750565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118b89190613382565b60405180910390a150565b600c5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60086020528060005260406000206000915054906101000a900460ff1681565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960169054906101000a900460ff1681565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119e3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613750565b60405180910390fd5b60c8601454611a7f9190613938565b811015611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906139db565b60405180910390fd5b8060158190555050565b611ad3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5790613750565b60405180910390fd5b81600f8190555080601081905550611b85601054600f5461272090919063ffffffff16565b60138190555060506013541115611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc890613a6d565b60405180910390fd5b5050565b611bdd611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613750565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b611cd3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790613750565b60405180910390fd5b60c8601454611d6f9190613938565b811015611db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da890613aff565b60405180910390fd5b8060168190555050565b611dc3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790613750565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90613b91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9b90613c23565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120829190613426565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613cb5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590613d47565b60405180910390fd5b601960149054906101000a900460ff16156121955761218e84848461277e565b905061266b565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122395750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561228457601554821115612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a90613dd9565b60405180910390fd5b5b600061228f3061123b565b9050600060175482101590508080156122b55750601960149054906101000a900460ff16155b801561230b5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123235750601960159054906101000a900460ff165b1561234d57601960169054906101000a900460ff16156123435760175491505b61234c82612951565b5b6123d6846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124bc5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6124d0576124cb878787612ae2565b6124d2565b845b9050601960179054906101000a900460ff16801561253a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125695760165461255d8261254f8961123b565b61272090919063ffffffff16565b111561256857600080fd5b5b6125bb81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161265b9190613426565b60405180910390a3600193505050505b9392505050565b60008383111582906126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b1919061326c565b60405180910390fd5b50600083856126c99190613df9565b9050809150509392505050565b600061271883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612672565b905092915050565b600080828461272f9190613e2d565b905083811015612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613ead565b60405180910390fd5b8091505092915050565b6000612809826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061289e82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161293e9190613426565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff02191690831515021790555060006129aa600261299c60135461298e600f5487612d0990919063ffffffff16565b612d8390919063ffffffff16565b612d8390919063ffffffff16565b905060006129c182846126d690919063ffffffff16565b90506129cc81612dcd565b600047905060006129fd6129ec6002600f54612d8390919063ffffffff16565b6013546126d690919063ffffffff16565b90506000612a3b6002612a2d84612a1f600f5488612d0990919063ffffffff16565b612d8390919063ffffffff16565b612d8390919063ffffffff16565b90506000612a6683612a5860105487612d0990919063ffffffff16565b612d8390919063ffffffff16565b90506000811115612a9e57612a9d600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613049565b5b600082118015612aae5750600086115b15612abe57612abd8683613094565b5b5050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b6a57612b636064612b5560115486612d0990919063ffffffff16565b612d8390919063ffffffff16565b9050612be8565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612be757612be46064612bd660125486612d0990919063ffffffff16565b612d8390919063ffffffff16565b90505b5b6000811115612cec57612c4381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ce39190613426565b60405180910390a35b612cff81846126d690919063ffffffff16565b9150509392505050565b6000808303612d1b5760009050612d7d565b60008284612d299190613ecd565b9050828482612d389190613938565b14612d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6f90613f81565b60405180910390fd5b809150505b92915050565b6000612dc583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613179565b905092915050565b6000600267ffffffffffffffff811115612dea57612de9613fa1565b5b604051908082528060200260200182016040528015612e185781602001602082028036833780820191505090505b5090503081600081518110612e3057612e2f613fd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efb9190614014565b81600181518110612f0f57612f0e613fd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f7630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fda95949392919061413a565b600060405180830381600087803b158015612ff457600080fd5b505af1158015613008573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161303d929190614194565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561308f573d6000803e3d6000fd5b505050565b6130c130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061310d6112bc565b426040518863ffffffff1660e01b815260040161312f969594939291906141c4565b60606040518083038185885af115801561314d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613172919061423a565b5050505050565b600080831182906131c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b7919061326c565b60405180910390fd5b50600083856131cf9190613938565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132165780820151818401526020810190506131fb565b60008484015250505050565b6000601f19601f8301169050919050565b600061323e826131dc565b61324881856131e7565b93506132588185602086016131f8565b61326181613222565b840191505092915050565b600060208201905081810360008301526132868184613233565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132be82613293565b9050919050565b6132ce816132b3565b81146132d957600080fd5b50565b6000813590506132eb816132c5565b92915050565b6000819050919050565b613304816132f1565b811461330f57600080fd5b50565b600081359050613321816132fb565b92915050565b6000806040838503121561333e5761333d61328e565b5b600061334c858286016132dc565b925050602061335d85828601613312565b9150509250929050565b60008115159050919050565b61337c81613367565b82525050565b60006020820190506133976000830184613373565b92915050565b6000819050919050565b60006133c26133bd6133b884613293565b61339d565b613293565b9050919050565b60006133d4826133a7565b9050919050565b60006133e6826133c9565b9050919050565b6133f6816133db565b82525050565b600060208201905061341160008301846133ed565b92915050565b613420816132f1565b82525050565b600060208201905061343b6000830184613417565b92915050565b61344a81613367565b811461345557600080fd5b50565b60008135905061346781613441565b92915050565b600080604083850312156134845761348361328e565b5b6000613492858286016132dc565b92505060206134a385828601613458565b9150509250929050565b6000806000606084860312156134c6576134c561328e565b5b60006134d4868287016132dc565b93505060206134e5868287016132dc565b92505060406134f686828701613312565b9150509250925092565b6000602082840312156135165761351561328e565b5b600061352484828501613458565b91505092915050565b613536816132b3565b82525050565b6000602082019050613551600083018461352d565b92915050565b600060ff82169050919050565b61356d81613557565b82525050565b60006020820190506135886000830184613564565b92915050565b6000602082840312156135a4576135a361328e565b5b60006135b284828501613312565b91505092915050565b6000602082840312156135d1576135d061328e565b5b60006135df848285016132dc565b91505092915050565b600080604083850312156135ff576135fe61328e565b5b600061360d85828601613312565b925050602061361e85828601613312565b9150509250929050565b600061363382613293565b9050919050565b61364381613628565b82525050565b600060208201905061365e600083018461363a565b92915050565b6000806040838503121561367b5761367a61328e565b5b6000613689858286016132dc565b925050602061369a858286016132dc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136eb57607f821691505b6020821081036136fe576136fd6136a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061373a6020836131e7565b915061374582613704565b602082019050919050565b600060208201905081810360008301526137698161372d565b9050919050565b7f4e756d546f6b656e734265666f7265537761702073686f756c64206265206e6f60008201527f7420300000000000000000000000000000000000000000000000000000000000602082015250565b60006137cc6023836131e7565b91506137d782613770565b604082019050919050565b600060208201905081810360008301526137fb816137bf565b9050919050565b7f53656c6c20746178206d757374206265206c657373207468616e203435250000600082015250565b6000613838601e836131e7565b915061384382613802565b602082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f42757920746178206d757374206265206c657373207468616e20333525000000600082015250565b60006138a4601d836131e7565b91506138af8261386e565b602082019050919050565b600060208201905081810360008301526138d381613897565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613943826132f1565b915061394e836132f1565b92508261395e5761395d6138da565b5b828204905092915050565b7f43616e6e6f7420736574204d61785478416d6f756e74206c6f7765722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006139c56026836131e7565b91506139d082613969565b604082019050919050565b600060208201905081810360008301526139f4816139b8565b9050919050565b7f446973747269627574696f6e20536861726573206d757374206265206c65737360008201527f207468616e203830250000000000000000000000000000000000000000000000602082015250565b6000613a576029836131e7565b9150613a62826139fb565b604082019050919050565b60006020820190508181036000830152613a8681613a4a565b9050919050565b7f43616e6e6f7420736574204d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613ae96024836131e7565b9150613af482613a8d565b604082019050919050565b60006020820190508181036000830152613b1881613adc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b7b6024836131e7565b9150613b8682613b1f565b604082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c0d6022836131e7565b9150613c1882613bb1565b604082019050919050565b60006020820190508181036000830152613c3c81613c00565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613c9f6025836131e7565b9150613caa82613c43565b604082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d316023836131e7565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613dc36028836131e7565b9150613dce82613d67565b604082019050919050565b60006020820190508181036000830152613df281613db6565b9050919050565b6000613e04826132f1565b9150613e0f836132f1565b9250828203905081811115613e2757613e26613909565b5b92915050565b6000613e38826132f1565b9150613e43836132f1565b9250828201905080821115613e5b57613e5a613909565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e97601b836131e7565b9150613ea282613e61565b602082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b6000613ed8826132f1565b9150613ee3836132f1565b9250828202613ef1816132f1565b91508282048414831517613f0857613f07613909565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f6b6021836131e7565b9150613f7682613f0f565b604082019050919050565b60006020820190508181036000830152613f9a81613f5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061400e816132c5565b92915050565b60006020828403121561402a5761402961328e565b5b600061403884828501613fff565b91505092915050565b6000819050919050565b600061406661406161405c84614041565b61339d565b6132f1565b9050919050565b6140768161404b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140b1816132b3565b82525050565b60006140c383836140a8565b60208301905092915050565b6000602082019050919050565b60006140e78261407c565b6140f18185614087565b93506140fc83614098565b8060005b8381101561412d57815161411488826140b7565b975061411f836140cf565b925050600181019050614100565b5085935050505092915050565b600060a08201905061414f6000830188613417565b61415c602083018761406d565b818103604083015261416e81866140dc565b905061417d606083018561352d565b61418a6080830184613417565b9695505050505050565b60006040820190506141a96000830185613417565b81810360208301526141bb81846140dc565b90509392505050565b600060c0820190506141d9600083018961352d565b6141e66020830188613417565b6141f3604083018761406d565b614200606083018661406d565b61420d608083018561352d565b61421a60a0830184613417565b979650505050505050565b600081519050614234816132fb565b92915050565b6000806000606084860312156142535761425261328e565b5b600061426186828701614225565b935050602061427286828701614225565b925050604061428386828701614225565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220747b2862ff6767a63dc087263ad953051563162727afa507bc4288b8e9a16e4164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80638da5cb5b11610175578063c8607952116100dc578063ec28438a11610095578063f0cd1dac1161006f578063f0cd1dac14610aeb578063f1d5f51714610b16578063f84ba65d14610b3f578063f872858a14610b68576102b9565b8063ec28438a14610a70578063eea5b63f14610a99578063ef422a1814610ac2576102b9565b8063c86079521461094a578063c867d60b14610975578063d158272d146109b2578063da00097d146109dd578063dc44b6a014610a08578063dd62ed3e14610a33576102b9565b8063a457c2d71161012e578063a457c2d714610828578063a9059cbb14610865578063aa35822c146108a2578063c49b9a80146108cb578063c5d24189146108f4578063c816841b1461091f576102b9565b80638da5cb5b1461073c578063914eb66a1461076757806395d89b411461077e578063a073d37f146107a9578063a08e671f146107d4578063a11a1682146107ff576102b9565b80633ecad2711161021957806370a08231116101d257806370a08231146106165780637d1db4a514610653578063807c2d9c1461067e57806382eefb43146106a957806388790a68146106d45780638b42507f146106ff576102b9565b80633ecad271146104f25780634a74bb021461052f5780634cb80fd51461055a5780635342acb41461058357806357a5802f146105c057806361a23c69146105eb576102b9565b80632563ae831161026b5780632563ae83146103e257806327c8f8351461040b5780632b112e4914610436578063313ce56714610461578063395093511461048c5780633b97084a146104c9576102b9565b806306fdde03146102be578063095ea7b3146102e95780631694505e1461032657806318160ddd146103515780632198cf6c1461037c57806323b872dd146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b93565b6040516102e0919061326c565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613327565b610c25565b60405161031d9190613382565b60405180910390f35b34801561033257600080fd5b5061033b610c43565b60405161034891906133fc565b60405180910390f35b34801561035d57600080fd5b50610366610c69565b6040516103739190613426565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e919061346d565b610c73565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906134ad565b610d63565b6040516103d99190613382565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613500565b610e3d565b005b34801561041757600080fd5b50610420610eef565b60405161042d919061353c565b60405180910390f35b34801561044257600080fd5b5061044b610f13565b6040516104589190613426565b60405180910390f35b34801561046d57600080fd5b50610476610f57565b6040516104839190613573565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190613327565b610f6e565b6040516104c09190613382565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb919061358e565b611021565b005b3480156104fe57600080fd5b50610519600480360381019061051491906135bb565b611103565b6040516105269190613382565b60405180910390f35b34801561053b57600080fd5b50610544611123565b6040516105519190613382565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c91906135bb565b611136565b005b34801561058f57600080fd5b506105aa60048036038101906105a591906135bb565b61120f565b6040516105b79190613382565b60405180910390f35b3480156105cc57600080fd5b506105d561122f565b6040516105e29190613426565b60405180910390f35b3480156105f757600080fd5b50610600611235565b60405161060d9190613426565b60405180910390f35b34801561062257600080fd5b5061063d600480360381019061063891906135bb565b61123b565b60405161064a9190613426565b60405180910390f35b34801561065f57600080fd5b50610668611284565b6040516106759190613426565b60405180910390f35b34801561068a57600080fd5b5061069361128a565b6040516106a09190613426565b60405180910390f35b3480156106b557600080fd5b506106be611290565b6040516106cb9190613426565b60405180910390f35b3480156106e057600080fd5b506106e9611296565b6040516106f69190613426565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906135bb565b61129c565b6040516107339190613382565b60405180910390f35b34801561074857600080fd5b506107516112bc565b60405161075e919061353c565b60405180910390f35b34801561077357600080fd5b5061077c6112e5565b005b34801561078a57600080fd5b50610793611438565b6040516107a0919061326c565b60405180910390f35b3480156107b557600080fd5b506107be6114ca565b6040516107cb9190613426565b60405180910390f35b3480156107e057600080fd5b506107e96114d4565b6040516107f69190613426565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906135e8565b6114da565b005b34801561083457600080fd5b5061084f600480360381019061084a9190613327565b6115e4565b60405161085c9190613382565b60405180910390f35b34801561087157600080fd5b5061088c60048036038101906108879190613327565b6116b1565b6040516108999190613382565b60405180910390f35b3480156108ae57600080fd5b506108c960048036038101906108c491906135e8565b6116d0565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190613500565b6117da565b005b34801561090057600080fd5b506109096118c3565b6040516109169190613426565b60405180910390f35b34801561092b57600080fd5b506109346118c9565b604051610941919061353c565b60405180910390f35b34801561095657600080fd5b5061095f6118ef565b60405161096c9190613426565b60405180910390f35b34801561098157600080fd5b5061099c600480360381019061099791906135bb565b6118f5565b6040516109a99190613382565b60405180910390f35b3480156109be57600080fd5b506109c7611915565b6040516109d49190613649565b60405180910390f35b3480156109e957600080fd5b506109f261193b565b6040516109ff9190613382565b60405180910390f35b348015610a1457600080fd5b50610a1d61194e565b604051610a2a9190613426565b60405180910390f35b348015610a3f57600080fd5b50610a5a6004803603810190610a559190613664565b611954565b604051610a679190613426565b60405180910390f35b348015610a7c57600080fd5b50610a976004803603810190610a92919061358e565b6119db565b005b348015610aa557600080fd5b50610ac06004803603810190610abb91906135e8565b611acb565b005b348015610ace57600080fd5b50610ae96004803603810190610ae4919061346d565b611bd5565b005b348015610af757600080fd5b50610b00611cc5565b604051610b0d9190613426565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b38919061358e565b611ccb565b005b348015610b4b57600080fd5b50610b666004803603810190610b61919061346d565b611dbb565b005b348015610b7457600080fd5b50610b7d611eab565b604051610b8a9190613382565b60405180910390f35b606060028054610ba2906136d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bce906136d3565b8015610c1b5780601f10610bf057610100808354040283529160200191610c1b565b820191906000526020600020905b815481529060010190602001808311610bfe57829003601f168201915b5050505050905090565b6000610c39610c32611ebe565b8484611ec6565b6001905092915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b610c7b611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90613750565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610d7084848461208f565b50610e3284610d7d611ebe565b610e2d8560405180606001604052806028815260200161428e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610de3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b611ec6565b600190509392505050565b610e45611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613750565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610f52610f417f000000000000000000000000000000000000000000000000000000000000dead61123b565b6014546126d690919063ffffffff16565b905090565b6000600460009054906101000a900460ff16905090565b6000611017610f7b611ebe565b846110128560066000610f8c611ebe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b611ec6565b6001905092915050565b611029611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad90613750565b60405180910390fd5b600181116110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906137e2565b60405180910390fd5b8060178190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61113e611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290613750565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b600f5481565b60105481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60155481565b60165481565b60125481565b600d5481565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ed611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190613750565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054611447906136d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611473906136d3565b80156114c05780601f10611495576101008083540402835291602001916114c0565b820191906000526020600020905b8154815290600101906020018083116114a357829003601f168201915b5050505050905090565b6000601754905090565b60135481565b6114e2611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690613750565b60405180910390fd5b81600d8190555080600e81905550611594600e54600d5461272090919063ffffffff16565b601281905550602d60125411156115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d79061384e565b60405180910390fd5b5050565b60006116a76115f1611ebe565b846116a2856040518060600160405280602581526020016142b6602591396006600061161b611ebe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b611ec6565b6001905092915050565b60006116c56116be611ebe565b848461208f565b506001905092915050565b6116d8611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90613750565b60405180910390fd5b81600b8190555080600c8190555061178a600c54600b5461272090919063ffffffff16565b601181905550602360115411156117d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cd906138ba565b60405180910390fd5b5050565b6117e2611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186690613750565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118b89190613382565b60405180910390a150565b600c5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60086020528060005260406000206000915054906101000a900460ff1681565b600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960169054906101000a900460ff1681565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119e3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613750565b60405180910390fd5b60c8601454611a7f9190613938565b811015611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906139db565b60405180910390fd5b8060158190555050565b611ad3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5790613750565b60405180910390fd5b81600f8190555080601081905550611b85601054600f5461272090919063ffffffff16565b60138190555060506013541115611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc890613a6d565b60405180910390fd5b5050565b611bdd611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613750565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b611cd3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790613750565b60405180910390fd5b60c8601454611d6f9190613938565b811015611db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da890613aff565b60405180910390fd5b8060168190555050565b611dc3611ebe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4790613750565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90613b91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9b90613c23565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120829190613426565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613cb5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590613d47565b60405180910390fd5b601960149054906101000a900460ff16156121955761218e84848461277e565b905061266b565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122395750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561228457601554821115612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a90613dd9565b60405180910390fd5b5b600061228f3061123b565b9050600060175482101590508080156122b55750601960149054906101000a900460ff16155b801561230b5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123235750601960159054906101000a900460ff165b1561234d57601960169054906101000a900460ff16156123435760175491505b61234c82612951565b5b6123d6846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124bc5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6124d0576124cb878787612ae2565b6124d2565b845b9050601960179054906101000a900460ff16801561253a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125695760165461255d8261254f8961123b565b61272090919063ffffffff16565b111561256857600080fd5b5b6125bb81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161265b9190613426565b60405180910390a3600193505050505b9392505050565b60008383111582906126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b1919061326c565b60405180910390fd5b50600083856126c99190613df9565b9050809150509392505050565b600061271883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612672565b905092915050565b600080828461272f9190613e2d565b905083811015612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613ead565b60405180910390fd5b8091505092915050565b6000612809826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126729092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061289e82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161293e9190613426565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff02191690831515021790555060006129aa600261299c60135461298e600f5487612d0990919063ffffffff16565b612d8390919063ffffffff16565b612d8390919063ffffffff16565b905060006129c182846126d690919063ffffffff16565b90506129cc81612dcd565b600047905060006129fd6129ec6002600f54612d8390919063ffffffff16565b6013546126d690919063ffffffff16565b90506000612a3b6002612a2d84612a1f600f5488612d0990919063ffffffff16565b612d8390919063ffffffff16565b612d8390919063ffffffff16565b90506000612a6683612a5860105487612d0990919063ffffffff16565b612d8390919063ffffffff16565b90506000811115612a9e57612a9d600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613049565b5b600082118015612aae5750600086115b15612abe57612abd8683613094565b5b5050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b6a57612b636064612b5560115486612d0990919063ffffffff16565b612d8390919063ffffffff16565b9050612be8565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612be757612be46064612bd660125486612d0990919063ffffffff16565b612d8390919063ffffffff16565b90505b5b6000811115612cec57612c4381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ce39190613426565b60405180910390a35b612cff81846126d690919063ffffffff16565b9150509392505050565b6000808303612d1b5760009050612d7d565b60008284612d299190613ecd565b9050828482612d389190613938565b14612d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6f90613f81565b60405180910390fd5b809150505b92915050565b6000612dc583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613179565b905092915050565b6000600267ffffffffffffffff811115612dea57612de9613fa1565b5b604051908082528060200260200182016040528015612e185781602001602082028036833780820191505090505b5090503081600081518110612e3057612e2f613fd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efb9190614014565b81600181518110612f0f57612f0e613fd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f7630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fda95949392919061413a565b600060405180830381600087803b158015612ff457600080fd5b505af1158015613008573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161303d929190614194565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561308f573d6000803e3d6000fd5b505050565b6130c130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec6565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061310d6112bc565b426040518863ffffffff1660e01b815260040161312f969594939291906141c4565b60606040518083038185885af115801561314d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613172919061423a565b5050505050565b600080831182906131c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b7919061326c565b60405180910390fd5b50600083856131cf9190613938565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132165780820151818401526020810190506131fb565b60008484015250505050565b6000601f19601f8301169050919050565b600061323e826131dc565b61324881856131e7565b93506132588185602086016131f8565b61326181613222565b840191505092915050565b600060208201905081810360008301526132868184613233565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132be82613293565b9050919050565b6132ce816132b3565b81146132d957600080fd5b50565b6000813590506132eb816132c5565b92915050565b6000819050919050565b613304816132f1565b811461330f57600080fd5b50565b600081359050613321816132fb565b92915050565b6000806040838503121561333e5761333d61328e565b5b600061334c858286016132dc565b925050602061335d85828601613312565b9150509250929050565b60008115159050919050565b61337c81613367565b82525050565b60006020820190506133976000830184613373565b92915050565b6000819050919050565b60006133c26133bd6133b884613293565b61339d565b613293565b9050919050565b60006133d4826133a7565b9050919050565b60006133e6826133c9565b9050919050565b6133f6816133db565b82525050565b600060208201905061341160008301846133ed565b92915050565b613420816132f1565b82525050565b600060208201905061343b6000830184613417565b92915050565b61344a81613367565b811461345557600080fd5b50565b60008135905061346781613441565b92915050565b600080604083850312156134845761348361328e565b5b6000613492858286016132dc565b92505060206134a385828601613458565b9150509250929050565b6000806000606084860312156134c6576134c561328e565b5b60006134d4868287016132dc565b93505060206134e5868287016132dc565b92505060406134f686828701613312565b9150509250925092565b6000602082840312156135165761351561328e565b5b600061352484828501613458565b91505092915050565b613536816132b3565b82525050565b6000602082019050613551600083018461352d565b92915050565b600060ff82169050919050565b61356d81613557565b82525050565b60006020820190506135886000830184613564565b92915050565b6000602082840312156135a4576135a361328e565b5b60006135b284828501613312565b91505092915050565b6000602082840312156135d1576135d061328e565b5b60006135df848285016132dc565b91505092915050565b600080604083850312156135ff576135fe61328e565b5b600061360d85828601613312565b925050602061361e85828601613312565b9150509250929050565b600061363382613293565b9050919050565b61364381613628565b82525050565b600060208201905061365e600083018461363a565b92915050565b6000806040838503121561367b5761367a61328e565b5b6000613689858286016132dc565b925050602061369a858286016132dc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136eb57607f821691505b6020821081036136fe576136fd6136a4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061373a6020836131e7565b915061374582613704565b602082019050919050565b600060208201905081810360008301526137698161372d565b9050919050565b7f4e756d546f6b656e734265666f7265537761702073686f756c64206265206e6f60008201527f7420300000000000000000000000000000000000000000000000000000000000602082015250565b60006137cc6023836131e7565b91506137d782613770565b604082019050919050565b600060208201905081810360008301526137fb816137bf565b9050919050565b7f53656c6c20746178206d757374206265206c657373207468616e203435250000600082015250565b6000613838601e836131e7565b915061384382613802565b602082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f42757920746178206d757374206265206c657373207468616e20333525000000600082015250565b60006138a4601d836131e7565b91506138af8261386e565b602082019050919050565b600060208201905081810360008301526138d381613897565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613943826132f1565b915061394e836132f1565b92508261395e5761395d6138da565b5b828204905092915050565b7f43616e6e6f7420736574204d61785478416d6f756e74206c6f7765722074686160008201527f6e20302e35250000000000000000000000000000000000000000000000000000602082015250565b60006139c56026836131e7565b91506139d082613969565b604082019050919050565b600060208201905081810360008301526139f4816139b8565b9050919050565b7f446973747269627574696f6e20536861726573206d757374206265206c65737360008201527f207468616e203830250000000000000000000000000000000000000000000000602082015250565b6000613a576029836131e7565b9150613a62826139fb565b604082019050919050565b60006020820190508181036000830152613a8681613a4a565b9050919050565b7f43616e6e6f7420736574204d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613ae96024836131e7565b9150613af482613a8d565b604082019050919050565b60006020820190508181036000830152613b1881613adc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b7b6024836131e7565b9150613b8682613b1f565b604082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c0d6022836131e7565b9150613c1882613bb1565b604082019050919050565b60006020820190508181036000830152613c3c81613c00565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613c9f6025836131e7565b9150613caa82613c43565b604082019050919050565b60006020820190508181036000830152613cce81613c92565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d316023836131e7565b9150613d3c82613cd5565b604082019050919050565b60006020820190508181036000830152613d6081613d24565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613dc36028836131e7565b9150613dce82613d67565b604082019050919050565b60006020820190508181036000830152613df281613db6565b9050919050565b6000613e04826132f1565b9150613e0f836132f1565b9250828203905081811115613e2757613e26613909565b5b92915050565b6000613e38826132f1565b9150613e43836132f1565b9250828201905080821115613e5b57613e5a613909565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e97601b836131e7565b9150613ea282613e61565b602082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b6000613ed8826132f1565b9150613ee3836132f1565b9250828202613ef1816132f1565b91508282048414831517613f0857613f07613909565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f6b6021836131e7565b9150613f7682613f0f565b604082019050919050565b60006020820190508181036000830152613f9a81613f5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061400e816132c5565b92915050565b60006020828403121561402a5761402961328e565b5b600061403884828501613fff565b91505092915050565b6000819050919050565b600061406661406161405c84614041565b61339d565b6132f1565b9050919050565b6140768161404b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140b1816132b3565b82525050565b60006140c383836140a8565b60208301905092915050565b6000602082019050919050565b60006140e78261407c565b6140f18185614087565b93506140fc83614098565b8060005b8381101561412d57815161411488826140b7565b975061411f836140cf565b925050600181019050614100565b5085935050505092915050565b600060a08201905061414f6000830188613417565b61415c602083018761406d565b818103604083015261416e81866140dc565b905061417d606083018561352d565b61418a6080830184613417565b9695505050505050565b60006040820190506141a96000830185613417565b81810360208301526141bb81846140dc565b90509392505050565b600060c0820190506141d9600083018961352d565b6141e66020830188613417565b6141f3604083018761406d565b614200606083018661406d565b61420d608083018561352d565b61421a60a0830184613417565b979650505050505050565b600081519050614234816132fb565b92915050565b6000806000606084860312156142535761425261328e565b5b600061426186828701614225565b935050602061427286828701614225565b925050604061428386828701614225565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220747b2862ff6767a63dc087263ad953051563162727afa507bc4288b8e9a16e4164736f6c63430008130033

Deployed Bytecode Sourcemap

13978:13908:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17883:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19177:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15425:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18160:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21400:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22815:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21279:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14347:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22276:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18069:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18546:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21743:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14739:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15540:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21946:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14568:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14969:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15010:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18268:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15253:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15307:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15098:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14880:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14684:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5769:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5994:145;;;;;;;;;;;;;:::i;:::-;;17974:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19049:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15143:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20318:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18772:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22640:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19973:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22093:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14835:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15473:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14923:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14625:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14228:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15587:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14793:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18395:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21065:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20675:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19830:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15054:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21543:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19691:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15639:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17883:83;17920:13;17953:5;17946:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17883:83;:::o;19177:161::-;19252:4;19269:39;19278:12;:10;:12::i;:::-;19292:7;19301:6;19269:8;:39::i;:::-;19326:4;19319:11;;19177:161;;;;:::o;15425:41::-;;;;;;;;;;;;;:::o;18160:100::-;18213:7;18240:12;;18233:19;;18160:100;:::o;21400:135::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21521:6:::1;21491:19;:27;21511:6;21491:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21400:135:::0;;:::o;22815:313::-;22913:4;22930:36;22940:6;22948:9;22959:6;22930:9;:36::i;:::-;;22977:121;22986:6;22994:12;:10;:12::i;:::-;23008:89;23046:6;23008:89;;;;;;;;;;;;;;;;;:11;:19;23020:6;23008:19;;;;;;;;;;;;;;;:33;23028:12;:10;:12::i;:::-;23008:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22977:8;:121::i;:::-;23116:4;23109:11;;22815:313;;;;;:::o;21279:113::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21376:8:::1;21357:16;;:27;;;;;;;;;;;;;;;;;;21279:113:::0;:::o;14347:81::-;;;:::o;22276:128::-;22329:7;22356:40;22373:22;22383:11;22373:9;:22::i;:::-;22356:12;;:16;;:40;;;;:::i;:::-;22349:47;;22276:128;:::o;18069:83::-;18110:5;18135:9;;;;;;;;;;;18128:16;;18069:83;:::o;18546:218::-;18634:4;18651:83;18660:12;:10;:12::i;:::-;18674:7;18683:50;18722:10;18683:11;:25;18695:12;:10;:12::i;:::-;18683:25;;;;;;;;;;;;;;;:34;18709:7;18683:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18651:8;:83::i;:::-;18752:4;18745:11;;18546:218;;;;:::o;21743:195::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21844:1:::1;21833:8;:12;21825:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21922:8;21896:23;:34;;;;21743:195:::0;:::o;14739:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15540:40::-;;;;;;;;;;;;;:::o;21946:139::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22066:10:::1;22033:22;;:44;;;;;;;;;;;;;;;;;;21946:139:::0;:::o;14568:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;14969:34::-;;;;:::o;15010:35::-;;;;:::o;18268:119::-;18334:7;18361:9;:18;18371:7;18361:18;;;;;;;;;;;;;;;;18354:25;;18268:119;;;:::o;15253:47::-;;;;:::o;15307:45::-;;;;:::o;15098:38::-;;;;:::o;14880:36::-;;;;:::o;14684:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5769:79::-;5807:7;5834:6;;;;;;;;;;;5827:13;;5769:79;:::o;5994:145::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6098:1:::1;6061:40;;6082:6;::::0;::::1;;;;;;;;6061:40;;;;;;;;;;;;6129:1;6112:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5994:145::o:0;17974:87::-;18013:13;18046:7;18039:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17974:87;:::o;19049:120::-;19111:7;19138:23;;19131:30;;19049:120;:::o;15143:44::-;;;;:::o;20318:345::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20442:15:::1;20422:17;:35;;;;20488:15;20468:17;:35;;;;20537:40;20559:17;;20537;;:21;;:40;;;;:::i;:::-;20516:18;:61;;;;20618:2;20596:18;;:24;;20588:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20318:345:::0;;:::o;18772:269::-;18865:4;18882:129;18891:12;:10;:12::i;:::-;18905:7;18914:96;18953:15;18914:96;;;;;;;;;;;;;;;;;:11;:25;18926:12;:10;:12::i;:::-;18914:25;;;;;;;;;;;;;;;:34;18940:7;18914:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18882:8;:129::i;:::-;19029:4;19022:11;;18772:269;;;;:::o;22640:167::-;22718:4;22735:42;22745:12;:10;:12::i;:::-;22759:9;22770:6;22735:9;:42::i;:::-;;22795:4;22788:11;;22640:167;;;;:::o;19973:337::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20095:15:::1;20076:16;:34;;;;20140:15;20121:16;:34;;;;20188:38;20209:16;;20188;;:20;;:38;;;;:::i;:::-;20168:17;:58;;;;20266:2;20245:17;;:23;;20237:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19973:337:::0;;:::o;22093:171::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22194:8:::1;22170:21;;:32;;;;;;;;;;;;;;;;;;22218:38;22247:8;22218:38;;;;;;:::i;:::-;;;;;;;;22093:171:::0;:::o;14835:36::-;;;;:::o;15473:26::-;;;;;;;;;;;;;:::o;14923:37::-;;;;:::o;14625:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14228:99::-;;;;;;;;;;;;;:::o;15587:45::-;;;;;;;;;;;;;:::o;14793:35::-;;;;:::o;18395:143::-;18476:7;18503:11;:18;18515:5;18503:18;;;;;;;;;;;;;;;:27;18522:7;18503:27;;;;;;;;;;;;;;;;18496:34;;18395:143;;;;:::o;21065:206::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21180:3:::1;21165:12;;:18;;;;:::i;:::-;21150:11;:33;;21142:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;21252:11;21237:12;:26;;;;21065:206:::0;:::o;20675:378::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20812:17:::1;20794:15;:35;;;;20858:17;20840:15;:35;;;;20915:36;20935:15;;20915;;:19;;:36;;;;:::i;:::-;20888:24;:63;;;;20997:2;20970:24;;:29;;20962:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;20675:378:::0;;:::o;19830:135::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19949:8:::1;19920:17;:26;19938:7;19920:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19830:135:::0;;:::o;15054:37::-;;;;:::o;21543:192::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21650:3:::1;21635:12;;:18;;;;:::i;:::-;21623:8;:30;;21615:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;21719:8;21705:10;:22;;;;21543:192:::0;:::o;19691:127::-;5913:12;:10;:12::i;:::-;5903:22;;:6;;;;;;;;;;:22;;;5895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19804:6:::1;19778:15;:23;19794:6;19778:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19691:127:::0;;:::o;15639:35::-;;;;;;;;;;;;;:::o;103:115::-;156:15;199:10;184:26;;103:115;:::o;19346:337::-;19456:1;19439:19;;:5;:19;;;19431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19537:1;19518:21;;:7;:21;;;19510:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19621:6;19591:11;:18;19603:5;19591:18;;;;;;;;;;;;;;;:27;19610:7;19591:27;;;;;;;;;;;;;;;:36;;;;19659:7;19643:32;;19652:5;19643:32;;;19668:6;19643:32;;;;;;:::i;:::-;;;;;;;;19346:337;;;:::o;23136:1707::-;23223:4;23268:1;23250:20;;:6;:20;;;23242:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23352:1;23331:23;;:9;:23;;;23323:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23410:16;;;;;;;;;;;23407:1429;;;23460:41;23475:6;23483:9;23494:6;23460:14;:41::i;:::-;23453:48;;;;23407:1429;23557:15;:23;23573:6;23557:23;;;;;;;;;;;;;;;;;;;;;;;;;23556:24;:55;;;;;23585:15;:26;23601:9;23585:26;;;;;;;;;;;;;;;;;;;;;;;;;23584:27;23556:55;23553:170;;;23650:12;;23640:6;:22;;23632:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23553:170;23751:28;23782:24;23800:4;23782:9;:24::i;:::-;23751:55;;23821:28;23876:23;;23852:20;:47;;23821:78;;23932:23;:44;;;;;23960:16;;;;;;;;;;;23959:17;23932:44;:69;;;;;23981:12;:20;23994:6;23981:20;;;;;;;;;;;;;;;;;;;;;;;;;23980:21;23932:69;:94;;;;;24005:21;;;;;;;;;;;23932:94;23928:305;;;24064:25;;;;;;;;;;;24061:97;;;24135:23;;24112:46;;24061:97;24177:36;24192:20;24177:14;:36::i;:::-;23928:305;24269:53;24291:6;24269:53;;;;;;;;;;;;;;;;;:9;:17;24279:6;24269:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24249:9;:17;24259:6;24249:17;;;;;;;;;;;;;;;:73;;;;24339:19;24362:17;:25;24380:6;24362:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;24391:17;:28;24409:9;24391:28;;;;;;;;;;;;;;;;;;;;;;;;;24362:57;24361:148;;24475:34;24483:6;24491:9;24502:6;24475:7;:34::i;:::-;24361:148;;;24466:6;24361:148;24339:170;;24529:16;;;;;;;;;;;:51;;;;;24550:19;:30;24570:9;24550:30;;;;;;;;;;;;;;;;;;;;;;;;;24549:31;24529:51;24526:133;;;24648:10;;24607:37;24632:11;24607:20;24617:9;24607;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;24599:60;;;;;;24526:133;24699:37;24724:11;24699:9;:20;24709:9;24699:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24676:9;:20;24686:9;24676:20;;;;;;;;;;;;;;;:60;;;;24775:9;24758:40;;24767:6;24758:40;;;24786:11;24758:40;;;;;;:::i;:::-;;;;;;;;24820:4;24813:11;;;;;23136:1707;;;;;;:::o;1504:192::-;1590:7;1623:1;1618;:6;;1626:12;1610:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1650:9;1666:1;1662;:5;;;;:::i;:::-;1650:17;;1687:1;1680:8;;;1504:192;;;;;:::o;1360:136::-;1418:7;1445:43;1449:1;1452;1445:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1438:50;;1360:136;;;;:::o;1171:181::-;1229:7;1249:9;1265:1;1261;:5;;;;:::i;:::-;1249:17;;1290:1;1285;:6;;1277:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1343:1;1336:8;;;1171:181;;;;:::o;24851:330::-;24944:4;24981:53;25003:6;24981:53;;;;;;;;;;;;;;;;;:9;:17;24991:6;24981:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24961:9;:17;24971:6;24961:17;;;;;;;;;;;;;;;:73;;;;25068:32;25093:6;25068:9;:20;25078:9;25068:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25045:9;:20;25055:9;25045:20;;;;;;;;;;;;;;;:55;;;;25133:9;25116:35;;25125:6;25116:35;;;25144:6;25116:35;;;;;;:::i;:::-;;;;;;;;25169:4;25162:11;;24851:330;;;;;:::o;25189:859::-;16116:4;16097:16;;:23;;;;;;;;;;;;;;;;;;25271:19:::1;25293:65;25356:1;25293:58;25326:24;;25293:28;25305:15;;25293:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;25271:87;;25369:21;25393:24;25405:11;25393:7;:11;;:24;;;;:::i;:::-;25369:48;;25430:31;25447:13;25430:16;:31::i;:::-;25472:22;25497:21;25472:46;;25531:19;25553:52;25582:22;25602:1;25582:15;;:19;;:22;;;;:::i;:::-;25553:24;;:28;;:52;;;;:::i;:::-;25531:74;;25626:26;25655:59;25712:1;25655:52;25695:11;25655:35;25674:15;;25655:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;25626:88;;25725:26;25754:52;25794:11;25754:35;25773:15;;25754:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25725:81;;25843:1;25822:18;:22;25819:104;;;25859:64;25880:22;;;;;;;;;;;25904:18;25859:20;:64::i;:::-;25819:104;25960:1;25939:18;:22;:41;;;;;25979:1;25965:11;:15;25939:41;25936:104;;;25995:45;26008:11;26021:18;25995:12;:45::i;:::-;25936:104;25250:798;;;;;;16162:5:::0;16143:16;;:24;;;;;;;;;;;;;;;;;;25189:859;:::o;27255:622::-;27341:7;27371:17;27391:1;27371:21;;27416:12;:20;27429:6;27416:20;;;;;;;;;;;;;;;;;;;;;;;;;27413:223;;;27465:38;27499:3;27465:29;27476:17;;27465:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27453:50;;27413:223;;;27533:12;:23;27546:9;27533:23;;;;;;;;;;;;;;;;;;;;;;;;;27530:106;;;27585:39;27620:3;27585:30;27596:18;;27585:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27573:51;;27530:106;27413:223;27671:1;27659:9;:13;27656:173;;;27716:39;27745:9;27716;:24;27734:4;27716:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27689:9;:24;27707:4;27689:24;;;;;;;;;;;;;;;:66;;;;27800:4;27775:42;;27784:6;27775:42;;;27807:9;27775:42;;;;;;:::i;:::-;;;;;;;;27656:173;27848:21;27859:9;27848:6;:10;;:21;;;;:::i;:::-;27841:28;;;27255:622;;;;;:::o;1704:250::-;1762:7;1791:1;1786;:6;1782:47;;1816:1;1809:8;;;;1782:47;1841:9;1857:1;1853;:5;;;;:::i;:::-;1841:17;;1886:1;1881;1877;:5;;;;:::i;:::-;:10;1869:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:1;1938:8;;;1704:250;;;;;:::o;1962:132::-;2020:7;2047:39;2051:1;2054;2047:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2040:46;;1962:132;;;;:::o;26060:666::-;26186:21;26224:1;26210:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26186:40;;26255:4;26237;26242:1;26237:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26281:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26271:4;26276:1;26271:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26316:62;26333:4;26348:15;;;;;;;;;;;26366:11;26316:8;:62::i;:::-;26417:15;;;;;;;;;;;:66;;;26498:11;26524:1;26568:4;26595;26631:15;26417:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26683:35;26700:11;26713:4;26683:35;;;;;;;:::i;:::-;;;;;;;;26115:611;26060:666;:::o;22412:126::-;22504:9;:18;;:26;22523:6;22504:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22412:126;;:::o;26734:513::-;26882:62;26899:4;26914:15;;;;;;;;;;;26932:11;26882:8;:62::i;:::-;26987:15;;;;;;;;;;;:31;;;27026:9;27059:4;27079:11;27105:1;27148;27191:7;:5;:7::i;:::-;27213:15;26987:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26734:513;;:::o;2102:278::-;2188:7;2220:1;2216;:5;2223:12;2208:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2247:9;2263:1;2259;:5;;;;:::i;:::-;2247:17;;2371:1;2364:8;;;2102:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:116::-;4846:21;4861:5;4846:21;:::i;:::-;4839:5;4836:32;4826:60;;4882:1;4879;4872:12;4826:60;4776:116;:::o;4898:133::-;4941:5;4979:6;4966:20;4957:29;;4995:30;5019:5;4995:30;:::i;:::-;4898:133;;;;:::o;5037:468::-;5102:6;5110;5159:2;5147:9;5138:7;5134:23;5130:32;5127:119;;;5165:79;;:::i;:::-;5127:119;5285:1;5310:53;5355:7;5346:6;5335:9;5331:22;5310:53;:::i;:::-;5300:63;;5256:117;5412:2;5438:50;5480:7;5471:6;5460:9;5456:22;5438:50;:::i;:::-;5428:60;;5383:115;5037:468;;;;;:::o;5511:619::-;5588:6;5596;5604;5653:2;5641:9;5632:7;5628:23;5624:32;5621:119;;;5659:79;;:::i;:::-;5621:119;5779:1;5804:53;5849:7;5840:6;5829:9;5825:22;5804:53;:::i;:::-;5794:63;;5750:117;5906:2;5932:53;5977:7;5968:6;5957:9;5953:22;5932:53;:::i;:::-;5922:63;;5877:118;6034:2;6060:53;6105:7;6096:6;6085:9;6081:22;6060:53;:::i;:::-;6050:63;;6005:118;5511:619;;;;;:::o;6136:323::-;6192:6;6241:2;6229:9;6220:7;6216:23;6212:32;6209:119;;;6247:79;;:::i;:::-;6209:119;6367:1;6392:50;6434:7;6425:6;6414:9;6410:22;6392:50;:::i;:::-;6382:60;;6338:114;6136:323;;;;:::o;6465:118::-;6552:24;6570:5;6552:24;:::i;:::-;6547:3;6540:37;6465:118;;:::o;6589:222::-;6682:4;6720:2;6709:9;6705:18;6697:26;;6733:71;6801:1;6790:9;6786:17;6777:6;6733:71;:::i;:::-;6589:222;;;;:::o;6817:86::-;6852:7;6892:4;6885:5;6881:16;6870:27;;6817:86;;;:::o;6909:112::-;6992:22;7008:5;6992:22;:::i;:::-;6987:3;6980:35;6909:112;;:::o;7027:214::-;7116:4;7154:2;7143:9;7139:18;7131:26;;7167:67;7231:1;7220:9;7216:17;7207:6;7167:67;:::i;:::-;7027:214;;;;:::o;7247:329::-;7306:6;7355:2;7343:9;7334:7;7330:23;7326:32;7323:119;;;7361:79;;:::i;:::-;7323:119;7481:1;7506:53;7551:7;7542:6;7531:9;7527:22;7506:53;:::i;:::-;7496:63;;7452:117;7247:329;;;;:::o;7582:::-;7641:6;7690:2;7678:9;7669:7;7665:23;7661:32;7658:119;;;7696:79;;:::i;:::-;7658:119;7816:1;7841:53;7886:7;7877:6;7866:9;7862:22;7841:53;:::i;:::-;7831:63;;7787:117;7582:329;;;;:::o;7917:474::-;7985:6;7993;8042:2;8030:9;8021:7;8017:23;8013:32;8010:119;;;8048:79;;:::i;:::-;8010:119;8168:1;8193:53;8238:7;8229:6;8218:9;8214:22;8193:53;:::i;:::-;8183:63;;8139:117;8295:2;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8266:118;7917:474;;;;;:::o;8397:104::-;8442:7;8471:24;8489:5;8471:24;:::i;:::-;8460:35;;8397:104;;;:::o;8507:142::-;8610:32;8636:5;8610:32;:::i;:::-;8605:3;8598:45;8507:142;;:::o;8655:254::-;8764:4;8802:2;8791:9;8787:18;8779:26;;8815:87;8899:1;8888:9;8884:17;8875:6;8815:87;:::i;:::-;8655:254;;;;:::o;8915:474::-;8983:6;8991;9040:2;9028:9;9019:7;9015:23;9011:32;9008:119;;;9046:79;;:::i;:::-;9008:119;9166:1;9191:53;9236:7;9227:6;9216:9;9212:22;9191:53;:::i;:::-;9181:63;;9137:117;9293:2;9319:53;9364:7;9355:6;9344:9;9340:22;9319:53;:::i;:::-;9309:63;;9264:118;8915:474;;;;;:::o;9395:180::-;9443:77;9440:1;9433:88;9540:4;9537:1;9530:15;9564:4;9561:1;9554:15;9581:320;9625:6;9662:1;9656:4;9652:12;9642:22;;9709:1;9703:4;9699:12;9730:18;9720:81;;9786:4;9778:6;9774:17;9764:27;;9720:81;9848:2;9840:6;9837:14;9817:18;9814:38;9811:84;;9867:18;;:::i;:::-;9811:84;9632:269;9581:320;;;:::o;9907:182::-;10047:34;10043:1;10035:6;10031:14;10024:58;9907:182;:::o;10095:366::-;10237:3;10258:67;10322:2;10317:3;10258:67;:::i;:::-;10251:74;;10334:93;10423:3;10334:93;:::i;:::-;10452:2;10447:3;10443:12;10436:19;;10095:366;;;:::o;10467:419::-;10633:4;10671:2;10660:9;10656:18;10648:26;;10720:9;10714:4;10710:20;10706:1;10695:9;10691:17;10684:47;10748:131;10874:4;10748:131;:::i;:::-;10740:139;;10467:419;;;:::o;10892:222::-;11032:34;11028:1;11020:6;11016:14;11009:58;11101:5;11096:2;11088:6;11084:15;11077:30;10892:222;:::o;11120:366::-;11262:3;11283:67;11347:2;11342:3;11283:67;:::i;:::-;11276:74;;11359:93;11448:3;11359:93;:::i;:::-;11477:2;11472:3;11468:12;11461:19;;11120:366;;;:::o;11492:419::-;11658:4;11696:2;11685:9;11681:18;11673:26;;11745:9;11739:4;11735:20;11731:1;11720:9;11716:17;11709:47;11773:131;11899:4;11773:131;:::i;:::-;11765:139;;11492:419;;;:::o;11917:180::-;12057:32;12053:1;12045:6;12041:14;12034:56;11917:180;:::o;12103:366::-;12245:3;12266:67;12330:2;12325:3;12266:67;:::i;:::-;12259:74;;12342:93;12431:3;12342:93;:::i;:::-;12460:2;12455:3;12451:12;12444:19;;12103:366;;;:::o;12475:419::-;12641:4;12679:2;12668:9;12664:18;12656:26;;12728:9;12722:4;12718:20;12714:1;12703:9;12699:17;12692:47;12756:131;12882:4;12756:131;:::i;:::-;12748:139;;12475:419;;;:::o;12900:179::-;13040:31;13036:1;13028:6;13024:14;13017:55;12900:179;:::o;13085:366::-;13227:3;13248:67;13312:2;13307:3;13248:67;:::i;:::-;13241:74;;13324:93;13413:3;13324:93;:::i;:::-;13442:2;13437:3;13433:12;13426:19;;13085:366;;;:::o;13457:419::-;13623:4;13661:2;13650:9;13646:18;13638:26;;13710:9;13704:4;13700:20;13696:1;13685:9;13681:17;13674:47;13738:131;13864:4;13738:131;:::i;:::-;13730:139;;13457:419;;;:::o;13882:180::-;13930:77;13927:1;13920:88;14027:4;14024:1;14017:15;14051:4;14048:1;14041:15;14068:180;14116:77;14113:1;14106:88;14213:4;14210:1;14203:15;14237:4;14234:1;14227:15;14254:185;14294:1;14311:20;14329:1;14311:20;:::i;:::-;14306:25;;14345:20;14363:1;14345:20;:::i;:::-;14340:25;;14384:1;14374:35;;14389:18;;:::i;:::-;14374:35;14431:1;14428;14424:9;14419:14;;14254:185;;;;:::o;14445:225::-;14585:34;14581:1;14573:6;14569:14;14562:58;14654:8;14649:2;14641:6;14637:15;14630:33;14445:225;:::o;14676:366::-;14818:3;14839:67;14903:2;14898:3;14839:67;:::i;:::-;14832:74;;14915:93;15004:3;14915:93;:::i;:::-;15033:2;15028:3;15024:12;15017:19;;14676:366;;;:::o;15048:419::-;15214:4;15252:2;15241:9;15237:18;15229:26;;15301:9;15295:4;15291:20;15287:1;15276:9;15272:17;15265:47;15329:131;15455:4;15329:131;:::i;:::-;15321:139;;15048:419;;;:::o;15473:228::-;15613:34;15609:1;15601:6;15597:14;15590:58;15682:11;15677:2;15669:6;15665:15;15658:36;15473:228;:::o;15707:366::-;15849:3;15870:67;15934:2;15929:3;15870:67;:::i;:::-;15863:74;;15946:93;16035:3;15946:93;:::i;:::-;16064:2;16059:3;16055:12;16048:19;;15707:366;;;:::o;16079:419::-;16245:4;16283:2;16272:9;16268:18;16260:26;;16332:9;16326:4;16322:20;16318:1;16307:9;16303:17;16296:47;16360:131;16486:4;16360:131;:::i;:::-;16352:139;;16079:419;;;:::o;16504:223::-;16644:34;16640:1;16632:6;16628:14;16621:58;16713:6;16708:2;16700:6;16696:15;16689:31;16504:223;:::o;16733:366::-;16875:3;16896:67;16960:2;16955:3;16896:67;:::i;:::-;16889:74;;16972:93;17061:3;16972:93;:::i;:::-;17090:2;17085:3;17081:12;17074:19;;16733:366;;;:::o;17105:419::-;17271:4;17309:2;17298:9;17294:18;17286:26;;17358:9;17352:4;17348:20;17344:1;17333:9;17329:17;17322:47;17386:131;17512:4;17386:131;:::i;:::-;17378:139;;17105:419;;;:::o;17530:223::-;17670:34;17666:1;17658:6;17654:14;17647:58;17739:6;17734:2;17726:6;17722:15;17715:31;17530:223;:::o;17759:366::-;17901:3;17922:67;17986:2;17981:3;17922:67;:::i;:::-;17915:74;;17998:93;18087:3;17998:93;:::i;:::-;18116:2;18111:3;18107:12;18100:19;;17759:366;;;:::o;18131:419::-;18297:4;18335:2;18324:9;18320:18;18312:26;;18384:9;18378:4;18374:20;18370:1;18359:9;18355:17;18348:47;18412:131;18538:4;18412:131;:::i;:::-;18404:139;;18131:419;;;:::o;18556:221::-;18696:34;18692:1;18684:6;18680:14;18673:58;18765:4;18760:2;18752:6;18748:15;18741:29;18556:221;:::o;18783:366::-;18925:3;18946:67;19010:2;19005:3;18946:67;:::i;:::-;18939:74;;19022:93;19111:3;19022:93;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;18783:366;;;:::o;19155:419::-;19321:4;19359:2;19348:9;19344:18;19336:26;;19408:9;19402:4;19398:20;19394:1;19383:9;19379:17;19372:47;19436:131;19562:4;19436:131;:::i;:::-;19428:139;;19155:419;;;:::o;19580:224::-;19720:34;19716:1;19708:6;19704:14;19697:58;19789:7;19784:2;19776:6;19772:15;19765:32;19580:224;:::o;19810:366::-;19952:3;19973:67;20037:2;20032:3;19973:67;:::i;:::-;19966:74;;20049:93;20138:3;20049:93;:::i;:::-;20167:2;20162:3;20158:12;20151:19;;19810:366;;;:::o;20182:419::-;20348:4;20386:2;20375:9;20371:18;20363:26;;20435:9;20429:4;20425:20;20421:1;20410:9;20406:17;20399:47;20463:131;20589:4;20463:131;:::i;:::-;20455:139;;20182:419;;;:::o;20607:222::-;20747:34;20743:1;20735:6;20731:14;20724:58;20816:5;20811:2;20803:6;20799:15;20792:30;20607:222;:::o;20835:366::-;20977:3;20998:67;21062:2;21057:3;20998:67;:::i;:::-;20991:74;;21074:93;21163:3;21074:93;:::i;:::-;21192:2;21187:3;21183:12;21176:19;;20835:366;;;:::o;21207:419::-;21373:4;21411:2;21400:9;21396:18;21388:26;;21460:9;21454:4;21450:20;21446:1;21435:9;21431:17;21424:47;21488:131;21614:4;21488:131;:::i;:::-;21480:139;;21207:419;;;:::o;21632:227::-;21772:34;21768:1;21760:6;21756:14;21749:58;21841:10;21836:2;21828:6;21824:15;21817:35;21632:227;:::o;21865:366::-;22007:3;22028:67;22092:2;22087:3;22028:67;:::i;:::-;22021:74;;22104:93;22193:3;22104:93;:::i;:::-;22222:2;22217:3;22213:12;22206:19;;21865:366;;;:::o;22237:419::-;22403:4;22441:2;22430:9;22426:18;22418:26;;22490:9;22484:4;22480:20;22476:1;22465:9;22461:17;22454:47;22518:131;22644:4;22518:131;:::i;:::-;22510:139;;22237:419;;;:::o;22662:194::-;22702:4;22722:20;22740:1;22722:20;:::i;:::-;22717:25;;22756:20;22774:1;22756:20;:::i;:::-;22751:25;;22800:1;22797;22793:9;22785:17;;22824:1;22818:4;22815:11;22812:37;;;22829:18;;:::i;:::-;22812:37;22662:194;;;;:::o;22862:191::-;22902:3;22921:20;22939:1;22921:20;:::i;:::-;22916:25;;22955:20;22973:1;22955:20;:::i;:::-;22950:25;;22998:1;22995;22991:9;22984:16;;23019:3;23016:1;23013:10;23010:36;;;23026:18;;:::i;:::-;23010:36;22862:191;;;;:::o;23059:177::-;23199:29;23195:1;23187:6;23183:14;23176:53;23059:177;:::o;23242:366::-;23384:3;23405:67;23469:2;23464:3;23405:67;:::i;:::-;23398:74;;23481:93;23570:3;23481:93;:::i;:::-;23599:2;23594:3;23590:12;23583:19;;23242:366;;;:::o;23614:419::-;23780:4;23818:2;23807:9;23803:18;23795:26;;23867:9;23861:4;23857:20;23853:1;23842:9;23838:17;23831:47;23895:131;24021:4;23895:131;:::i;:::-;23887:139;;23614:419;;;:::o;24039:410::-;24079:7;24102:20;24120:1;24102:20;:::i;:::-;24097:25;;24136:20;24154:1;24136:20;:::i;:::-;24131:25;;24191:1;24188;24184:9;24213:30;24231:11;24213:30;:::i;:::-;24202:41;;24392:1;24383:7;24379:15;24376:1;24373:22;24353:1;24346:9;24326:83;24303:139;;24422:18;;:::i;:::-;24303:139;24087:362;24039:410;;;;:::o;24455:220::-;24595:34;24591:1;24583:6;24579:14;24572:58;24664:3;24659:2;24651:6;24647:15;24640:28;24455:220;:::o;24681:366::-;24823:3;24844:67;24908:2;24903:3;24844:67;:::i;:::-;24837:74;;24920:93;25009:3;24920:93;:::i;:::-;25038:2;25033:3;25029:12;25022:19;;24681:366;;;:::o;25053:419::-;25219:4;25257:2;25246:9;25242:18;25234:26;;25306:9;25300:4;25296:20;25292:1;25281:9;25277:17;25270:47;25334:131;25460:4;25334:131;:::i;:::-;25326:139;;25053:419;;;:::o;25478:180::-;25526:77;25523:1;25516:88;25623:4;25620:1;25613:15;25647:4;25644:1;25637:15;25664:180;25712:77;25709:1;25702:88;25809:4;25806:1;25799:15;25833:4;25830:1;25823:15;25850:143;25907:5;25938:6;25932:13;25923:22;;25954:33;25981:5;25954:33;:::i;:::-;25850:143;;;;:::o;25999:351::-;26069:6;26118:2;26106:9;26097:7;26093:23;26089:32;26086:119;;;26124:79;;:::i;:::-;26086:119;26244:1;26269:64;26325:7;26316:6;26305:9;26301:22;26269:64;:::i;:::-;26259:74;;26215:128;25999:351;;;;:::o;26356:85::-;26401:7;26430:5;26419:16;;26356:85;;;:::o;26447:158::-;26505:9;26538:61;26556:42;26565:32;26591:5;26565:32;:::i;:::-;26556:42;:::i;:::-;26538:61;:::i;:::-;26525:74;;26447:158;;;:::o;26611:147::-;26706:45;26745:5;26706:45;:::i;:::-;26701:3;26694:58;26611:147;;:::o;26764:114::-;26831:6;26865:5;26859:12;26849:22;;26764:114;;;:::o;26884:184::-;26983:11;27017:6;27012:3;27005:19;27057:4;27052:3;27048:14;27033:29;;26884:184;;;;:::o;27074:132::-;27141:4;27164:3;27156:11;;27194:4;27189:3;27185:14;27177:22;;27074:132;;;:::o;27212:108::-;27289:24;27307:5;27289:24;:::i;:::-;27284:3;27277:37;27212:108;;:::o;27326:179::-;27395:10;27416:46;27458:3;27450:6;27416:46;:::i;:::-;27494:4;27489:3;27485:14;27471:28;;27326:179;;;;:::o;27511:113::-;27581:4;27613;27608:3;27604:14;27596:22;;27511:113;;;:::o;27660:732::-;27779:3;27808:54;27856:5;27808:54;:::i;:::-;27878:86;27957:6;27952:3;27878:86;:::i;:::-;27871:93;;27988:56;28038:5;27988:56;:::i;:::-;28067:7;28098:1;28083:284;28108:6;28105:1;28102:13;28083:284;;;28184:6;28178:13;28211:63;28270:3;28255:13;28211:63;:::i;:::-;28204:70;;28297:60;28350:6;28297:60;:::i;:::-;28287:70;;28143:224;28130:1;28127;28123:9;28118:14;;28083:284;;;28087:14;28383:3;28376:10;;27784:608;;;27660:732;;;;:::o;28398:831::-;28661:4;28699:3;28688:9;28684:19;28676:27;;28713:71;28781:1;28770:9;28766:17;28757:6;28713:71;:::i;:::-;28794:80;28870:2;28859:9;28855:18;28846:6;28794:80;:::i;:::-;28921:9;28915:4;28911:20;28906:2;28895:9;28891:18;28884:48;28949:108;29052:4;29043:6;28949:108;:::i;:::-;28941:116;;29067:72;29135:2;29124:9;29120:18;29111:6;29067:72;:::i;:::-;29149:73;29217:3;29206:9;29202:19;29193:6;29149:73;:::i;:::-;28398:831;;;;;;;;:::o;29235:483::-;29406:4;29444:2;29433:9;29429:18;29421:26;;29457:71;29525:1;29514:9;29510:17;29501:6;29457:71;:::i;:::-;29575:9;29569:4;29565:20;29560:2;29549:9;29545:18;29538:48;29603:108;29706:4;29697:6;29603:108;:::i;:::-;29595:116;;29235:483;;;;;:::o;29724:807::-;29973:4;30011:3;30000:9;29996:19;29988:27;;30025:71;30093:1;30082:9;30078:17;30069:6;30025:71;:::i;:::-;30106:72;30174:2;30163:9;30159:18;30150:6;30106:72;:::i;:::-;30188:80;30264:2;30253:9;30249:18;30240:6;30188:80;:::i;:::-;30278;30354:2;30343:9;30339:18;30330:6;30278:80;:::i;:::-;30368:73;30436:3;30425:9;30421:19;30412:6;30368:73;:::i;:::-;30451;30519:3;30508:9;30504:19;30495:6;30451:73;:::i;:::-;29724:807;;;;;;;;;:::o;30537:143::-;30594:5;30625:6;30619:13;30610:22;;30641:33;30668:5;30641:33;:::i;:::-;30537:143;;;;:::o;30686:663::-;30774:6;30782;30790;30839:2;30827:9;30818:7;30814:23;30810:32;30807:119;;;30845:79;;:::i;:::-;30807:119;30965:1;30990:64;31046:7;31037:6;31026:9;31022:22;30990:64;:::i;:::-;30980:74;;30936:128;31103:2;31129:64;31185:7;31176:6;31165:9;31161:22;31129:64;:::i;:::-;31119:74;;31074:129;31242:2;31268:64;31324:7;31315:6;31304:9;31300:22;31268:64;:::i;:::-;31258:74;;31213:129;30686:663;;;;;:::o

Swarm Source

ipfs://747b2862ff6767a63dc087263ad953051563162727afa507bc4288b8e9a16e41
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.