ETH Price: $3,995.96 (+3.42%)

Token

ERC-20: ALIEN BOB (ABOB)
 

Overview

Max Total Supply

2,000,000,000 ABOB

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.674244777401268119 ABOB

Value
$0.00
0x2cab2206ff7cab2b6d1d6ff2f9334a92b25d03a3
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:
ABOB

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.14;

/*

ƬΣᄂΣGЯΛM:
t.me/AlienBobPortal

ƬЩIƬƬΣЯ:
twitter.com/AlienBobVIP

*/

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns(address pair);
}

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);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns(string memory);

    function symbol() external view returns(string memory);

    function decimals() external view returns(uint8);
}

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

}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

        mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns(uint8) {
        return 18;
    }

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

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

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

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

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

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

    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 cannot be below zero"));
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
}
 
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;

        return c;
    }   
}
 
contract Ownable is Context {
    address private _owner;
 
    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 renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns(int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns(int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }

    function toUint256Safe(int256 a) internal pure returns(uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns(int256) {
    int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

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 ABOB is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable router;
    address public immutable uniswapV2Pair;

    // addresses
    address private developmentWallet;
    address private marketingWallet;

    // limits 
    uint256 private maxBuyAmount;
    uint256 private maxSellAmount;   
    uint256 private maxWalletAmount;
 
    uint256 private thresholdSwapAmount;

    // status flags
    bool private isTrading = false;
    bool public swapEnabled = false;
    bool public isSwapping;

    struct Fees {
        uint256 buyTotalFees;
        uint256 buyMarketingFee;
        uint256 buyDevelopmentFee;
        uint256 buyLiquidityFee;

        uint256 sellTotalFees;
        uint256 sellMarketingFee;
        uint256 sellDevelopmentFee;
        uint256 sellLiquidityFee;
    }  

    Fees public _fees = Fees({
        buyTotalFees: 0,
        buyMarketingFee: 0,
        buyDevelopmentFee:0,
        buyLiquidityFee: 0,

        sellTotalFees: 0,
        sellMarketingFee: 0,
        sellDevelopmentFee:0,
        sellLiquidityFee: 0
    });

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDevelopment;
    uint256 private taxTill;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public _isExcludedMaxWalletAmount;

    mapping(address => bool) public marketPair;
 
  
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived
    );

    constructor() ERC20("ALIEN BOB", "ABOB") {
 
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());

        _isExcludedMaxTransactionAmount[address(router)] = true;
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;        
        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;

        _isExcludedMaxWalletAmount[owner()] = true;
        _isExcludedMaxWalletAmount[address(0xdead)] = true;
        _isExcludedMaxWalletAmount[address(this)] = true;
        _isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true;

        marketPair[address(uniswapV2Pair)] = true;

        approve(address(router), type(uint256).max);

        uint256 totalSupply = 2e9 * 1e18;
        maxBuyAmount = totalSupply * 2 / 100; // 2% maxBuyAmount
        maxSellAmount = totalSupply * 2 / 100; // 2% maxSellAmount
        maxWalletAmount = totalSupply * 2 / 100; // 2% maxWallet
        thresholdSwapAmount = totalSupply * 2 / 1000; 

        _fees.buyMarketingFee = 20;
        _fees.buyLiquidityFee = 0;
        _fees.buyDevelopmentFee = 0;
        _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevelopmentFee;

        _fees.sellMarketingFee = 20;
        _fees.sellLiquidityFee = 0;
        _fees.sellDevelopmentFee = 0;
        _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevelopmentFee;

        marketingWallet = address(0x905E9E95708E6A62857818e81DF198c899dE25e9);
        developmentWallet = address(0x905E9E95708E6A62857818e81DF198c899dE25e9);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {

    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        isTrading = true;
        swapEnabled = true;
        taxTill = block.number + 0;
    }

    // change the minimum amount of tokens to sell from fees
    function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner returns(bool){
        thresholdSwapAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newMaxBuy, uint256 newMaxSell) public onlyOwner {
        maxBuyAmount = (totalSupply() * newMaxBuy) / 1000;
        maxSellAmount = (totalSupply() * newMaxSell) / 1000;
    }

    function updateMaxWalletAmount(uint256 newPercentage) public onlyOwner {
        maxWalletAmount = (totalSupply() * newPercentage) / 1000;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function toggleSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function updateFees(uint256 _marketingFeeBuy, uint256 _liquidityFeeBuy,uint256 _developmentFeeBuy,uint256 _marketingFeeSell, uint256 _liquidityFeeSell,uint256 _developmentFeeSell) external onlyOwner{
        _fees.buyMarketingFee = _marketingFeeBuy;
        _fees.buyLiquidityFee = _liquidityFeeBuy;
        _fees.buyDevelopmentFee = _developmentFeeBuy;
        _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevelopmentFee;

        _fees.sellMarketingFee = _marketingFeeSell;
        _fees.sellLiquidityFee = _liquidityFeeSell;
        _fees.sellDevelopmentFee = _developmentFeeSell;
        _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevelopmentFee;
        require(_fees.buyTotalFees <= 70, "Must keep fees at 70% or less");   
        require(_fees.sellTotalFees <= 70, "Must keep fees at 70% or less");
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }
    function excludeFromWalletLimit(address account, bool excluded) public onlyOwner {
        _isExcludedMaxWalletAmount[account] = excluded;
    }
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function removeLimits() external onlyOwner {
        updateMaxTxnAmount(1000,1000);
        updateMaxWalletAmount(1000);
    }

    function setMarketPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from marketPair");
        marketPair[pair] = value;
    }

    function setWallets(address _marketingWallet,address _developmentWallet) external onlyOwner{
        marketingWallet = _marketingWallet;
        developmentWallet = _developmentWallet;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        
        if (amount == 0) {
            super._transfer(sender, recipient, 0);
            return;
        }

        if (
            sender != owner() &&
            recipient != owner() &&
            !isSwapping
        ) {

            if (!isTrading) {
                require(_isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "Trading is not active.");
            }
            if (marketPair[sender] && !_isExcludedMaxTransactionAmount[recipient]) {
                require(amount <= maxBuyAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
            } 
            else if (marketPair[recipient] && !_isExcludedMaxTransactionAmount[sender]) {
                require(amount <= maxSellAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            }

            if (!_isExcludedMaxWalletAmount[recipient]) {
                require(amount + balanceOf(recipient) <= maxWalletAmount, "Max wallet exceeded");
            }

        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= thresholdSwapAmount;

        if (
            canSwap &&
            swapEnabled &&
            !isSwapping &&
            marketPair[recipient] &&
            !_isExcludedFromFees[sender] &&
            !_isExcludedFromFees[recipient]
        ) {
            isSwapping = true;
            swapBack();
            isSwapping = false;
        }
 
        bool takeFee = !isSwapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) {
            takeFee = false;
        }
 
        
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            uint256 fees = 0;
            if(block.number < taxTill) {
                fees = amount.mul(99).div(100);
                tokensForMarketing += (fees * 94) / 99;
                tokensForDevelopment += (fees * 5) / 99;
            } else if (marketPair[recipient] && _fees.sellTotalFees > 0) {
                fees = amount.mul(_fees.sellTotalFees).div(100);
                tokensForLiquidity += fees * _fees.sellLiquidityFee / _fees.sellTotalFees;
                tokensForMarketing += fees * _fees.sellMarketingFee / _fees.sellTotalFees;
                tokensForDevelopment += fees * _fees.sellDevelopmentFee / _fees.sellTotalFees;
            }
            // on buy
            else if (marketPair[sender] && _fees.buyTotalFees > 0) {
                fees = amount.mul(_fees.buyTotalFees).div(100);
                tokensForLiquidity += fees * _fees.buyLiquidityFee / _fees.buyTotalFees;
                tokensForMarketing += fees * _fees.buyMarketingFee / _fees.buyTotalFees;
                tokensForDevelopment += fees * _fees.buyDevelopmentFee / _fees.buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(sender, address(this), fees);
            }

            amount -= fees;

        }

        super._transfer(sender, recipient, amount);
    }

    function swapTokensForEth(uint256 tAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

    }

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

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount } (address(this), tAmount, 0, 0 , address(this), block.timestamp);
    }

    function swapBack() private {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment;
        bool success;

        if (contractTokenBalance == 0 || toSwap == 0) { return; }

        if (contractTokenBalance > thresholdSwapAmount * 20) {
            contractTokenBalance = thresholdSwapAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractTokenBalance * tokensForLiquidity / toSwap / 2;
        uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
 
        uint256 newBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(toSwap);
        uint256 ethForDevelopment = newBalance.mul(tokensForDevelopment).div(toSwap);
        uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDevelopment);


        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDevelopment = 0;


        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity);
        }

        (success,) = address(developmentWallet).call{ value: (address(this).balance - ethForMarketing) } ("");
        (success,) = address(marketingWallet).call{ value: address(this).balance } ("");
    }

}

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"}],"name":"SwapAndLiquify","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":"_fees","outputs":[{"internalType":"uint256","name":"buyTotalFees","type":"uint256"},{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellTotalFees","type":"uint256"},{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_developmentWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_developmentFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_developmentFeeSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBuy","type":"uint256"},{"internalType":"uint256","name":"newMaxSell","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateThresholdSwapAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff021916908315150217905550604051806101000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250600d600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701555050348015620000dd57600080fd5b506040518060400160405280600981526020017f414c49454e20424f4200000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f41424f420000000000000000000000000000000000000000000000000000000081525081600390805190602001906200016292919062000df4565b5080600490805190602001906200017b92919062000df4565b50505060006200019062000aaa60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000f0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b919062000f0e565b6040518363ffffffff1660e01b81526004016200039a92919062000f51565b6020604051808303816000875af1158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e0919062000f0e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506001601a600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a6000620004dd62000ab260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000620005f662000ab260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000620006b562000ab260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008a06080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000adc60201b60201c565b5060006b06765c793fa10079d000000090506064600282620008c3919062000fb7565b620008cf919062001047565b6008819055506064600282620008e6919062000fb7565b620008f2919062001047565b600981905550606460028262000909919062000fb7565b62000915919062001047565b600a819055506103e86002826200092d919062000fb7565b62000939919062001047565b600b819055506014600d600101819055506000600d600301819055506000600d60020181905550600d60020154600d60030154600d600101546200097e91906200107f565b6200098a91906200107f565b600d600001819055506014600d600501819055506000600d600701819055506000600d60060181905550600d60060154600d60070154600d60050154620009d291906200107f565b620009de91906200107f565b600d6004018190555073905e9e95708e6a62857818e81df198c899de25e9600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073905e9e95708e6a62857818e81df198c899de25e9600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000aa3338262000b0a60201b60201c565b5062001263565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600062000b0062000af262000aaa60201b60201c565b848462000ca460201b60201c565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b73906200113d565b60405180910390fd5b62000b988160025462000d9160201b62001e491790919060201c565b60028190555062000bf6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000d9160201b62001e491790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c98919062001170565b60405180910390a35050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d84919062001170565b60405180910390a3505050565b600080828462000da291906200107f565b90508381101562000dea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000de190620011dd565b60405180910390fd5b8091505092915050565b82805462000e02906200122e565b90600052602060002090601f01602090048101928262000e26576000855562000e72565b82601f1062000e4157805160ff191683800117855562000e72565b8280016001018555821562000e72579182015b8281111562000e7157825182559160200191906001019062000e54565b5b50905062000e81919062000e85565b5090565b5b8082111562000ea057600081600090555060010162000e86565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ed68262000ea9565b9050919050565b62000ee88162000ec9565b811462000ef457600080fd5b50565b60008151905062000f088162000edd565b92915050565b60006020828403121562000f275762000f2662000ea4565b5b600062000f378482850162000ef7565b91505092915050565b62000f4b8162000ec9565b82525050565b600060408201905062000f68600083018562000f40565b62000f77602083018462000f40565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fc48262000f7e565b915062000fd18362000f7e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200100d576200100c62000f88565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010548262000f7e565b9150620010618362000f7e565b92508262001074576200107362001018565b5b828204905092915050565b60006200108c8262000f7e565b9150620010998362000f7e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010d157620010d062000f88565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001125601f83620010dc565b91506200113282620010ed565b602082019050919050565b60006020820190508181036000830152620011588162001116565b9050919050565b6200116a8162000f7e565b82525050565b60006020820190506200118760008301846200115f565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620011c5601b83620010dc565b9150620011d2826200118d565b602082019050919050565b60006020820190508181036000830152620011f881620011b6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200124757607f821691505b6020821081036200125d576200125c620011ff565b5b50919050565b60805160a051614330620012b360003960008181610d3e01526117c6015260008181611e2701528181613018015281816130f901528181613120015281816131bc01526131e301526143306000f3fe6080604052600436106102295760003560e01c80638a8c523c11610123578063c16dd4a4116100ab578063e16830a81161006f578063e16830a814610841578063ef8700e51461086a578063f2fde38b14610895578063f5b3c3bf146108be578063f887ea40146108fb57610230565b8063c16dd4a414610757578063c18bc19514610780578063d212a69a146107a9578063d3f6a157146107db578063dd62ed3e1461080457610230565b8063992c58e4116100f2578063992c58e414610660578063a457c2d714610689578063a9059cbb146106c6578063b886311514610703578063c02466681461072e57610230565b80638a8c523c146105b65780638da5cb5b146105cd57806395d89b41146105f857806396880b171461062357610230565b8063313ce567116101b15780636ddd1713116101755780636ddd1713146104f757806370a0823114610522578063715018a61461055f578063751039fc146105765780637571336a1461058d57610230565b8063313ce567146103ea578063395093511461041557806349bd5a5e146104525780634fbee1931461047d578063555467a1146104ba57610230565b806318160ddd116101f857806318160ddd146103035780631a8145bb1461032e5780631c6e8a75146103595780631f3fed8f1461038257806323b872dd146103ad57610230565b806306fdde0314610235578063095ea7b31461026057806310d5de531461029d57806311a582c3146102da57610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610926565b604051610257919061338c565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613447565b6109b8565b60405161029491906134a2565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906134bd565b6109d6565b6040516102d191906134a2565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc91906134ea565b6109f6565b005b34801561030f57600080fd5b50610318610add565b6040516103259190613539565b60405180910390f35b34801561033a57600080fd5b50610343610ae7565b6040516103509190613539565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190613580565b610aed565b005b34801561038e57600080fd5b50610397610ba1565b6040516103a49190613539565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906135ad565b610ba7565b6040516103e191906134a2565b60405180910390f35b3480156103f657600080fd5b506103ff610c80565b60405161040c919061361c565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613447565b610c89565b60405161044991906134a2565b60405180910390f35b34801561045e57600080fd5b50610467610d3c565b6040516104749190613646565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f91906134bd565b610d60565b6040516104b191906134a2565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190613661565b610db6565b6040516104ee91906134a2565b60405180910390f35b34801561050357600080fd5b5061050c610e5f565b60405161051991906134a2565b60405180910390f35b34801561052e57600080fd5b50610549600480360381019061054491906134bd565b610e72565b6040516105569190613539565b60405180910390f35b34801561056b57600080fd5b50610574610eba565b005b34801561058257600080fd5b5061058b611012565b005b34801561059957600080fd5b506105b460048036038101906105af919061368e565b6110c2565b005b3480156105c257600080fd5b506105cb6111b4565b005b3480156105d957600080fd5b506105e2611296565b6040516105ef9190613646565b60405180910390f35b34801561060457600080fd5b5061060d6112c0565b60405161061a919061338c565b60405180910390f35b34801561062f57600080fd5b5061064a600480360381019061064591906134bd565b611352565b60405161065791906134a2565b60405180910390f35b34801561066c57600080fd5b50610687600480360381019061068291906136ce565b611372565b005b34801561069557600080fd5b506106b060048036038101906106ab9190613447565b61153d565b6040516106bd91906134a2565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190613447565b61160a565b6040516106fa91906134a2565b60405180910390f35b34801561070f57600080fd5b50610718611628565b60405161072591906134a2565b60405180910390f35b34801561073a57600080fd5b506107556004803603810190610750919061368e565b61163b565b005b34801561076357600080fd5b5061077e6004803603810190610779919061368e565b61172d565b005b34801561078c57600080fd5b506107a760048036038101906107a29190613661565b6118ad565b005b3480156107b557600080fd5b506107be61196d565b6040516107d298979695949392919061375b565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd91906137d9565b6119a3565b005b34801561081057600080fd5b5061082b600480360381019061082691906137d9565b611ac0565b6040516108389190613539565b60405180910390f35b34801561084d57600080fd5b506108686004803603810190610863919061368e565b611b47565b005b34801561087657600080fd5b5061087f611c39565b60405161088c9190613539565b60405180910390f35b3480156108a157600080fd5b506108bc60048036038101906108b791906134bd565b611c3f565b005b3480156108ca57600080fd5b506108e560048036038101906108e091906134bd565b611e05565b6040516108f291906134a2565b60405180910390f35b34801561090757600080fd5b50610910611e25565b60405161091d9190613878565b60405180910390f35b606060038054610935906138c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610961906138c2565b80156109ae5780601f10610983576101008083540402835291602001916109ae565b820191906000526020600020905b81548152906001019060200180831161099157829003601f168201915b5050505050905090565b60006109cc6109c5611ea7565b8484611eaf565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6109fe611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a849061393f565b60405180910390fd5b6103e882610a99610add565b610aa3919061398e565b610aad9190613a17565b6008819055506103e881610abf610add565b610ac9919061398e565b610ad39190613a17565b6009819055505050565b6000600254905090565b60165481565b610af5611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061393f565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60155481565b6000610bb4848484611f9a565b610c7584610bc0611ea7565b610c70856040518060600160405280602881526020016142d360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c26611ea7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296f9092919063ffffffff16565b611eaf565b600190509392505050565b60006012905090565b6000610d32610c96611ea7565b84610d2d8560016000610ca7611ea7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4990919063ffffffff16565b611eaf565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610dc0611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e469061393f565b60405180910390fd5b81600b8190555060019050919050565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec2611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f489061393f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101a611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a09061393f565b60405180910390fd5b6110b56103e8806109f6565b6110c06103e86118ad565b565b6110ca611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111509061393f565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111bc611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112429061393f565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff02191690831515021790555060004361128e9190613a48565b601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112cf906138c2565b80601f01602080910402602001604051908101604052809291908181526020018280546112fb906138c2565b80156113485780601f1061131d57610100808354040283529160200191611348565b820191906000526020600020905b81548152906001019060200180831161132b57829003601f168201915b5050505050905090565b601b6020528060005260406000206000915054906101000a900460ff1681565b61137a611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114009061393f565b60405180910390fd5b85600d6001018190555084600d6003018190555083600d60020181905550600d60020154600d60030154600d600101546114439190613a48565b61144d9190613a48565b600d6000018190555082600d6005018190555081600d6007018190555080600d60060181905550600d60060154600d60070154600d600501546114909190613a48565b61149a9190613a48565b600d600401819055506046600d6000015411156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613aea565b60405180910390fd5b6046600d600401541115611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90613aea565b60405180910390fd5b505050505050565b600061160061154a611ea7565b846115fb856040518060600160405280602581526020016142886025913960016000611574611ea7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296f9092919063ffffffff16565b611eaf565b6001905092915050565b600061161e611617611ea7565b8484611f9a565b6001905092915050565b600c60029054906101000a900460ff1681565b611643611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c99061393f565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611735611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb9061393f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990613b7c565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118b5611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b9061393f565b60405180910390fd5b6103e881611950610add565b61195a919061398e565b6119649190613a17565b600a8190555050565b600d8060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b6119ab611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a319061393f565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b4f611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd59061393f565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60175481565b611c47611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd9061393f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90613c0e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000808284611e589190613a48565b905083811015611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9490613c7a565b60405180910390fd5b8091505092915050565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f8d9190613539565b60405180910390a3505050565b60008103611fb357611fae838360006129d3565b61296a565b611fbb611296565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120295750611ff9611296565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120425750600c60029054906101000a900460ff16155b156123c857600c60009054906101000a900460ff1661213c57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120fc5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290613ce6565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121df5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561222e57600854811115612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090613d78565b60405180910390fd5b61231d565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122d15750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561231c5760095481111561231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231290613e0a565b60405180910390fd5b5b5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123c757600a5461237a83610e72565b826123859190613a48565b11156123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90613e76565b60405180910390fd5b5b5b60006123d330610e72565b90506000600b5482101590508080156123f85750600c60019054906101000a900460ff165b80156124115750600c60029054906101000a900460ff16155b80156124665750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156124bc5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125125750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612556576001600c60026101000a81548160ff02191690831515021790555061253a612b7d565b6000600c60026101000a81548160ff0219169083151502179055505b6000600c60029054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061260c5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561261657600090505b801561295b5760006018544310156126b85761264f6064612641606388612e6b90919063ffffffff16565b612ee590919063ffffffff16565b90506063605e82612660919061398e565b61266a9190613a17565b6015600082825461267b9190613a48565b925050819055506063600582612691919061398e565b61269b9190613a17565b601760008282546126ac9190613a48565b92505081905550612936565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561271657506000600d60040154115b156127f8576127466064612738600d6004015488612e6b90919063ffffffff16565b612ee590919063ffffffff16565b9050600d60040154600d600701548261275f919061398e565b6127699190613a17565b6016600082825461277a9190613a48565b92505081905550600d60040154600d6005015482612798919061398e565b6127a29190613a17565b601560008282546127b39190613a48565b92505081905550600d60040154600d60060154826127d1919061398e565b6127db9190613a17565b601760008282546127ec9190613a48565b92505081905550612935565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561285657506000600d60000154115b15612934576128866064612878600d6000015488612e6b90919063ffffffff16565b612ee590919063ffffffff16565b9050600d60000154600d600301548261289f919061398e565b6128a99190613a17565b601660008282546128ba9190613a48565b92505081905550600d60000154600d60010154826128d8919061398e565b6128e29190613a17565b601560008282546128f39190613a48565b92505081905550600d60000154600d6002015482612911919061398e565b61291b9190613a17565b6017600082825461292c9190613a48565b925050819055505b5b5b600081111561294b5761294a8730836129d3565b5b80856129579190613e96565b9450505b6129668686866129d3565b5050505b505050565b60008383111582906129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae919061338c565b60405180910390fd5b50600083856129c69190613e96565b9050809150509392505050565b612a3e816040518060600160405280602681526020016142ad602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ad1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b709190613539565b60405180910390a3505050565b6000612b8830610e72565b90506000601754601554601654612b9f9190613a48565b612ba99190613a48565b9050600080831480612bbb5750600082145b15612bc857505050612e69565b6014600b54612bd7919061398e565b831115612bf0576014600b54612bed919061398e565b92505b600060028360165486612c03919061398e565b612c0d9190613a17565b612c179190613a17565b90506000612c2e8286612f2f90919063ffffffff16565b90506000479050612c3e82612f79565b6000612c538247612f2f90919063ffffffff16565b90506000612c7e87612c7060155485612e6b90919063ffffffff16565b612ee590919063ffffffff16565b90506000612ca988612c9b60175486612e6b90919063ffffffff16565b612ee590919063ffffffff16565b905060008183612cb99190613a48565b84612cc49190613e96565b9050600060168190555060006015819055506000601781905550600087118015612cee5750600081115b15612d3757612cfd87826131b6565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868682604051612d2e929190613eca565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168347612d7c9190613e96565b604051612d8890613f24565b60006040518083038185875af1925050503d8060008114612dc5576040519150601f19603f3d011682016040523d82523d6000602084013e612dca565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e1690613f24565b60006040518083038185875af1925050503d8060008114612e53576040519150601f19603f3d011682016040523d82523d6000602084013e612e58565b606091505b505080985050505050505050505050505b565b6000808303612e7d5760009050612edf565b60008284612e8b919061398e565b9050828482612e9a9190613a17565b14612eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed190613fab565b60405180910390fd5b809150505b92915050565b6000612f2783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613290565b905092915050565b6000612f7183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061296f565b905092915050565b6000600267ffffffffffffffff811115612f9657612f95613fcb565b5b604051908082528060200260200182016040528015612fc45781602001602082028036833780820191505090505b5090503081600081518110612fdc57612fdb613ffa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a5919061403e565b816001815181106130b9576130b8613ffa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061311e307f000000000000000000000000000000000000000000000000000000000000000084611eaf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613180959493929190614164565b600060405180830381600087803b15801561319a57600080fd5b505af11580156131ae573d6000803e3d6000fd5b505050505050565b6131e1307f000000000000000000000000000000000000000000000000000000000000000084611eaf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613246969594939291906141be565b60606040518083038185885af1158015613264573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132899190614234565b5050505050565b600080831182906132d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ce919061338c565b60405180910390fd5b50600083856132e69190613a17565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561332d578082015181840152602081019050613312565b8381111561333c576000848401525b50505050565b6000601f19601f8301169050919050565b600061335e826132f3565b61336881856132fe565b935061337881856020860161330f565b61338181613342565b840191505092915050565b600060208201905081810360008301526133a68184613353565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133de826133b3565b9050919050565b6133ee816133d3565b81146133f957600080fd5b50565b60008135905061340b816133e5565b92915050565b6000819050919050565b61342481613411565b811461342f57600080fd5b50565b6000813590506134418161341b565b92915050565b6000806040838503121561345e5761345d6133ae565b5b600061346c858286016133fc565b925050602061347d85828601613432565b9150509250929050565b60008115159050919050565b61349c81613487565b82525050565b60006020820190506134b76000830184613493565b92915050565b6000602082840312156134d3576134d26133ae565b5b60006134e1848285016133fc565b91505092915050565b60008060408385031215613501576135006133ae565b5b600061350f85828601613432565b925050602061352085828601613432565b9150509250929050565b61353381613411565b82525050565b600060208201905061354e600083018461352a565b92915050565b61355d81613487565b811461356857600080fd5b50565b60008135905061357a81613554565b92915050565b600060208284031215613596576135956133ae565b5b60006135a48482850161356b565b91505092915050565b6000806000606084860312156135c6576135c56133ae565b5b60006135d4868287016133fc565b93505060206135e5868287016133fc565b92505060406135f686828701613432565b9150509250925092565b600060ff82169050919050565b61361681613600565b82525050565b6000602082019050613631600083018461360d565b92915050565b613640816133d3565b82525050565b600060208201905061365b6000830184613637565b92915050565b600060208284031215613677576136766133ae565b5b600061368584828501613432565b91505092915050565b600080604083850312156136a5576136a46133ae565b5b60006136b3858286016133fc565b92505060206136c48582860161356b565b9150509250929050565b60008060008060008060c087890312156136eb576136ea6133ae565b5b60006136f989828a01613432565b965050602061370a89828a01613432565b955050604061371b89828a01613432565b945050606061372c89828a01613432565b935050608061373d89828a01613432565b92505060a061374e89828a01613432565b9150509295509295509295565b600061010082019050613771600083018b61352a565b61377e602083018a61352a565b61378b604083018961352a565b613798606083018861352a565b6137a5608083018761352a565b6137b260a083018661352a565b6137bf60c083018561352a565b6137cc60e083018461352a565b9998505050505050505050565b600080604083850312156137f0576137ef6133ae565b5b60006137fe858286016133fc565b925050602061380f858286016133fc565b9150509250929050565b6000819050919050565b600061383e613839613834846133b3565b613819565b6133b3565b9050919050565b600061385082613823565b9050919050565b600061386282613845565b9050919050565b61387281613857565b82525050565b600060208201905061388d6000830184613869565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138da57607f821691505b6020821081036138ed576138ec613893565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139296020836132fe565b9150613934826138f3565b602082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061399982613411565b91506139a483613411565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139dd576139dc61395f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a2282613411565b9150613a2d83613411565b925082613a3d57613a3c6139e8565b5b828204905092915050565b6000613a5382613411565b9150613a5e83613411565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a9357613a9261395f565b5b828201905092915050565b7f4d757374206b656570206665657320617420373025206f72206c657373000000600082015250565b6000613ad4601d836132fe565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6d61726b65745061697200000000000000000000000000000000000000000000602082015250565b6000613b66602a836132fe565b9150613b7182613b0a565b604082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bf86026836132fe565b9150613c0382613b9c565b604082019050919050565b60006020820190508181036000830152613c2781613beb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c64601b836132fe565b9150613c6f82613c2e565b602082019050919050565b60006020820190508181036000830152613c9381613c57565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613cd06016836132fe565b9150613cdb82613c9a565b602082019050919050565b60006020820190508181036000830152613cff81613cc3565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613d626035836132fe565b9150613d6d82613d06565b604082019050919050565b60006020820190508181036000830152613d9181613d55565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613df46036836132fe565b9150613dff82613d98565b604082019050919050565b60006020820190508181036000830152613e2381613de7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613e606013836132fe565b9150613e6b82613e2a565b602082019050919050565b60006020820190508181036000830152613e8f81613e53565b9050919050565b6000613ea182613411565b9150613eac83613411565b925082821015613ebf57613ebe61395f565b5b828203905092915050565b6000604082019050613edf600083018561352a565b613eec602083018461352a565b9392505050565b600081905092915050565b50565b6000613f0e600083613ef3565b9150613f1982613efe565b600082019050919050565b6000613f2f82613f01565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f956021836132fe565b9150613fa082613f39565b604082019050919050565b60006020820190508181036000830152613fc481613f88565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614038816133e5565b92915050565b600060208284031215614054576140536133ae565b5b600061406284828501614029565b91505092915050565b6000819050919050565b600061409061408b6140868461406b565b613819565b613411565b9050919050565b6140a081614075565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140db816133d3565b82525050565b60006140ed83836140d2565b60208301905092915050565b6000602082019050919050565b6000614111826140a6565b61411b81856140b1565b9350614126836140c2565b8060005b8381101561415757815161413e88826140e1565b9750614149836140f9565b92505060018101905061412a565b5085935050505092915050565b600060a082019050614179600083018861352a565b6141866020830187614097565b81810360408301526141988186614106565b90506141a76060830185613637565b6141b4608083018461352a565b9695505050505050565b600060c0820190506141d36000830189613637565b6141e0602083018861352a565b6141ed6040830187614097565b6141fa6060830186614097565b6142076080830185613637565b61421460a083018461352a565b979650505050505050565b60008151905061422e8161341b565b92915050565b60008060006060848603121561424d5761424c6133ae565b5b600061425b8682870161421f565b935050602061426c8682870161421f565b925050604061427d8682870161421f565b915050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206da882420130465e8e6cfaf5b2df96471a8767e0f8079aec6deea423d999a29d64736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80638a8c523c11610123578063c16dd4a4116100ab578063e16830a81161006f578063e16830a814610841578063ef8700e51461086a578063f2fde38b14610895578063f5b3c3bf146108be578063f887ea40146108fb57610230565b8063c16dd4a414610757578063c18bc19514610780578063d212a69a146107a9578063d3f6a157146107db578063dd62ed3e1461080457610230565b8063992c58e4116100f2578063992c58e414610660578063a457c2d714610689578063a9059cbb146106c6578063b886311514610703578063c02466681461072e57610230565b80638a8c523c146105b65780638da5cb5b146105cd57806395d89b41146105f857806396880b171461062357610230565b8063313ce567116101b15780636ddd1713116101755780636ddd1713146104f757806370a0823114610522578063715018a61461055f578063751039fc146105765780637571336a1461058d57610230565b8063313ce567146103ea578063395093511461041557806349bd5a5e146104525780634fbee1931461047d578063555467a1146104ba57610230565b806318160ddd116101f857806318160ddd146103035780631a8145bb1461032e5780631c6e8a75146103595780631f3fed8f1461038257806323b872dd146103ad57610230565b806306fdde0314610235578063095ea7b31461026057806310d5de531461029d57806311a582c3146102da57610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610926565b604051610257919061338c565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613447565b6109b8565b60405161029491906134a2565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906134bd565b6109d6565b6040516102d191906134a2565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc91906134ea565b6109f6565b005b34801561030f57600080fd5b50610318610add565b6040516103259190613539565b60405180910390f35b34801561033a57600080fd5b50610343610ae7565b6040516103509190613539565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190613580565b610aed565b005b34801561038e57600080fd5b50610397610ba1565b6040516103a49190613539565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906135ad565b610ba7565b6040516103e191906134a2565b60405180910390f35b3480156103f657600080fd5b506103ff610c80565b60405161040c919061361c565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613447565b610c89565b60405161044991906134a2565b60405180910390f35b34801561045e57600080fd5b50610467610d3c565b6040516104749190613646565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f91906134bd565b610d60565b6040516104b191906134a2565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190613661565b610db6565b6040516104ee91906134a2565b60405180910390f35b34801561050357600080fd5b5061050c610e5f565b60405161051991906134a2565b60405180910390f35b34801561052e57600080fd5b50610549600480360381019061054491906134bd565b610e72565b6040516105569190613539565b60405180910390f35b34801561056b57600080fd5b50610574610eba565b005b34801561058257600080fd5b5061058b611012565b005b34801561059957600080fd5b506105b460048036038101906105af919061368e565b6110c2565b005b3480156105c257600080fd5b506105cb6111b4565b005b3480156105d957600080fd5b506105e2611296565b6040516105ef9190613646565b60405180910390f35b34801561060457600080fd5b5061060d6112c0565b60405161061a919061338c565b60405180910390f35b34801561062f57600080fd5b5061064a600480360381019061064591906134bd565b611352565b60405161065791906134a2565b60405180910390f35b34801561066c57600080fd5b50610687600480360381019061068291906136ce565b611372565b005b34801561069557600080fd5b506106b060048036038101906106ab9190613447565b61153d565b6040516106bd91906134a2565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190613447565b61160a565b6040516106fa91906134a2565b60405180910390f35b34801561070f57600080fd5b50610718611628565b60405161072591906134a2565b60405180910390f35b34801561073a57600080fd5b506107556004803603810190610750919061368e565b61163b565b005b34801561076357600080fd5b5061077e6004803603810190610779919061368e565b61172d565b005b34801561078c57600080fd5b506107a760048036038101906107a29190613661565b6118ad565b005b3480156107b557600080fd5b506107be61196d565b6040516107d298979695949392919061375b565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd91906137d9565b6119a3565b005b34801561081057600080fd5b5061082b600480360381019061082691906137d9565b611ac0565b6040516108389190613539565b60405180910390f35b34801561084d57600080fd5b506108686004803603810190610863919061368e565b611b47565b005b34801561087657600080fd5b5061087f611c39565b60405161088c9190613539565b60405180910390f35b3480156108a157600080fd5b506108bc60048036038101906108b791906134bd565b611c3f565b005b3480156108ca57600080fd5b506108e560048036038101906108e091906134bd565b611e05565b6040516108f291906134a2565b60405180910390f35b34801561090757600080fd5b50610910611e25565b60405161091d9190613878565b60405180910390f35b606060038054610935906138c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610961906138c2565b80156109ae5780601f10610983576101008083540402835291602001916109ae565b820191906000526020600020905b81548152906001019060200180831161099157829003601f168201915b5050505050905090565b60006109cc6109c5611ea7565b8484611eaf565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6109fe611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a849061393f565b60405180910390fd5b6103e882610a99610add565b610aa3919061398e565b610aad9190613a17565b6008819055506103e881610abf610add565b610ac9919061398e565b610ad39190613a17565b6009819055505050565b6000600254905090565b60165481565b610af5611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061393f565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b60155481565b6000610bb4848484611f9a565b610c7584610bc0611ea7565b610c70856040518060600160405280602881526020016142d360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c26611ea7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296f9092919063ffffffff16565b611eaf565b600190509392505050565b60006012905090565b6000610d32610c96611ea7565b84610d2d8560016000610ca7611ea7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4990919063ffffffff16565b611eaf565b6001905092915050565b7f000000000000000000000000e292b2fbd1951de9c8d90748b0cd5629740a59c281565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610dc0611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e469061393f565b60405180910390fd5b81600b8190555060019050919050565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec2611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f489061393f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101a611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a09061393f565b60405180910390fd5b6110b56103e8806109f6565b6110c06103e86118ad565b565b6110ca611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111509061393f565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111bc611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112429061393f565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff02191690831515021790555060004361128e9190613a48565b601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546112cf906138c2565b80601f01602080910402602001604051908101604052809291908181526020018280546112fb906138c2565b80156113485780601f1061131d57610100808354040283529160200191611348565b820191906000526020600020905b81548152906001019060200180831161132b57829003601f168201915b5050505050905090565b601b6020528060005260406000206000915054906101000a900460ff1681565b61137a611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114009061393f565b60405180910390fd5b85600d6001018190555084600d6003018190555083600d60020181905550600d60020154600d60030154600d600101546114439190613a48565b61144d9190613a48565b600d6000018190555082600d6005018190555081600d6007018190555080600d60060181905550600d60060154600d60070154600d600501546114909190613a48565b61149a9190613a48565b600d600401819055506046600d6000015411156114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613aea565b60405180910390fd5b6046600d600401541115611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90613aea565b60405180910390fd5b505050505050565b600061160061154a611ea7565b846115fb856040518060600160405280602581526020016142886025913960016000611574611ea7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296f9092919063ffffffff16565b611eaf565b6001905092915050565b600061161e611617611ea7565b8484611f9a565b6001905092915050565b600c60029054906101000a900460ff1681565b611643611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c99061393f565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611735611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb9061393f565b60405180910390fd5b7f000000000000000000000000e292b2fbd1951de9c8d90748b0cd5629740a59c273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990613b7c565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118b5611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b9061393f565b60405180910390fd5b6103e881611950610add565b61195a919061398e565b6119649190613a17565b600a8190555050565b600d8060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b6119ab611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a319061393f565b60405180910390fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b4f611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd59061393f565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60175481565b611c47611ea7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd9061393f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90613c0e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000808284611e589190613a48565b905083811015611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9490613c7a565b60405180910390fd5b8091505092915050565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f8d9190613539565b60405180910390a3505050565b60008103611fb357611fae838360006129d3565b61296a565b611fbb611296565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120295750611ff9611296565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120425750600c60029054906101000a900460ff16155b156123c857600c60009054906101000a900460ff1661213c57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120fc5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290613ce6565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121df5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561222e57600854811115612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090613d78565b60405180910390fd5b61231d565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122d15750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561231c5760095481111561231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231290613e0a565b60405180910390fd5b5b5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123c757600a5461237a83610e72565b826123859190613a48565b11156123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90613e76565b60405180910390fd5b5b5b60006123d330610e72565b90506000600b5482101590508080156123f85750600c60019054906101000a900460ff165b80156124115750600c60029054906101000a900460ff16155b80156124665750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156124bc5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125125750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612556576001600c60026101000a81548160ff02191690831515021790555061253a612b7d565b6000600c60026101000a81548160ff0219169083151502179055505b6000600c60029054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061260c5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561261657600090505b801561295b5760006018544310156126b85761264f6064612641606388612e6b90919063ffffffff16565b612ee590919063ffffffff16565b90506063605e82612660919061398e565b61266a9190613a17565b6015600082825461267b9190613a48565b925050819055506063600582612691919061398e565b61269b9190613a17565b601760008282546126ac9190613a48565b92505081905550612936565b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561271657506000600d60040154115b156127f8576127466064612738600d6004015488612e6b90919063ffffffff16565b612ee590919063ffffffff16565b9050600d60040154600d600701548261275f919061398e565b6127699190613a17565b6016600082825461277a9190613a48565b92505081905550600d60040154600d6005015482612798919061398e565b6127a29190613a17565b601560008282546127b39190613a48565b92505081905550600d60040154600d60060154826127d1919061398e565b6127db9190613a17565b601760008282546127ec9190613a48565b92505081905550612935565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561285657506000600d60000154115b15612934576128866064612878600d6000015488612e6b90919063ffffffff16565b612ee590919063ffffffff16565b9050600d60000154600d600301548261289f919061398e565b6128a99190613a17565b601660008282546128ba9190613a48565b92505081905550600d60000154600d60010154826128d8919061398e565b6128e29190613a17565b601560008282546128f39190613a48565b92505081905550600d60000154600d6002015482612911919061398e565b61291b9190613a17565b6017600082825461292c9190613a48565b925050819055505b5b5b600081111561294b5761294a8730836129d3565b5b80856129579190613e96565b9450505b6129668686866129d3565b5050505b505050565b60008383111582906129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae919061338c565b60405180910390fd5b50600083856129c69190613e96565b9050809150509392505050565b612a3e816040518060600160405280602681526020016142ad602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ad1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e4990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b709190613539565b60405180910390a3505050565b6000612b8830610e72565b90506000601754601554601654612b9f9190613a48565b612ba99190613a48565b9050600080831480612bbb5750600082145b15612bc857505050612e69565b6014600b54612bd7919061398e565b831115612bf0576014600b54612bed919061398e565b92505b600060028360165486612c03919061398e565b612c0d9190613a17565b612c179190613a17565b90506000612c2e8286612f2f90919063ffffffff16565b90506000479050612c3e82612f79565b6000612c538247612f2f90919063ffffffff16565b90506000612c7e87612c7060155485612e6b90919063ffffffff16565b612ee590919063ffffffff16565b90506000612ca988612c9b60175486612e6b90919063ffffffff16565b612ee590919063ffffffff16565b905060008183612cb99190613a48565b84612cc49190613e96565b9050600060168190555060006015819055506000601781905550600087118015612cee5750600081115b15612d3757612cfd87826131b6565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868682604051612d2e929190613eca565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168347612d7c9190613e96565b604051612d8890613f24565b60006040518083038185875af1925050503d8060008114612dc5576040519150601f19603f3d011682016040523d82523d6000602084013e612dca565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e1690613f24565b60006040518083038185875af1925050503d8060008114612e53576040519150601f19603f3d011682016040523d82523d6000602084013e612e58565b606091505b505080985050505050505050505050505b565b6000808303612e7d5760009050612edf565b60008284612e8b919061398e565b9050828482612e9a9190613a17565b14612eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed190613fab565b60405180910390fd5b809150505b92915050565b6000612f2783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613290565b905092915050565b6000612f7183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061296f565b905092915050565b6000600267ffffffffffffffff811115612f9657612f95613fcb565b5b604051908082528060200260200182016040528015612fc45781602001602082028036833780820191505090505b5090503081600081518110612fdc57612fdb613ffa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a5919061403e565b816001815181106130b9576130b8613ffa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061311e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611eaf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613180959493929190614164565b600060405180830381600087803b15801561319a57600080fd5b505af11580156131ae573d6000803e3d6000fd5b505050505050565b6131e1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611eaf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613246969594939291906141be565b60606040518083038185885af1158015613264573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132899190614234565b5050505050565b600080831182906132d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ce919061338c565b60405180910390fd5b50600083856132e69190613a17565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561332d578082015181840152602081019050613312565b8381111561333c576000848401525b50505050565b6000601f19601f8301169050919050565b600061335e826132f3565b61336881856132fe565b935061337881856020860161330f565b61338181613342565b840191505092915050565b600060208201905081810360008301526133a68184613353565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133de826133b3565b9050919050565b6133ee816133d3565b81146133f957600080fd5b50565b60008135905061340b816133e5565b92915050565b6000819050919050565b61342481613411565b811461342f57600080fd5b50565b6000813590506134418161341b565b92915050565b6000806040838503121561345e5761345d6133ae565b5b600061346c858286016133fc565b925050602061347d85828601613432565b9150509250929050565b60008115159050919050565b61349c81613487565b82525050565b60006020820190506134b76000830184613493565b92915050565b6000602082840312156134d3576134d26133ae565b5b60006134e1848285016133fc565b91505092915050565b60008060408385031215613501576135006133ae565b5b600061350f85828601613432565b925050602061352085828601613432565b9150509250929050565b61353381613411565b82525050565b600060208201905061354e600083018461352a565b92915050565b61355d81613487565b811461356857600080fd5b50565b60008135905061357a81613554565b92915050565b600060208284031215613596576135956133ae565b5b60006135a48482850161356b565b91505092915050565b6000806000606084860312156135c6576135c56133ae565b5b60006135d4868287016133fc565b93505060206135e5868287016133fc565b92505060406135f686828701613432565b9150509250925092565b600060ff82169050919050565b61361681613600565b82525050565b6000602082019050613631600083018461360d565b92915050565b613640816133d3565b82525050565b600060208201905061365b6000830184613637565b92915050565b600060208284031215613677576136766133ae565b5b600061368584828501613432565b91505092915050565b600080604083850312156136a5576136a46133ae565b5b60006136b3858286016133fc565b92505060206136c48582860161356b565b9150509250929050565b60008060008060008060c087890312156136eb576136ea6133ae565b5b60006136f989828a01613432565b965050602061370a89828a01613432565b955050604061371b89828a01613432565b945050606061372c89828a01613432565b935050608061373d89828a01613432565b92505060a061374e89828a01613432565b9150509295509295509295565b600061010082019050613771600083018b61352a565b61377e602083018a61352a565b61378b604083018961352a565b613798606083018861352a565b6137a5608083018761352a565b6137b260a083018661352a565b6137bf60c083018561352a565b6137cc60e083018461352a565b9998505050505050505050565b600080604083850312156137f0576137ef6133ae565b5b60006137fe858286016133fc565b925050602061380f858286016133fc565b9150509250929050565b6000819050919050565b600061383e613839613834846133b3565b613819565b6133b3565b9050919050565b600061385082613823565b9050919050565b600061386282613845565b9050919050565b61387281613857565b82525050565b600060208201905061388d6000830184613869565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138da57607f821691505b6020821081036138ed576138ec613893565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139296020836132fe565b9150613934826138f3565b602082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061399982613411565b91506139a483613411565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139dd576139dc61395f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a2282613411565b9150613a2d83613411565b925082613a3d57613a3c6139e8565b5b828204905092915050565b6000613a5382613411565b9150613a5e83613411565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a9357613a9261395f565b5b828201905092915050565b7f4d757374206b656570206665657320617420373025206f72206c657373000000600082015250565b6000613ad4601d836132fe565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6d61726b65745061697200000000000000000000000000000000000000000000602082015250565b6000613b66602a836132fe565b9150613b7182613b0a565b604082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bf86026836132fe565b9150613c0382613b9c565b604082019050919050565b60006020820190508181036000830152613c2781613beb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c64601b836132fe565b9150613c6f82613c2e565b602082019050919050565b60006020820190508181036000830152613c9381613c57565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613cd06016836132fe565b9150613cdb82613c9a565b602082019050919050565b60006020820190508181036000830152613cff81613cc3565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613d626035836132fe565b9150613d6d82613d06565b604082019050919050565b60006020820190508181036000830152613d9181613d55565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613df46036836132fe565b9150613dff82613d98565b604082019050919050565b60006020820190508181036000830152613e2381613de7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613e606013836132fe565b9150613e6b82613e2a565b602082019050919050565b60006020820190508181036000830152613e8f81613e53565b9050919050565b6000613ea182613411565b9150613eac83613411565b925082821015613ebf57613ebe61395f565b5b828203905092915050565b6000604082019050613edf600083018561352a565b613eec602083018461352a565b9392505050565b600081905092915050565b50565b6000613f0e600083613ef3565b9150613f1982613efe565b600082019050919050565b6000613f2f82613f01565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f956021836132fe565b9150613fa082613f39565b604082019050919050565b60006020820190508181036000830152613fc481613f88565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614038816133e5565b92915050565b600060208284031215614054576140536133ae565b5b600061406284828501614029565b91505092915050565b6000819050919050565b600061409061408b6140868461406b565b613819565b613411565b9050919050565b6140a081614075565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140db816133d3565b82525050565b60006140ed83836140d2565b60208301905092915050565b6000602082019050919050565b6000614111826140a6565b61411b81856140b1565b9350614126836140c2565b8060005b8381101561415757815161413e88826140e1565b9750614149836140f9565b92505060018101905061412a565b5085935050505092915050565b600060a082019050614179600083018861352a565b6141866020830187614097565b81810360408301526141988186614106565b90506141a76060830185613637565b6141b4608083018461352a565b9695505050505050565b600060c0820190506141d36000830189613637565b6141e0602083018861352a565b6141ed6040830187614097565b6141fa6060830186614097565b6142076080830185613637565b61421460a083018461352a565b979650505050505050565b60008151905061422e8161341b565b92915050565b60008060006060848603121561424d5761424c6133ae565b5b600061425b8682870161421f565b935050602061426c8682870161421f565b925050604061427d8682870161421f565b915050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206da882420130465e8e6cfaf5b2df96471a8767e0f8079aec6deea423d999a29d64736f6c634300080e0033

Deployed Bytecode Sourcemap

12963:12724:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1820:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2727:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14328:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17226:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2138:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14155:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17690:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14115:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2903:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2038:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3265:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13086:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19691:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17060:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13464:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2253:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6392:148;;;;;;;;;;;;;:::i;:::-;;19149:129;;;;;;;;;;;;;:::i;:::-;;18997:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16845:145;;;;;;;;;;;;;:::i;:::-;;6179:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1927:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14398:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17799:896;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3490:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2387:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13502:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18707:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19286:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17448:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13839:267;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;19490:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2569:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18845:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14195:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6548:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14465:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13037;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1820:99;1873:13;1906:5;1899:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1820:99;:::o;2727:168::-;2809:4;2826:39;2835:12;:10;:12::i;:::-;2849:7;2858:6;2826:8;:39::i;:::-;2883:4;2876:11;;2727:168;;;;:::o;14328:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;17226:214::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17366:4:::1;17353:9;17337:13;:11;:13::i;:::-;:25;;;;:::i;:::-;17336:34;;;;:::i;:::-;17321:12;:49;;;;17428:4;17414:10;17398:13;:11;:13::i;:::-;:26;;;;:::i;:::-;17397:35;;;;:::i;:::-;17381:13;:51;;;;17226:214:::0;;:::o;2138:107::-;2198:7;2225:12;;2218:19;;2138:107;:::o;14155:33::-;;;;:::o;17690:101::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17776:7:::1;17762:11;;:21;;;;;;;;;;;;;;;;;;17690:101:::0;:::o;14115:33::-;;;;:::o;2903:354::-;3042:4;3059:36;3069:6;3077:9;3088:6;3059:9;:36::i;:::-;3106:121;3115:6;3123:12;:10;:12::i;:::-;3137:89;3175:6;3137:89;;;;;;;;;;;;;;;;;:11;:19;3149:6;3137:19;;;;;;;;;;;;;;;:33;3157:12;:10;:12::i;:::-;3137:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3106:8;:121::i;:::-;3245:4;3238:11;;2903:354;;;;;:::o;2038:92::-;2095:5;2120:2;2113:9;;2038:92;:::o;3265:217::-;3352:4;3369:83;3378:12;:10;:12::i;:::-;3392:7;3401:50;3440:10;3401:11;:25;3413:12;:10;:12::i;:::-;3401:25;;;;;;;;;;;;;;;:34;3427:7;3401:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3369:8;:83::i;:::-;3470:4;3463:11;;3265:217;;;;:::o;13086:38::-;;;:::o;19691:125::-;19756:4;19780:19;:28;19800:7;19780:28;;;;;;;;;;;;;;;;;;;;;;;;;19773:35;;19691:125;;;:::o;17060:158::-;17141:4;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17179:9:::1;17157:19;:31;;;;17206:4;17199:11;;17060:158:::0;;;:::o;13464:31::-;;;;;;;;;;;;;:::o;2253:126::-;2326:7;2353:9;:18;2363:7;2353:18;;;;;;;;;;;;;;;;2346:25;;2253:126;;;:::o;6392:148::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6499:1:::1;6462:40;;6483:6;;;;;;;;;;;6462:40;;;;;;;;;;;;6530:1;6513:6;;:19;;;;;;;;;;;;;;;;;;6392:148::o:0;19149:129::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19203:29:::1;19222:4;19227::::0;19203:18:::1;:29::i;:::-;19243:27;19265:4;19243:21;:27::i;:::-;19149:129::o:0;18997:144::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19129:4:::1;19087:31;:39;19119:6;19087:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18997:144:::0;;:::o;16845:145::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16912:4:::1;16900:9;;:16;;;;;;;;;;;;;;;;;;16941:4;16927:11;;:18;;;;;;;;;;;;;;;;;;16981:1;16966:12;:16;;;;:::i;:::-;16956:7;:26;;;;16845:145::o:0;6179:78::-;6216:7;6243:6;;;;;;;;;;;6236:13;;6179:78;:::o;1927:103::-;1982:13;2015:7;2008:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1927:103;:::o;14398:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17799:896::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18032:16:::1;18008:5;:21;;:40;;;;18083:16;18059:5;:21;;:40;;;;18136:18;18110:5;:23;;:44;;;;18234:5;:23;;;18210:5;:21;;;18186:5;:21;;;:45;;;;:::i;:::-;:71;;;;:::i;:::-;18165:5;:18;;:92;;;;18295:17;18270:5;:22;;:42;;;;18348:17;18323:5;:22;;:42;;;;18403:19;18376:5;:24;;:46;;;;18505:5;:24;;;18480:5;:22;;;18455:5;:22;;;:47;;;;:::i;:::-;:74;;;;:::i;:::-;18433:5;:19;;:96;;;;18570:2;18548:5;:18;;;:24;;18540:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18651:2;18628:5;:19;;;:25;;18620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17799:896:::0;;;;;;:::o;3490:268::-;3582:4;3599:129;3608:12;:10;:12::i;:::-;3622:7;3631:96;3670:15;3631:96;;;;;;;;;;;;;;;;;:11;:25;3643:12;:10;:12::i;:::-;3631:25;;;;;;;;;;;;;;;:34;3657:7;3631:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;3599:8;:129::i;:::-;3746:4;3739:11;;3490:268;;;;:::o;2387:174::-;2472:4;2489:42;2499:12;:10;:12::i;:::-;2513:9;2524:6;2489:9;:42::i;:::-;2549:4;2542:11;;2387:174;;;;:::o;13502:22::-;;;;;;;;;;;;;:::o;18707:132::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18823:8:::1;18792:19;:28;18812:7;18792:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18707:132:::0;;:::o;19286:196::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19379:13:::1;19371:21;;:4;:21;;::::0;19363:76:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19469:5;19450:10;:16;19461:4;19450:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;19286:196:::0;;:::o;17448:146::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17582:4:::1;17565:13;17549;:11;:13::i;:::-;:29;;;;:::i;:::-;17548:38;;;;:::i;:::-;17530:15;:56;;;;17448:146:::0;:::o;13839:267::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19490:193::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19610:16:::1;19592:15;;:34;;;;;;;;;;;;;;;;;;19657:18;19637:17;;:38;;;;;;;;;;;;;;;;;;19490:193:::0;;:::o;2569:150::-;2657:7;2684:11;:18;2696:5;2684:18;;;;;;;;;;;;;;;:27;2703:7;2684:27;;;;;;;;;;;;;;;;2677:34;;2569:150;;;;:::o;18845:146::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18975:8:::1;18937:26;:35;18964:7;18937:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18845:146:::0;;:::o;14195:35::-;;;;:::o;6548:244::-;6315:12;:10;:12::i;:::-;6305:22;;:6;;;;;;;;;;;:22;;;6297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6657:1:::1;6637:22;;:8;:22;;::::0;6629:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6747:8;6718:38;;6739:6;;;;;;;;;;;6718:38;;;;;;;;;;;;6776:8;6767:6;;:17;;;;;;;;;;;;;;;;;;6548:244:::0;:::o;14465:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;13037:::-;;;:::o;4719:180::-;4776:7;4796:9;4812:1;4808;:5;;;;:::i;:::-;4796:17;;4837:1;4832;:6;;4824:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4890:1;4883:8;;;4719:180;;;;:::o;1267:97::-;1319:7;1346:10;1339:17;;1267:97;:::o;4456:220::-;4614:6;4584:11;:18;4596:5;4584:18;;;;;;;;;;;;;;;:27;4603:7;4584:27;;;;;;;;;;;;;;;:36;;;;4652:7;4636:32;;4645:5;4636:32;;;4661:6;4636:32;;;;;;:::i;:::-;;;;;;;;4456:220;;;:::o;19824:3317::-;19981:1;19971:6;:11;19967:102;;19999:37;20015:6;20023:9;20034:1;19999:15;:37::i;:::-;20051:7;;19967:102;20109:7;:5;:7::i;:::-;20099:17;;:6;:17;;;;:54;;;;;20146:7;:5;:7::i;:::-;20133:20;;:9;:20;;;;20099:54;:82;;;;;20171:10;;;;;;;;;;;20170:11;20099:82;20081:888;;;20215:9;;;;;;;;;;;20210:147;;20253:19;:27;20273:6;20253:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;20284:19;:30;20304:9;20284:30;;;;;;;;;;;;;;;;;;;;;;;;;20253:61;20245:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20210:147;20375:10;:18;20386:6;20375:18;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;20398:31;:42;20430:9;20398:42;;;;;;;;;;;;;;;;;;;;;;;;;20397:43;20375:65;20371:410;;;20479:12;;20469:6;:22;;20461:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;20371:410;;;20589:10;:21;20600:9;20589:21;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;20615:31;:39;20647:6;20615:39;;;;;;;;;;;;;;;;;;;;;;;;;20614:40;20589:65;20585:196;;;20693:13;;20683:6;:23;;20675:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20585:196;20371:410;20802:26;:37;20829:9;20802:37;;;;;;;;;;;;;;;;;;;;;;;;;20797:159;;20901:15;;20877:20;20887:9;20877;:20::i;:::-;20868:6;:29;;;;:::i;:::-;:48;;20860:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;20797:159;20081:888;20982:28;21013:24;21031:4;21013:9;:24::i;:::-;20982:55;;21051:12;21090:19;;21066:20;:43;;21051:58;;21140:7;:35;;;;;21164:11;;;;;;;;;;;21140:35;:63;;;;;21193:10;;;;;;;;;;;21192:11;21140:63;:101;;;;;21220:10;:21;21231:9;21220:21;;;;;;;;;;;;;;;;;;;;;;;;;21140:101;:146;;;;;21259:19;:27;21279:6;21259:27;;;;;;;;;;;;;;;;;;;;;;;;;21258:28;21140:146;:194;;;;;21304:19;:30;21324:9;21304:30;;;;;;;;;;;;;;;;;;;;;;;;;21303:31;21140:194;21122:326;;;21374:4;21361:10;;:17;;;;;;;;;;;;;;;;;;21393:10;:8;:10::i;:::-;21431:5;21418:10;;:18;;;;;;;;;;;;;;;;;;21122:326;21461:12;21477:10;;;;;;;;;;;21476:11;21461:26;;21589:19;:27;21609:6;21589:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;21620:19;:30;21640:9;21620:30;;;;;;;;;;;;;;;;;;;;;;;;;21589:61;21585:109;;;21677:5;21667:15;;21585:109;21795:7;21791:1288;;;21819:12;21868:7;;21853:12;:22;21850:1076;;;21903:23;21922:3;21903:14;21914:2;21903:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;21896:30;;21981:2;21975;21968:4;:9;;;;:::i;:::-;21967:16;;;;:::i;:::-;21945:18;;:38;;;;;;;:::i;:::-;;;;;;;;22039:2;22034:1;22027:4;:8;;;;:::i;:::-;22026:15;;;;:::i;:::-;22002:20;;:39;;;;;;;:::i;:::-;;;;;;;;21850:1076;;;22067:10;:21;22078:9;22067:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;22114:1;22092:5;:19;;;:23;22067:48;22063:863;;;22143:40;22179:3;22143:31;22154:5;:19;;;22143:6;:10;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;22136:47;;22256:5;:19;;;22231:5;:22;;;22224:4;:29;;;;:::i;:::-;:51;;;;:::i;:::-;22202:18;;:73;;;;;;;:::i;:::-;;;;;;;;22348:5;:19;;;22323:5;:22;;;22316:4;:29;;;;:::i;:::-;:51;;;;:::i;:::-;22294:18;;:73;;;;;;;:::i;:::-;;;;;;;;22444:5;:19;;;22417:5;:24;;;22410:4;:31;;;;:::i;:::-;:53;;;;:::i;:::-;22386:20;;:77;;;;;;;:::i;:::-;;;;;;;;22063:863;;;22525:10;:18;22536:6;22525:18;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;22568:1;22547:5;:18;;;:22;22525:44;22521:405;;;22597:39;22632:3;22597:30;22608:5;:18;;;22597:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;22590:46;;22708:5;:18;;;22684:5;:21;;;22677:4;:28;;;;:::i;:::-;:49;;;;:::i;:::-;22655:18;;:71;;;;;;;:::i;:::-;;;;;;;;22798:5;:18;;;22774:5;:21;;;22767:4;:28;;;;:::i;:::-;:49;;;;:::i;:::-;22745:18;;:71;;;;;;;:::i;:::-;;;;;;;;22892:5;:18;;;22866:5;:23;;;22859:4;:30;;;;:::i;:::-;:51;;;;:::i;:::-;22835:20;;:75;;;;;;;:::i;:::-;;;;;;;;22521:405;22063:863;21850:1076;22953:1;22946:4;:8;22942:93;;;22975:44;22991:6;23007:4;23014;22975:15;:44::i;:::-;22942:93;23061:4;23051:14;;;;;:::i;:::-;;;21804:1275;21791:1288;23091:42;23107:6;23115:9;23126:6;23091:15;:42::i;:::-;19946:3195;;;19824:3317;;;;:::o;5053:191::-;5138:7;5171:1;5166;:6;;5174:12;5158:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5198:9;5214:1;5210;:5;;;;:::i;:::-;5198:17;;5235:1;5228:8;;;5053:191;;;;;:::o;3766:358::-;3928:71;3950:6;3928:71;;;;;;;;;;;;;;;;;:9;:17;3938:6;3928:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;3908:9;:17;3918:6;3908:17;;;;;;;;;;;;;;;:91;;;;4033:32;4058:6;4033:9;:20;4043:9;4033:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;4010:9;:20;4020:9;4010:20;;;;;;;;;;;;;;;:55;;;;4098:9;4081:35;;4090:6;4081:35;;;4109:6;4081:35;;;;;;:::i;:::-;;;;;;;;3766:358;;;:::o;24069:1613::-;24108:28;24139:24;24157:4;24139:9;:24::i;:::-;24108:55;;24174:14;24233:20;;24212:18;;24191;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;24174:79;;24264:12;24317:1;24293:20;:25;:40;;;;24332:1;24322:6;:11;24293:40;24289:57;;;24337:7;;;;;24289:57;24407:2;24385:19;;:24;;;;:::i;:::-;24362:20;:47;24358:127;;;24471:2;24449:19;;:24;;;;:::i;:::-;24426:47;;24358:127;24546:23;24625:1;24616:6;24595:18;;24572:20;:41;;;;:::i;:::-;:50;;;;:::i;:::-;:54;;;;:::i;:::-;24546:80;;24637:26;24666:41;24691:15;24666:20;:24;;:41;;;;:::i;:::-;24637:70;;24721:25;24749:21;24721:49;;24783:36;24800:18;24783:16;:36::i;:::-;24834:18;24855:44;24881:17;24855:21;:25;;:44;;;;:::i;:::-;24834:65;;24913:23;24939:46;24978:6;24939:34;24954:18;;24939:10;:14;;:34;;;;:::i;:::-;:38;;:46;;;;:::i;:::-;24913:72;;24996:25;25024:48;25065:6;25024:36;25039:20;;25024:10;:14;;:36;;;;:::i;:::-;:40;;:48;;;;:::i;:::-;24996:76;;25083:23;25141:17;25123:15;:35;;;;:::i;:::-;25109:10;:50;;;;:::i;:::-;25083:76;;25195:1;25174:18;:22;;;;25228:1;25207:18;:22;;;;25263:1;25240:20;:24;;;;25301:1;25283:15;:19;:42;;;;;25324:1;25306:15;:19;25283:42;25279:192;;;25342:46;25355:15;25372;25342:12;:46::i;:::-;25408:51;25423:18;25443:15;25408:51;;;;;;;:::i;:::-;;;;;;;;25279:192;25504:17;;;;;;;;;;;25496:31;;25561:15;25537:21;:39;;;;:::i;:::-;25496:88;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25483:101;;;;;25616:15;;;;;;;;;;;25608:29;;25646:21;25608:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25595:79;;;;;24097:1585;;;;;;;;;;24069:1613;:::o;5252:256::-;5309:7;5344:1;5339;:6;5335:47;;5369:1;5362:8;;;;5335:47;5395:9;5411:1;5407;:5;;;;:::i;:::-;5395:17;;5440:1;5435;5431;:5;;;;:::i;:::-;:10;5423:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5499:1;5492:8;;;5252:256;;;;;:::o;5517:131::-;5574:7;5601:39;5605:1;5608;5601:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5594:46;;5517:131;;;;:::o;4910:135::-;4967:7;4994:43;4998:1;5001;4994:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4987:50;;4910:135;;;;:::o;23149:554::-;23273:21;23311:1;23297:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23273:40;;23342:4;23324;23329:1;23324:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23368:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23358:4;23363:1;23358:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23394:49;23411:4;23426:6;23435:7;23394:8;:49::i;:::-;23482:6;:57;;;23554:7;23576:1;23620:4;23647;23667:15;23482:211;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23200:503;23149:554;:::o;23711:350::-;23855:49;23872:4;23887:6;23896:7;23855:8;:49::i;:::-;23947:6;:22;;;23978:9;23999:4;24006:7;24015:1;24018;24030:4;24037:15;23947:106;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23711:350;;:::o;5658:190::-;5743:7;5775:1;5771;:5;5778:12;5763:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5802:9;5818:1;5814;:5;;;;:::i;:::-;5802:17;;5839:1;5832:8;;;5658:190;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:474::-;3897:6;3905;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;4207:2;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4178:118;3829:474;;;;;:::o;4309:118::-;4396:24;4414:5;4396:24;:::i;:::-;4391:3;4384:37;4309:118;;:::o;4433:222::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:71;4645:1;4634:9;4630:17;4621:6;4577:71;:::i;:::-;4433:222;;;;:::o;4661:116::-;4731:21;4746:5;4731:21;:::i;:::-;4724:5;4721:32;4711:60;;4767:1;4764;4757:12;4711:60;4661:116;:::o;4783:133::-;4826:5;4864:6;4851:20;4842:29;;4880:30;4904:5;4880:30;:::i;:::-;4783:133;;;;:::o;4922:323::-;4978:6;5027:2;5015:9;5006:7;5002:23;4998:32;4995:119;;;5033:79;;:::i;:::-;4995:119;5153:1;5178:50;5220:7;5211:6;5200:9;5196:22;5178:50;:::i;:::-;5168:60;;5124:114;4922:323;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:86::-;5911:7;5951:4;5944:5;5940:16;5929:27;;5876:86;;;:::o;5968:112::-;6051:22;6067:5;6051:22;:::i;:::-;6046:3;6039:35;5968:112;;:::o;6086:214::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:67;6290:1;6279:9;6275:17;6266:6;6226:67;:::i;:::-;6086:214;;;;:::o;6306:118::-;6393:24;6411:5;6393:24;:::i;:::-;6388:3;6381:37;6306:118;;:::o;6430:222::-;6523:4;6561:2;6550:9;6546:18;6538:26;;6574:71;6642:1;6631:9;6627:17;6618:6;6574:71;:::i;:::-;6430:222;;;;:::o;6658:329::-;6717:6;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;6658:329;;;;:::o;6993:468::-;7058:6;7066;7115:2;7103:9;7094:7;7090:23;7086:32;7083:119;;;7121:79;;:::i;:::-;7083:119;7241:1;7266:53;7311:7;7302:6;7291:9;7287:22;7266:53;:::i;:::-;7256:63;;7212:117;7368:2;7394:50;7436:7;7427:6;7416:9;7412:22;7394:50;:::i;:::-;7384:60;;7339:115;6993:468;;;;;:::o;7467:1057::-;7571:6;7579;7587;7595;7603;7611;7660:3;7648:9;7639:7;7635:23;7631:33;7628:120;;;7667:79;;:::i;:::-;7628:120;7787:1;7812:53;7857:7;7848:6;7837:9;7833:22;7812:53;:::i;:::-;7802:63;;7758:117;7914:2;7940:53;7985:7;7976:6;7965:9;7961:22;7940:53;:::i;:::-;7930:63;;7885:118;8042:2;8068:53;8113:7;8104:6;8093:9;8089:22;8068:53;:::i;:::-;8058:63;;8013:118;8170:2;8196:53;8241:7;8232:6;8221:9;8217:22;8196:53;:::i;:::-;8186:63;;8141:118;8298:3;8325:53;8370:7;8361:6;8350:9;8346:22;8325:53;:::i;:::-;8315:63;;8269:119;8427:3;8454:53;8499:7;8490:6;8479:9;8475:22;8454:53;:::i;:::-;8444:63;;8398:119;7467:1057;;;;;;;;:::o;8530:997::-;8819:4;8857:3;8846:9;8842:19;8834:27;;8871:71;8939:1;8928:9;8924:17;8915:6;8871:71;:::i;:::-;8952:72;9020:2;9009:9;9005:18;8996:6;8952:72;:::i;:::-;9034;9102:2;9091:9;9087:18;9078:6;9034:72;:::i;:::-;9116;9184:2;9173:9;9169:18;9160:6;9116:72;:::i;:::-;9198:73;9266:3;9255:9;9251:19;9242:6;9198:73;:::i;:::-;9281;9349:3;9338:9;9334:19;9325:6;9281:73;:::i;:::-;9364;9432:3;9421:9;9417:19;9408:6;9364:73;:::i;:::-;9447;9515:3;9504:9;9500:19;9491:6;9447:73;:::i;:::-;8530:997;;;;;;;;;;;:::o;9533:474::-;9601:6;9609;9658:2;9646:9;9637:7;9633:23;9629:32;9626:119;;;9664:79;;:::i;:::-;9626:119;9784:1;9809:53;9854:7;9845:6;9834:9;9830:22;9809:53;:::i;:::-;9799:63;;9755:117;9911:2;9937:53;9982:7;9973:6;9962:9;9958:22;9937:53;:::i;:::-;9927:63;;9882:118;9533:474;;;;;:::o;10013:60::-;10041:3;10062:5;10055:12;;10013:60;;;:::o;10079:142::-;10129:9;10162:53;10180:34;10189:24;10207:5;10189:24;:::i;:::-;10180:34;:::i;:::-;10162:53;:::i;:::-;10149:66;;10079:142;;;:::o;10227:126::-;10277:9;10310:37;10341:5;10310:37;:::i;:::-;10297:50;;10227:126;;;:::o;10359:153::-;10436:9;10469:37;10500:5;10469:37;:::i;:::-;10456:50;;10359:153;;;:::o;10518:185::-;10632:64;10690:5;10632:64;:::i;:::-;10627:3;10620:77;10518:185;;:::o;10709:276::-;10829:4;10867:2;10856:9;10852:18;10844:26;;10880:98;10975:1;10964:9;10960:17;10951:6;10880:98;:::i;:::-;10709:276;;;;:::o;10991:180::-;11039:77;11036:1;11029:88;11136:4;11133:1;11126:15;11160:4;11157:1;11150:15;11177:320;11221:6;11258:1;11252:4;11248:12;11238:22;;11305:1;11299:4;11295:12;11326:18;11316:81;;11382:4;11374:6;11370:17;11360:27;;11316:81;11444:2;11436:6;11433:14;11413:18;11410:38;11407:84;;11463:18;;:::i;:::-;11407:84;11228:269;11177:320;;;:::o;11503:182::-;11643:34;11639:1;11631:6;11627:14;11620:58;11503:182;:::o;11691:366::-;11833:3;11854:67;11918:2;11913:3;11854:67;:::i;:::-;11847:74;;11930:93;12019:3;11930:93;:::i;:::-;12048:2;12043:3;12039:12;12032:19;;11691:366;;;:::o;12063:419::-;12229:4;12267:2;12256:9;12252:18;12244:26;;12316:9;12310:4;12306:20;12302:1;12291:9;12287:17;12280:47;12344:131;12470:4;12344:131;:::i;:::-;12336:139;;12063:419;;;:::o;12488:180::-;12536:77;12533:1;12526:88;12633:4;12630:1;12623:15;12657:4;12654:1;12647:15;12674:348;12714:7;12737:20;12755:1;12737:20;:::i;:::-;12732:25;;12771:20;12789:1;12771:20;:::i;:::-;12766:25;;12959:1;12891:66;12887:74;12884:1;12881:81;12876:1;12869:9;12862:17;12858:105;12855:131;;;12966:18;;:::i;:::-;12855:131;13014:1;13011;13007:9;12996:20;;12674:348;;;;:::o;13028:180::-;13076:77;13073:1;13066:88;13173:4;13170:1;13163:15;13197:4;13194:1;13187:15;13214:185;13254:1;13271:20;13289:1;13271:20;:::i;:::-;13266:25;;13305:20;13323:1;13305:20;:::i;:::-;13300:25;;13344:1;13334:35;;13349:18;;:::i;:::-;13334:35;13391:1;13388;13384:9;13379:14;;13214:185;;;;:::o;13405:305::-;13445:3;13464:20;13482:1;13464:20;:::i;:::-;13459:25;;13498:20;13516:1;13498:20;:::i;:::-;13493:25;;13652:1;13584:66;13580:74;13577:1;13574:81;13571:107;;;13658:18;;:::i;:::-;13571:107;13702:1;13699;13695:9;13688:16;;13405:305;;;;:::o;13716:179::-;13856:31;13852:1;13844:6;13840:14;13833:55;13716:179;:::o;13901:366::-;14043:3;14064:67;14128:2;14123:3;14064:67;:::i;:::-;14057:74;;14140:93;14229:3;14140:93;:::i;:::-;14258:2;14253:3;14249:12;14242:19;;13901:366;;;:::o;14273:419::-;14439:4;14477:2;14466:9;14462:18;14454:26;;14526:9;14520:4;14516:20;14512:1;14501:9;14497:17;14490:47;14554:131;14680:4;14554:131;:::i;:::-;14546:139;;14273:419;;;:::o;14698:229::-;14838:34;14834:1;14826:6;14822:14;14815:58;14907:12;14902:2;14894:6;14890:15;14883:37;14698:229;:::o;14933:366::-;15075:3;15096:67;15160:2;15155:3;15096:67;:::i;:::-;15089:74;;15172:93;15261:3;15172:93;:::i;:::-;15290:2;15285:3;15281:12;15274:19;;14933:366;;;:::o;15305:419::-;15471:4;15509:2;15498:9;15494:18;15486:26;;15558:9;15552:4;15548:20;15544:1;15533:9;15529:17;15522:47;15586:131;15712:4;15586:131;:::i;:::-;15578:139;;15305:419;;;:::o;15730:225::-;15870:34;15866:1;15858:6;15854:14;15847:58;15939:8;15934:2;15926:6;15922:15;15915:33;15730:225;:::o;15961:366::-;16103:3;16124:67;16188:2;16183:3;16124:67;:::i;:::-;16117:74;;16200:93;16289:3;16200:93;:::i;:::-;16318:2;16313:3;16309:12;16302:19;;15961:366;;;:::o;16333:419::-;16499:4;16537:2;16526:9;16522:18;16514:26;;16586:9;16580:4;16576:20;16572:1;16561:9;16557:17;16550:47;16614:131;16740:4;16614:131;:::i;:::-;16606:139;;16333:419;;;:::o;16758:177::-;16898:29;16894:1;16886:6;16882:14;16875:53;16758:177;:::o;16941:366::-;17083:3;17104:67;17168:2;17163:3;17104:67;:::i;:::-;17097:74;;17180:93;17269:3;17180:93;:::i;:::-;17298:2;17293:3;17289:12;17282:19;;16941:366;;;:::o;17313:419::-;17479:4;17517:2;17506:9;17502:18;17494:26;;17566:9;17560:4;17556:20;17552:1;17541:9;17537:17;17530:47;17594:131;17720:4;17594:131;:::i;:::-;17586:139;;17313:419;;;:::o;17738:172::-;17878:24;17874:1;17866:6;17862:14;17855:48;17738:172;:::o;17916:366::-;18058:3;18079:67;18143:2;18138:3;18079:67;:::i;:::-;18072:74;;18155:93;18244:3;18155:93;:::i;:::-;18273:2;18268:3;18264:12;18257:19;;17916:366;;;:::o;18288:419::-;18454:4;18492:2;18481:9;18477:18;18469:26;;18541:9;18535:4;18531:20;18527:1;18516:9;18512:17;18505:47;18569:131;18695:4;18569:131;:::i;:::-;18561:139;;18288:419;;;:::o;18713:240::-;18853:34;18849:1;18841:6;18837:14;18830:58;18922:23;18917:2;18909:6;18905:15;18898:48;18713:240;:::o;18959:366::-;19101:3;19122:67;19186:2;19181:3;19122:67;:::i;:::-;19115:74;;19198:93;19287:3;19198:93;:::i;:::-;19316:2;19311:3;19307:12;19300:19;;18959:366;;;:::o;19331:419::-;19497:4;19535:2;19524:9;19520:18;19512:26;;19584:9;19578:4;19574:20;19570:1;19559:9;19555:17;19548:47;19612:131;19738:4;19612:131;:::i;:::-;19604:139;;19331:419;;;:::o;19756:241::-;19896:34;19892:1;19884:6;19880:14;19873:58;19965:24;19960:2;19952:6;19948:15;19941:49;19756:241;:::o;20003:366::-;20145:3;20166:67;20230:2;20225:3;20166:67;:::i;:::-;20159:74;;20242:93;20331:3;20242:93;:::i;:::-;20360:2;20355:3;20351:12;20344:19;;20003:366;;;:::o;20375:419::-;20541:4;20579:2;20568:9;20564:18;20556:26;;20628:9;20622:4;20618:20;20614:1;20603:9;20599:17;20592:47;20656:131;20782:4;20656:131;:::i;:::-;20648:139;;20375:419;;;:::o;20800:169::-;20940:21;20936:1;20928:6;20924:14;20917:45;20800:169;:::o;20975:366::-;21117:3;21138:67;21202:2;21197:3;21138:67;:::i;:::-;21131:74;;21214:93;21303:3;21214:93;:::i;:::-;21332:2;21327:3;21323:12;21316:19;;20975:366;;;:::o;21347:419::-;21513:4;21551:2;21540:9;21536:18;21528:26;;21600:9;21594:4;21590:20;21586:1;21575:9;21571:17;21564:47;21628:131;21754:4;21628:131;:::i;:::-;21620:139;;21347:419;;;:::o;21772:191::-;21812:4;21832:20;21850:1;21832:20;:::i;:::-;21827:25;;21866:20;21884:1;21866:20;:::i;:::-;21861:25;;21905:1;21902;21899:8;21896:34;;;21910:18;;:::i;:::-;21896:34;21955:1;21952;21948:9;21940:17;;21772:191;;;;:::o;21969:332::-;22090:4;22128:2;22117:9;22113:18;22105:26;;22141:71;22209:1;22198:9;22194:17;22185:6;22141:71;:::i;:::-;22222:72;22290:2;22279:9;22275:18;22266:6;22222:72;:::i;:::-;21969:332;;;;;:::o;22307:147::-;22408:11;22445:3;22430:18;;22307:147;;;;:::o;22460:114::-;;:::o;22580:398::-;22739:3;22760:83;22841:1;22836:3;22760:83;:::i;:::-;22753:90;;22852:93;22941:3;22852:93;:::i;:::-;22970:1;22965:3;22961:11;22954:18;;22580:398;;;:::o;22984:379::-;23168:3;23190:147;23333:3;23190:147;:::i;:::-;23183:154;;23354:3;23347:10;;22984:379;;;:::o;23369:220::-;23509:34;23505:1;23497:6;23493:14;23486:58;23578:3;23573:2;23565:6;23561:15;23554:28;23369:220;:::o;23595:366::-;23737:3;23758:67;23822:2;23817:3;23758:67;:::i;:::-;23751:74;;23834:93;23923:3;23834:93;:::i;:::-;23952:2;23947:3;23943:12;23936:19;;23595:366;;;:::o;23967:419::-;24133:4;24171:2;24160:9;24156:18;24148:26;;24220:9;24214:4;24210:20;24206:1;24195:9;24191:17;24184:47;24248:131;24374:4;24248:131;:::i;:::-;24240:139;;23967:419;;;:::o;24392:180::-;24440:77;24437:1;24430:88;24537:4;24534:1;24527:15;24561:4;24558:1;24551:15;24578:180;24626:77;24623:1;24616:88;24723:4;24720:1;24713:15;24747:4;24744:1;24737:15;24764:143;24821:5;24852:6;24846:13;24837:22;;24868:33;24895:5;24868:33;:::i;:::-;24764:143;;;;:::o;24913:351::-;24983:6;25032:2;25020:9;25011:7;25007:23;25003:32;25000:119;;;25038:79;;:::i;:::-;25000:119;25158:1;25183:64;25239:7;25230:6;25219:9;25215:22;25183:64;:::i;:::-;25173:74;;25129:128;24913:351;;;;:::o;25270:85::-;25315:7;25344:5;25333:16;;25270:85;;;:::o;25361:158::-;25419:9;25452:61;25470:42;25479:32;25505:5;25479:32;:::i;:::-;25470:42;:::i;:::-;25452:61;:::i;:::-;25439:74;;25361:158;;;:::o;25525:147::-;25620:45;25659:5;25620:45;:::i;:::-;25615:3;25608:58;25525:147;;:::o;25678:114::-;25745:6;25779:5;25773:12;25763:22;;25678:114;;;:::o;25798:184::-;25897:11;25931:6;25926:3;25919:19;25971:4;25966:3;25962:14;25947:29;;25798:184;;;;:::o;25988:132::-;26055:4;26078:3;26070:11;;26108:4;26103:3;26099:14;26091:22;;25988:132;;;:::o;26126:108::-;26203:24;26221:5;26203:24;:::i;:::-;26198:3;26191:37;26126:108;;:::o;26240:179::-;26309:10;26330:46;26372:3;26364:6;26330:46;:::i;:::-;26408:4;26403:3;26399:14;26385:28;;26240:179;;;;:::o;26425:113::-;26495:4;26527;26522:3;26518:14;26510:22;;26425:113;;;:::o;26574:732::-;26693:3;26722:54;26770:5;26722:54;:::i;:::-;26792:86;26871:6;26866:3;26792:86;:::i;:::-;26785:93;;26902:56;26952:5;26902:56;:::i;:::-;26981:7;27012:1;26997:284;27022:6;27019:1;27016:13;26997:284;;;27098:6;27092:13;27125:63;27184:3;27169:13;27125:63;:::i;:::-;27118:70;;27211:60;27264:6;27211:60;:::i;:::-;27201:70;;27057:224;27044:1;27041;27037:9;27032:14;;26997:284;;;27001:14;27297:3;27290:10;;26698:608;;;26574:732;;;;:::o;27312:831::-;27575:4;27613:3;27602:9;27598:19;27590:27;;27627:71;27695:1;27684:9;27680:17;27671:6;27627:71;:::i;:::-;27708:80;27784:2;27773:9;27769:18;27760:6;27708:80;:::i;:::-;27835:9;27829:4;27825:20;27820:2;27809:9;27805:18;27798:48;27863:108;27966:4;27957:6;27863:108;:::i;:::-;27855:116;;27981:72;28049:2;28038:9;28034:18;28025:6;27981:72;:::i;:::-;28063:73;28131:3;28120:9;28116:19;28107:6;28063:73;:::i;:::-;27312:831;;;;;;;;:::o;28149:807::-;28398:4;28436:3;28425:9;28421:19;28413:27;;28450:71;28518:1;28507:9;28503:17;28494:6;28450:71;:::i;:::-;28531:72;28599:2;28588:9;28584:18;28575:6;28531:72;:::i;:::-;28613:80;28689:2;28678:9;28674:18;28665:6;28613:80;:::i;:::-;28703;28779:2;28768:9;28764:18;28755:6;28703:80;:::i;:::-;28793:73;28861:3;28850:9;28846:19;28837:6;28793:73;:::i;:::-;28876;28944:3;28933:9;28929:19;28920:6;28876:73;:::i;:::-;28149:807;;;;;;;;;:::o;28962:143::-;29019:5;29050:6;29044:13;29035:22;;29066:33;29093:5;29066:33;:::i;:::-;28962:143;;;;:::o;29111:663::-;29199:6;29207;29215;29264:2;29252:9;29243:7;29239:23;29235:32;29232:119;;;29270:79;;:::i;:::-;29232:119;29390:1;29415:64;29471:7;29462:6;29451:9;29447:22;29415:64;:::i;:::-;29405:74;;29361:128;29528:2;29554:64;29610:7;29601:6;29590:9;29586:22;29554:64;:::i;:::-;29544:74;;29499:129;29667:2;29693:64;29749:7;29740:6;29729:9;29725:22;29693:64;:::i;:::-;29683:74;;29638:129;29111:663;;;;;:::o

Swarm Source

ipfs://6da882420130465e8e6cfaf5b2df96471a8767e0f8079aec6deea423d999a29d
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.