ETH Price: $1,646.72 (+2.89%)
Gas: 20 Gwei
 

Overview

Max Total Supply

10,000,000 SBT

Holders

11

Total Transfers

-

Market

Chart

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Shiboost

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
𝓢𝓗𝓘𝓑𝓞𝓞𝓢𝓣  
           Investments • Experts • Network.

𝓢𝓞𝓒𝓘𝓐𝓛𝓢
           WEBSITE  : www.shiboost.com
           TWITTER  : @ShiboostERC20
           TELEGRAM : https://t.me/Shiboost
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Shiboost is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Shiboost";
    string private _symbol = "SBT";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0x0bE70e8cECAfBc4c3A704af21634B2b5e261E63F);
    address payable public DeveloperWallet = payable(0x8754759f47Ea821E66801e9C654B5872d0F09e71);
    address public liquidityReciever;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    // mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 1;
    uint256 public _buyMarketingFee = 2;
    uint256 public _buyDeveloperFee = 3;
    
    uint256 public _sellLiquidityFee = 1;
    uint256 public _sellMarketingFee = 2;
    uint256 public _sellDeveloperFee = 3;

    uint256 public feeUnits = 100;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 10000000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(0).div(100);  //0%
    uint256 public _walletMax =   _totalSupply.mul(0).div(100);   //0%

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

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;
        liquidityReciever = address(msg.sender);

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

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

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

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

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

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

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

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

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

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

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

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

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

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

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

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

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

    function setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityReciever = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    // function setBlacklist(address _adr, bool _status) external onlyOwner {
    //     blacklist[_adr] = _status;
    // }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        require(_totalTaxIfBuying <= (feeUnits/25), "Buy fees must be 25% or less");
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
        require(_totalTaxIfSelling <= (feeUnits/25), "Sell fees must be 25% or less");
    }
    

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

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        // require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

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

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

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

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

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

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

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

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

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

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

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

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

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

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

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

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

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeUnits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

Contract Creation Code

60c06040526040518060400160405280600881526020017f536869626f6f7374000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062001048565b506040518060400160405280600381526020017f5342540000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001048565b506012600360006101000a81548160ff021916908360ff160217905550730be70e8cecafbc4c3a704af21634b2b5e261e63f600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738754759f47ea821e66801e9c654b5872d0f09e71600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600c556002600d556003600e556001600f55600260105560036011556064601255600360009054906101000a900460ff16600a620002169190620013aa565b62989680620002269190620014e7565b6015556200026060646200024c600160155462000e7660201b6200329a1790919060201c565b62000efa60201b620033151790919060201c565b6016556200029a606462000286600060155462000e7660201b6200329a1790919060201c565b62000efa60201b620033151790919060201c565b601755620002d46064620002c0600060155462000e7660201b6200329a1790919060201c565b62000efa60201b620033151790919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055503480156200035057600080fd5b5060006200036362000f4c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046157600080fd5b505afa15801562000476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049c91906200110f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ff57600080fd5b505afa15801562000514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053a91906200110f565b6040518363ffffffff1660e01b815260040162000559929190620011ec565b602060405180830381600087803b1580156200057457600080fd5b505af115801562000589573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005af91906200110f565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620006eb62000f5460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089e62000f5460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000acb62000f5460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ca1600e5462000c8d600d54600c5462000f7d60201b6200335f1790919060201c565b62000f7d60201b6200335f1790919060201c565b60138190555062000ce060115462000ccc601054600f5462000f7d60201b6200335f1790919060201c565b62000f7d60201b6200335f1790919060201c565b601481905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506015546006600062000db862000f4c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000e0662000f4c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000e67919062001281565b60405180910390a3506200173c565b60008083141562000e8b576000905062000ef4565b6000828462000e9b9190620014e7565b905082848262000eac919062001317565b1462000eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ee6906200125f565b60405180910390fd5b809150505b92915050565b600062000f4483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000fe060201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f8e9190620012ba565b90508381101562000fd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fcd906200123d565b60405180910390fd5b8091505092915050565b600080831182906200102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001021919062001219565b60405180910390fd5b50600083856200103b919062001317565b9050809150509392505050565b8280546200105690620015c9565b90600052602060002090601f0160209004810192826200107a5760008555620010c6565b82601f106200109557805160ff1916838001178555620010c6565b82800160010185558215620010c6579182015b82811115620010c5578251825591602001919060010190620010a8565b5b509050620010d59190620010d9565b5090565b5b80821115620010f4576000816000905550600101620010da565b5090565b600081519050620011098162001722565b92915050565b6000602082840312156200112257600080fd5b60006200113284828501620010f8565b91505092915050565b620011468162001548565b82525050565b600062001159826200129e565b620011658185620012a9565b93506200117781856020860162001593565b62001182816200168c565b840191505092915050565b60006200119c601b83620012a9565b9150620011a982620016aa565b602082019050919050565b6000620011c3602183620012a9565b9150620011d082620016d3565b604082019050919050565b620011e6816200157c565b82525050565b60006040820190506200120360008301856200113b565b6200121260208301846200113b565b9392505050565b600060208201905081810360008301526200123581846200114c565b905092915050565b6000602082019050818103600083015262001258816200118d565b9050919050565b600060208201905081810360008301526200127a81620011b4565b9050919050565b6000602082019050620012986000830184620011db565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012c7826200157c565b9150620012d4836200157c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200130c576200130b620015ff565b5b828201905092915050565b600062001324826200157c565b915062001331836200157c565b9250826200134457620013436200162e565b5b828204905092915050565b6000808291508390505b6001851115620013a157808604811115620013795762001378620015ff565b5b6001851615620013895780820291505b808102905062001399856200169d565b945062001359565b94509492505050565b6000620013b7826200157c565b9150620013c48362001586565b9250620013f37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013fb565b905092915050565b6000826200140d5760019050620014e0565b816200141d5760009050620014e0565b8160018114620014365760028114620014415762001477565b6001915050620014e0565b60ff841115620014565762001455620015ff565b5b8360020a91508482111562001470576200146f620015ff565b5b50620014e0565b5060208310610133831016604e8410600b8410161715620014b15782820a905083811115620014ab57620014aa620015ff565b5b620014e0565b620014c084848460016200134f565b92509050818404811115620014da57620014d9620015ff565b5b81810290505b9392505050565b6000620014f4826200157c565b915062001501836200157c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200153d576200153c620015ff565b5b828202905092915050565b600062001555826200155c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620015b357808201518184015260208101905062001596565b83811115620015c3576000848401525b50505050565b60006002820490506001821680620015e257607f821691505b60208210811415620015f957620015f86200165d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6200172d8162001548565b81146200173957600080fd5b50565b60805160601c60a05160601c615a3b620017766000396000818161107801526114cb01526000818161149f01526114f70152615a3b6000f3fe6080604052600436106103b15760003560e01c806388790a68116101e7578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e09578063f872858a14610e32578063f8f6329014610e5d578063fb4b8e6c14610e88576103b8565b8063f1d5f51714610d63578063f2fde38b14610d8c578063f455444614610db5578063f680f79914610dde576103b8565b8063ec28438a116100dc578063ec28438a14610cbd578063ee828db314610ce6578063ef422a1814610d0f578063f0cd1dac14610d38576103b8565b8063da00097d14610c13578063dc44b6a014610c3e578063dd62ed3e14610c69578063e6b2603b14610ca6576103b8565b8063a9059cbb11610185578063c860795211610154578063c860795214610b57578063c867d60b14610b82578063c9c9afc514610bbf578063d2d7ad8314610be8576103b8565b8063a9059cbb14610a9b578063c49b9a8014610ad8578063c5d2418914610b01578063c816841b14610b2c576103b8565b806395d89b41116101c157806395d89b41146109df57806398e944c814610a0a578063a457c2d714610a35578063a5d69d1f14610a72576103b8565b806388790a681461094c5780638b42507f146109775780638da5cb5b146109b4576103b8565b80633b97084a116102d757806370a082311161026a578063807c2d9c11610239578063807c2d9c146108a257806382eefb43146108cd578063844d591c146108f85780638526148514610921576103b8565b806370a08231146107f8578063715018a61461083557806375f0a8741461084c5780637d1db4a514610877576103b8565b80635194f9bf116102a65780635194f9bf1461072a5780635342acb4146107555780635881f3ef1461079257806367243482146107cf576103b8565b80633b97084a146106705780633ecad271146106995780634a74bb02146106d65780634cb80fd514610701576103b8565b80632198cf6c1161034f57806327c8f8351161031e57806327c8f835146105b25780632b112e49146105dd578063313ce567146106085780633950935114610633576103b8565b80632198cf6c146104f857806323555d571461052157806323b872dd1461054c5780632563ae8314610589576103b8565b8063095ea7b31161038b578063095ea7b31461043c5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e85780630930907b14610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb1565b6040516103df9190615002565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614afc565b610f43565b005b34801561041d57600080fd5b50610426611076565b6040516104339190614ee3565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906149d0565b61109a565b6040516104709190614fcc565b60405180910390f35b34801561048557600080fd5b5061048e6110b8565b60405161049b9190614fe7565b60405180910390f35b3480156104b057600080fd5b506104b96110de565b6040516104c691906151e4565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614afc565b6110e8565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614994565b61121b565b005b34801561052d57600080fd5b5061053661130b565b60405161054391906151e4565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190614945565b611311565b6040516105809190614fcc565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190614a81565b6113eb565b005b3480156105be57600080fd5b506105c761149d565b6040516105d49190614ee3565b60405180910390f35b3480156105e957600080fd5b506105f26114c1565b6040516105ff91906151e4565b60405180910390f35b34801561061457600080fd5b5061061d61153f565b60405161062a9190615289565b60405180910390f35b34801561063f57600080fd5b5061065a600480360381019061065591906149d0565b611556565b6040516106679190614fcc565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190614ad3565b611609565b005b3480156106a557600080fd5b506106c060048036038101906106bb91906148b7565b6116a8565b6040516106cd9190614fcc565b60405180910390f35b3480156106e257600080fd5b506106eb6116c8565b6040516106f89190614fcc565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906148b7565b6116db565b005b34801561073657600080fd5b5061073f6117b4565b60405161074c91906151e4565b60405180910390f35b34801561076157600080fd5b5061077c600480360381019061077791906148b7565b6117ba565b6040516107899190614fcc565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b491906148b7565b6117da565b6040516107c69190614ee3565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190614a0c565b611cbe565b005b34801561080457600080fd5b5061081f600480360381019061081a91906148b7565b61217d565b60405161082c91906151e4565b60405180910390f35b34801561084157600080fd5b5061084a6121c6565b005b34801561085857600080fd5b5061086161231b565b60405161086e9190614efe565b60405180910390f35b34801561088357600080fd5b5061088c612341565b60405161089991906151e4565b60405180910390f35b3480156108ae57600080fd5b506108b7612347565b6040516108c491906151e4565b60405180910390f35b3480156108d957600080fd5b506108e261234d565b6040516108ef91906151e4565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190614994565b612353565b005b34801561092d57600080fd5b50610936612443565b6040516109439190614fcc565b60405180910390f35b34801561095857600080fd5b50610961612456565b60405161096e91906151e4565b60405180910390f35b34801561098357600080fd5b5061099e600480360381019061099991906148b7565b61245c565b6040516109ab9190614fcc565b60405180910390f35b3480156109c057600080fd5b506109c961247c565b6040516109d69190614ee3565b60405180910390f35b3480156109eb57600080fd5b506109f46124a5565b604051610a019190615002565b60405180910390f35b348015610a1657600080fd5b50610a1f612537565b604051610a2c9190614ee3565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a5791906149d0565b61255d565b604051610a699190614fcc565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614a81565b61262a565b005b348015610aa757600080fd5b50610ac26004803603810190610abd91906149d0565b6126dc565b604051610acf9190614fcc565b60405180910390f35b348015610ae457600080fd5b50610aff6004803603810190610afa9190614a81565b6126fb565b005b348015610b0d57600080fd5b50610b166127e4565b604051610b2391906151e4565b60405180910390f35b348015610b3857600080fd5b50610b416127ea565b604051610b4e9190614ee3565b60405180910390f35b348015610b6357600080fd5b50610b6c612810565b604051610b7991906151e4565b60405180910390f35b348015610b8e57600080fd5b50610ba96004803603810190610ba491906148b7565b612816565b604051610bb69190614fcc565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be191906148b7565b612836565b005b348015610bf457600080fd5b50610bfd61290f565b604051610c0a91906151e4565b60405180910390f35b348015610c1f57600080fd5b50610c28612915565b604051610c359190614fcc565b60405180910390f35b348015610c4a57600080fd5b50610c53612928565b604051610c6091906151e4565b60405180910390f35b348015610c7557600080fd5b50610c906004803603810190610c8b9190614909565b61292e565b604051610c9d91906151e4565b60405180910390f35b348015610cb257600080fd5b50610cbb6129b5565b005b348015610cc957600080fd5b50610ce46004803603810190610cdf9190614ad3565b612ac3565b005b348015610cf257600080fd5b50610d0d6004803603810190610d089190614a81565b612b62565b005b348015610d1b57600080fd5b50610d366004803603810190610d319190614994565b612c14565b005b348015610d4457600080fd5b50610d4d612d04565b604051610d5a91906151e4565b60405180910390f35b348015610d6f57600080fd5b50610d8a6004803603810190610d859190614ad3565b612d0a565b005b348015610d9857600080fd5b50610db36004803603810190610dae91906148b7565b612da9565b005b348015610dc157600080fd5b50610ddc6004803603810190610dd791906149d0565b612f6b565b005b348015610dea57600080fd5b50610df3613092565b604051610e0091906151e4565b60405180910390f35b348015610e1557600080fd5b50610e306004803603810190610e2b9190614994565b613098565b005b348015610e3e57600080fd5b50610e47613188565b604051610e549190614fcc565b60405180910390f35b348015610e6957600080fd5b50610e7261319b565b604051610e7f9190614efe565b60405180910390f35b348015610e9457600080fd5b50610eaf6004803603810190610eaa91906148b7565b6131c1565b005b606060018054610ec0906154e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610eec906154e9565b8015610f395780601f10610f0e57610100808354040283529160200191610f39565b820191906000526020600020905b815481529060010190602001808311610f1c57829003601f168201915b5050505050905090565b610f4b6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90615164565b60405180910390fd5b82600f81905550816010819055508060118190555061101860115461100a601054600f5461335f90919063ffffffff16565b61335f90919063ffffffff16565b601481905550601960125461102d919061535a565b6014541115611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890615184565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110ae6110a76133bd565b84846133c5565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6110f06133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490615164565b60405180910390fd5b82600c8190555081600d8190555080600e819055506111bd600e546111af600d54600c5461335f90919063ffffffff16565b61335f90919063ffffffff16565b60138190555060196012546111d2919061535a565b6013541115611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90615024565b60405180910390fd5b505050565b6112236133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790615164565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600061131e848484613590565b506113e08461132b6133bd565b6113db856040518060600160405280602881526020016159b960289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113916133bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b6133c5565b600190509392505050565b6113f36133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790615164565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061153a6114ef7f000000000000000000000000000000000000000000000000000000000000000061217d565b61152c61151b7f000000000000000000000000000000000000000000000000000000000000000061217d565b601554613c2790919063ffffffff16565b613c2790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006115ff6115636133bd565b846115fa85600760006115746133bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b6133c5565b6001905092915050565b6116116133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169590615164565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b6116e36133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790615164565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60086020528060005260406000206000915054906101000a900460ff1681565b60006117e46133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890615164565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bc57600080fd5b505afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148e0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195657600080fd5b505afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e91906148e0565b6040518363ffffffff1660e01b81526004016119ab929190614f19565b60206040518083038186803b1580156119c357600080fd5b505afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb91906148e0565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbc578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7857600080fd5b505afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab091906148e0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1257600080fd5b505afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a91906148e0565b6040518363ffffffff1660e01b8152600401611b67929190614f19565b602060405180830381600087803b158015611b8157600080fd5b505af1158015611b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb991906148e0565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cc66133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90615164565b60405180910390fd5b6000339050828290508585905014611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9790615144565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611dfe9190615304565b91508080611e0b9061551b565b915050611da8565b5080611e1e8361217d565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690615064565b60405180910390fd5b611eb181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c2790919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561217457611fe0858583818110611f3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600660008a8a86818110611f82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611f9791906148b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b6006600089898581811061201d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061203291906148b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120be91906148b7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612145577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161215991906151e4565b60405180910390a3808061216c9061551b565b915050611ef7565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121ce6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290615164565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b61235b6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123df90615164565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124b4906154e9565b80601f01602080910402602001604051908101604052809291908181526020018280546124e0906154e9565b801561252d5780601f106125025761010080835404028352916020019161252d565b820191906000526020600020905b81548152906001019060200180831161251057829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061262061256a6133bd565b8461261b856040518060600160405280602581526020016159e160259139600760006125946133bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b6133c5565b6001905092915050565b6126326133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b690615164565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b60006126f06126e96133bd565b8484613590565b506001905092915050565b6127036133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790615164565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fcc565b60405180910390a150565b600d5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b61283e6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290615164565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129bd6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4190615164565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a7090614ece565b60006040518083038185875af1925050503d8060008114612aad576040519150601f19603f3d011682016040523d82523d6000602084013e612ab2565b606091505b5050905080612ac057600080fd5b50565b612acb6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4f90615164565b60405180910390fd5b8060178190555050565b612b6a6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90615164565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612c1c6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca090615164565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612d126133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9690615164565b60405180910390fd5b8060188190555050565b612db16133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3590615164565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea590615084565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f736133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff790615164565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161303b929190614f42565b602060405180830381600087803b15801561305557600080fd5b505af1158015613069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308d9190614aaa565b505050565b60125481565b6130a06133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461312d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312490615164565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6131c96133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324d90615164565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156132ad576000905061330f565b600082846132bb919061538b565b90508284826132ca919061535a565b1461330a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330190615124565b60405180910390fd5b809150505b92915050565b600061335783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c71565b905092915050565b600080828461336e9190615304565b9050838110156133b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133aa906150c4565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342c906151c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349c906150a4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161358391906151e4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f8906151a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366890615044565b60405180910390fd5b601a60149054906101000a900460ff161561369857613691848484613cd4565b9050613bbc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561373c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137545750601a60189054906101000a900460ff165b1561379f5760175482111561379e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379590615104565b60405180910390fd5b5b60006137aa3061217d565b9050600060165482101590508080156137d05750601a60149054906101000a900460ff16155b80156138265750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561383e5750601a60159054906101000a900460ff165b1561386857601a60169054906101000a900460ff161561385e5760165491505b61386782613ea7565b5b6138f1846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139d75750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139eb576139e6878787614172565b6139ed565b845b9050601a60179054906101000a900460ff168015613a555750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613aba57601854613a7882613a6a8961217d565b61335f90919063ffffffff16565b1115613ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ab0906150e4565b60405180910390fd5b5b613b0c81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bac91906151e4565b60405180910390a3600193505050505b9392505050565b6000838311158290613c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c029190615002565b60405180910390fd5b5060008385613c1a91906153e5565b9050809150509392505050565b6000613c6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bc3565b905092915050565b60008083118290613cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613caf9190615002565b60405180910390fd5b5060008385613cc7919061535a565b9050809150509392505050565b6000613d5f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613df482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e9491906151e4565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613edb60145460135461335f90919063ffffffff16565b90506000613ef6600f54600c5461335f90919063ffffffff16565b90506000613f11601054600d5461335f90919063ffffffff16565b90506000613f4d6002613f3f86613f31878a61329a90919063ffffffff16565b61331590919063ffffffff16565b61331590919063ffffffff16565b90506000613f648287613c2790919063ffffffff16565b90506000479050613f7482614399565b6000613f898247613c2790919063ffffffff16565b90506000613fb3613fa460028961331590919063ffffffff16565b89613c2790919063ffffffff16565b90506000613fef6002613fe184613fd38c8861329a90919063ffffffff16565b61331590919063ffffffff16565b61331590919063ffffffff16565b905060006140188361400a8a8761329a90919063ffffffff16565b61331590919063ffffffff16565b90506000614041826140338588613c2790919063ffffffff16565b613c2790919063ffffffff16565b905060008211156140b657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505b600081111561412957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614127573d6000803e3d6000fd5b505b6000831180156141395750600088115b15614149576141488884614696565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141fa576141f360646141e56013548661329a90919063ffffffff16565b61331590919063ffffffff16565b9050614278565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142775761427460646142666014548661329a90919063ffffffff16565b61331590919063ffffffff16565b90505b5b600081111561437c576142d381600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161437391906151e4565b60405180910390a35b61438f8184613c2790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156143dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561440a5781602001602082028036833780820191505090505b5090503081600081518110614448577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156144ea57600080fd5b505afa1580156144fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452291906148e0565b8160018151811061455c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145c330601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133c5565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161462795949392919061522f565b600060405180830381600087803b15801561464157600080fd5b505af1158015614655573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161468a9291906151ff565b60405180910390a15050565b6146c330601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133c5565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161474c96959493929190614f6b565b6060604051808303818588803b15801561476557600080fd5b505af1158015614779573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061479e9190614b4b565b5050505050565b6000813590506147b481615973565b92915050565b6000815190506147c981615973565b92915050565b60008083601f8401126147e157600080fd5b8235905067ffffffffffffffff8111156147fa57600080fd5b60208301915083602082028301111561481257600080fd5b9250929050565b60008083601f84011261482b57600080fd5b8235905067ffffffffffffffff81111561484457600080fd5b60208301915083602082028301111561485c57600080fd5b9250929050565b6000813590506148728161598a565b92915050565b6000815190506148878161598a565b92915050565b60008135905061489c816159a1565b92915050565b6000815190506148b1816159a1565b92915050565b6000602082840312156148c957600080fd5b60006148d7848285016147a5565b91505092915050565b6000602082840312156148f257600080fd5b6000614900848285016147ba565b91505092915050565b6000806040838503121561491c57600080fd5b600061492a858286016147a5565b925050602061493b858286016147a5565b9150509250929050565b60008060006060848603121561495a57600080fd5b6000614968868287016147a5565b9350506020614979868287016147a5565b925050604061498a8682870161488d565b9150509250925092565b600080604083850312156149a757600080fd5b60006149b5858286016147a5565b92505060206149c685828601614863565b9150509250929050565b600080604083850312156149e357600080fd5b60006149f1858286016147a5565b9250506020614a028582860161488d565b9150509250929050565b60008060008060408587031215614a2257600080fd5b600085013567ffffffffffffffff811115614a3c57600080fd5b614a48878288016147cf565b9450945050602085013567ffffffffffffffff811115614a6757600080fd5b614a7387828801614819565b925092505092959194509250565b600060208284031215614a9357600080fd5b6000614aa184828501614863565b91505092915050565b600060208284031215614abc57600080fd5b6000614aca84828501614878565b91505092915050565b600060208284031215614ae557600080fd5b6000614af38482850161488d565b91505092915050565b600080600060608486031215614b1157600080fd5b6000614b1f8682870161488d565b9350506020614b308682870161488d565b9250506040614b418682870161488d565b9150509250925092565b600080600060608486031215614b6057600080fd5b6000614b6e868287016148a2565b9350506020614b7f868287016148a2565b9250506040614b90868287016148a2565b9150509250925092565b6000614ba68383614bc1565b60208301905092915050565b614bbb8161542b565b82525050565b614bca81615419565b82525050565b614bd981615419565b82525050565b6000614bea826152b4565b614bf481856152d7565b9350614bff836152a4565b8060005b83811015614c30578151614c178882614b9a565b9750614c22836152ca565b925050600181019050614c03565b5085935050505092915050565b614c468161543d565b82525050565b614c5581615480565b82525050565b614c64816154a4565b82525050565b6000614c75826152bf565b614c7f81856152f3565b9350614c8f8185602086016154b6565b614c98816155f1565b840191505092915050565b6000614cb0601c836152f3565b9150614cbb82615602565b602082019050919050565b6000614cd36023836152f3565b9150614cde8261562b565b604082019050919050565b6000614cf6601b836152f3565b9150614d018261567a565b602082019050919050565b6000614d196026836152f3565b9150614d24826156a3565b604082019050919050565b6000614d3c6022836152f3565b9150614d47826156f2565b604082019050919050565b6000614d5f601b836152f3565b9150614d6a82615741565b602082019050919050565b6000614d826025836152f3565b9150614d8d8261576a565b604082019050919050565b6000614da56028836152f3565b9150614db0826157b9565b604082019050919050565b6000614dc86021836152f3565b9150614dd382615808565b604082019050919050565b6000614deb6016836152f3565b9150614df682615857565b602082019050919050565b6000614e0e6020836152f3565b9150614e1982615880565b602082019050919050565b6000614e31601d836152f3565b9150614e3c826158a9565b602082019050919050565b6000614e546025836152f3565b9150614e5f826158d2565b604082019050919050565b6000614e776000836152e8565b9150614e8282615921565b600082019050919050565b6000614e9a6024836152f3565b9150614ea582615924565b604082019050919050565b614eb981615469565b82525050565b614ec881615473565b82525050565b6000614ed982614e6a565b9150819050919050565b6000602082019050614ef86000830184614bd0565b92915050565b6000602082019050614f136000830184614bb2565b92915050565b6000604082019050614f2e6000830185614bd0565b614f3b6020830184614bd0565b9392505050565b6000604082019050614f576000830185614bd0565b614f646020830184614eb0565b9392505050565b600060c082019050614f806000830189614bd0565b614f8d6020830188614eb0565b614f9a6040830187614c5b565b614fa76060830186614c5b565b614fb46080830185614bd0565b614fc160a0830184614eb0565b979650505050505050565b6000602082019050614fe16000830184614c3d565b92915050565b6000602082019050614ffc6000830184614c4c565b92915050565b6000602082019050818103600083015261501c8184614c6a565b905092915050565b6000602082019050818103600083015261503d81614ca3565b9050919050565b6000602082019050818103600083015261505d81614cc6565b9050919050565b6000602082019050818103600083015261507d81614ce9565b9050919050565b6000602082019050818103600083015261509d81614d0c565b9050919050565b600060208201905081810360008301526150bd81614d2f565b9050919050565b600060208201905081810360008301526150dd81614d52565b9050919050565b600060208201905081810360008301526150fd81614d75565b9050919050565b6000602082019050818103600083015261511d81614d98565b9050919050565b6000602082019050818103600083015261513d81614dbb565b9050919050565b6000602082019050818103600083015261515d81614dde565b9050919050565b6000602082019050818103600083015261517d81614e01565b9050919050565b6000602082019050818103600083015261519d81614e24565b9050919050565b600060208201905081810360008301526151bd81614e47565b9050919050565b600060208201905081810360008301526151dd81614e8d565b9050919050565b60006020820190506151f96000830184614eb0565b92915050565b60006040820190506152146000830185614eb0565b81810360208301526152268184614bdf565b90509392505050565b600060a0820190506152446000830188614eb0565b6152516020830187614c5b565b81810360408301526152638186614bdf565b90506152726060830185614bd0565b61527f6080830184614eb0565b9695505050505050565b600060208201905061529e6000830184614ebf565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061530f82615469565b915061531a83615469565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561534f5761534e615564565b5b828201905092915050565b600061536582615469565b915061537083615469565b9250826153805761537f615593565b5b828204905092915050565b600061539682615469565b91506153a183615469565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153da576153d9615564565b5b828202905092915050565b60006153f082615469565b91506153fb83615469565b92508282101561540e5761540d615564565b5b828203905092915050565b600061542482615449565b9050919050565b600061543682615449565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061548b82615492565b9050919050565b600061549d82615449565b9050919050565b60006154af82615469565b9050919050565b60005b838110156154d45780820151818401526020810190506154b9565b838111156154e3576000848401525b50505050565b6000600282049050600182168061550157607f821691505b60208210811415615515576155146155c2565b5b50919050565b600061552682615469565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561555957615558615564565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61597c81615419565b811461598757600080fd5b50565b6159938161543d565b811461599e57600080fd5b50565b6159aa81615469565b81146159b557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203dafbba8cc7304816e83b6e9900aa7215799d1bd339a2f381cc2a6484d7aa8dc64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c806388790a68116101e7578063da00097d1161010d578063f1d5f517116100a0578063f84ba65d1161006f578063f84ba65d14610e09578063f872858a14610e32578063f8f6329014610e5d578063fb4b8e6c14610e88576103b8565b8063f1d5f51714610d63578063f2fde38b14610d8c578063f455444614610db5578063f680f79914610dde576103b8565b8063ec28438a116100dc578063ec28438a14610cbd578063ee828db314610ce6578063ef422a1814610d0f578063f0cd1dac14610d38576103b8565b8063da00097d14610c13578063dc44b6a014610c3e578063dd62ed3e14610c69578063e6b2603b14610ca6576103b8565b8063a9059cbb11610185578063c860795211610154578063c860795214610b57578063c867d60b14610b82578063c9c9afc514610bbf578063d2d7ad8314610be8576103b8565b8063a9059cbb14610a9b578063c49b9a8014610ad8578063c5d2418914610b01578063c816841b14610b2c576103b8565b806395d89b41116101c157806395d89b41146109df57806398e944c814610a0a578063a457c2d714610a35578063a5d69d1f14610a72576103b8565b806388790a681461094c5780638b42507f146109775780638da5cb5b146109b4576103b8565b80633b97084a116102d757806370a082311161026a578063807c2d9c11610239578063807c2d9c146108a257806382eefb43146108cd578063844d591c146108f85780638526148514610921576103b8565b806370a08231146107f8578063715018a61461083557806375f0a8741461084c5780637d1db4a514610877576103b8565b80635194f9bf116102a65780635194f9bf1461072a5780635342acb4146107555780635881f3ef1461079257806367243482146107cf576103b8565b80633b97084a146106705780633ecad271146106995780634a74bb02146106d65780634cb80fd514610701576103b8565b80632198cf6c1161034f57806327c8f8351161031e57806327c8f835146105b25780632b112e49146105dd578063313ce567146106085780633950935114610633576103b8565b80632198cf6c146104f857806323555d571461052157806323b872dd1461054c5780632563ae8314610589576103b8565b8063095ea7b31161038b578063095ea7b31461043c5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e85780630930907b14610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb1565b6040516103df9190615002565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614afc565b610f43565b005b34801561041d57600080fd5b50610426611076565b6040516104339190614ee3565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906149d0565b61109a565b6040516104709190614fcc565b60405180910390f35b34801561048557600080fd5b5061048e6110b8565b60405161049b9190614fe7565b60405180910390f35b3480156104b057600080fd5b506104b96110de565b6040516104c691906151e4565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614afc565b6110e8565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614994565b61121b565b005b34801561052d57600080fd5b5061053661130b565b60405161054391906151e4565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190614945565b611311565b6040516105809190614fcc565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190614a81565b6113eb565b005b3480156105be57600080fd5b506105c761149d565b6040516105d49190614ee3565b60405180910390f35b3480156105e957600080fd5b506105f26114c1565b6040516105ff91906151e4565b60405180910390f35b34801561061457600080fd5b5061061d61153f565b60405161062a9190615289565b60405180910390f35b34801561063f57600080fd5b5061065a600480360381019061065591906149d0565b611556565b6040516106679190614fcc565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190614ad3565b611609565b005b3480156106a557600080fd5b506106c060048036038101906106bb91906148b7565b6116a8565b6040516106cd9190614fcc565b60405180910390f35b3480156106e257600080fd5b506106eb6116c8565b6040516106f89190614fcc565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906148b7565b6116db565b005b34801561073657600080fd5b5061073f6117b4565b60405161074c91906151e4565b60405180910390f35b34801561076157600080fd5b5061077c600480360381019061077791906148b7565b6117ba565b6040516107899190614fcc565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b491906148b7565b6117da565b6040516107c69190614ee3565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190614a0c565b611cbe565b005b34801561080457600080fd5b5061081f600480360381019061081a91906148b7565b61217d565b60405161082c91906151e4565b60405180910390f35b34801561084157600080fd5b5061084a6121c6565b005b34801561085857600080fd5b5061086161231b565b60405161086e9190614efe565b60405180910390f35b34801561088357600080fd5b5061088c612341565b60405161089991906151e4565b60405180910390f35b3480156108ae57600080fd5b506108b7612347565b6040516108c491906151e4565b60405180910390f35b3480156108d957600080fd5b506108e261234d565b6040516108ef91906151e4565b60405180910390f35b34801561090457600080fd5b5061091f600480360381019061091a9190614994565b612353565b005b34801561092d57600080fd5b50610936612443565b6040516109439190614fcc565b60405180910390f35b34801561095857600080fd5b50610961612456565b60405161096e91906151e4565b60405180910390f35b34801561098357600080fd5b5061099e600480360381019061099991906148b7565b61245c565b6040516109ab9190614fcc565b60405180910390f35b3480156109c057600080fd5b506109c961247c565b6040516109d69190614ee3565b60405180910390f35b3480156109eb57600080fd5b506109f46124a5565b604051610a019190615002565b60405180910390f35b348015610a1657600080fd5b50610a1f612537565b604051610a2c9190614ee3565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a5791906149d0565b61255d565b604051610a699190614fcc565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614a81565b61262a565b005b348015610aa757600080fd5b50610ac26004803603810190610abd91906149d0565b6126dc565b604051610acf9190614fcc565b60405180910390f35b348015610ae457600080fd5b50610aff6004803603810190610afa9190614a81565b6126fb565b005b348015610b0d57600080fd5b50610b166127e4565b604051610b2391906151e4565b60405180910390f35b348015610b3857600080fd5b50610b416127ea565b604051610b4e9190614ee3565b60405180910390f35b348015610b6357600080fd5b50610b6c612810565b604051610b7991906151e4565b60405180910390f35b348015610b8e57600080fd5b50610ba96004803603810190610ba491906148b7565b612816565b604051610bb69190614fcc565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be191906148b7565b612836565b005b348015610bf457600080fd5b50610bfd61290f565b604051610c0a91906151e4565b60405180910390f35b348015610c1f57600080fd5b50610c28612915565b604051610c359190614fcc565b60405180910390f35b348015610c4a57600080fd5b50610c53612928565b604051610c6091906151e4565b60405180910390f35b348015610c7557600080fd5b50610c906004803603810190610c8b9190614909565b61292e565b604051610c9d91906151e4565b60405180910390f35b348015610cb257600080fd5b50610cbb6129b5565b005b348015610cc957600080fd5b50610ce46004803603810190610cdf9190614ad3565b612ac3565b005b348015610cf257600080fd5b50610d0d6004803603810190610d089190614a81565b612b62565b005b348015610d1b57600080fd5b50610d366004803603810190610d319190614994565b612c14565b005b348015610d4457600080fd5b50610d4d612d04565b604051610d5a91906151e4565b60405180910390f35b348015610d6f57600080fd5b50610d8a6004803603810190610d859190614ad3565b612d0a565b005b348015610d9857600080fd5b50610db36004803603810190610dae91906148b7565b612da9565b005b348015610dc157600080fd5b50610ddc6004803603810190610dd791906149d0565b612f6b565b005b348015610dea57600080fd5b50610df3613092565b604051610e0091906151e4565b60405180910390f35b348015610e1557600080fd5b50610e306004803603810190610e2b9190614994565b613098565b005b348015610e3e57600080fd5b50610e47613188565b604051610e549190614fcc565b60405180910390f35b348015610e6957600080fd5b50610e7261319b565b604051610e7f9190614efe565b60405180910390f35b348015610e9457600080fd5b50610eaf6004803603810190610eaa91906148b7565b6131c1565b005b606060018054610ec0906154e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610eec906154e9565b8015610f395780601f10610f0e57610100808354040283529160200191610f39565b820191906000526020600020905b815481529060010190602001808311610f1c57829003601f168201915b5050505050905090565b610f4b6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90615164565b60405180910390fd5b82600f81905550816010819055508060118190555061101860115461100a601054600f5461335f90919063ffffffff16565b61335f90919063ffffffff16565b601481905550601960125461102d919061535a565b6014541115611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890615184565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110ae6110a76133bd565b84846133c5565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b6110f06133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490615164565b60405180910390fd5b82600c8190555081600d8190555080600e819055506111bd600e546111af600d54600c5461335f90919063ffffffff16565b61335f90919063ffffffff16565b60138190555060196012546111d2919061535a565b6013541115611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90615024565b60405180910390fd5b505050565b6112236133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790615164565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600061131e848484613590565b506113e08461132b6133bd565b6113db856040518060600160405280602881526020016159b960289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113916133bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b6133c5565b600190509392505050565b6113f36133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790615164565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061153a6114ef7f000000000000000000000000000000000000000000000000000000000000000061217d565b61152c61151b7f000000000000000000000000000000000000000000000000000000000000dead61217d565b601554613c2790919063ffffffff16565b613c2790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006115ff6115636133bd565b846115fa85600760006115746133bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b6133c5565b6001905092915050565b6116116133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169590615164565b60405180910390fd5b8060168190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b601a60159054906101000a900460ff1681565b6116e36133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790615164565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60086020528060005260406000206000915054906101000a900460ff1681565b60006117e46133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890615164565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bc57600080fd5b505afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148e0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195657600080fd5b505afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e91906148e0565b6040518363ffffffff1660e01b81526004016119ab929190614f19565b60206040518083038186803b1580156119c357600080fd5b505afa1580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb91906148e0565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbc578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7857600080fd5b505afa158015611a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab091906148e0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1257600080fd5b505afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a91906148e0565b6040518363ffffffff1660e01b8152600401611b67929190614f19565b602060405180830381600087803b158015611b8157600080fd5b505af1158015611b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb991906148e0565b91505b81601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cc66133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90615164565b60405180910390fd5b6000339050828290508585905014611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9790615144565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611dfe9190615304565b91508080611e0b9061551b565b915050611da8565b5080611e1e8361217d565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690615064565b60405180910390fd5b611eb181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c2790919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561217457611fe0858583818110611f3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600660008a8a86818110611f82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611f9791906148b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b6006600089898581811061201d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061203291906148b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120be91906148b7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612145577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161215991906151e4565b60405180910390a3808061216c9061551b565b915050611ef7565b50505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121ce6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290615164565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b60185481565b60145481565b61235b6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123df90615164565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124b4906154e9565b80601f01602080910402602001604051908101604052809291908181526020018280546124e0906154e9565b801561252d5780601f106125025761010080835404028352916020019161252d565b820191906000526020600020905b81548152906001019060200180831161251057829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061262061256a6133bd565b8461261b856040518060600160405280602581526020016159e160259139600760006125946133bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b6133c5565b6001905092915050565b6126326133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b690615164565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b60006126f06126e96133bd565b8484613590565b506001905092915050565b6127036133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790615164565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fcc565b60405180910390a150565b600d5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b61283e6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290615164565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6129bd6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4190615164565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a7090614ece565b60006040518083038185875af1925050503d8060008114612aad576040519150601f19603f3d011682016040523d82523d6000602084013e612ab2565b606091505b5050905080612ac057600080fd5b50565b612acb6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4f90615164565b60405180910390fd5b8060178190555050565b612b6a6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90615164565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612c1c6133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca090615164565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612d126133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9690615164565b60405180910390fd5b8060188190555050565b612db16133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3590615164565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea590615084565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f736133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff790615164565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161303b929190614f42565b602060405180830381600087803b15801561305557600080fd5b505af1158015613069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308d9190614aaa565b505050565b60125481565b6130a06133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461312d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312490615164565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6131c96133bd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324d90615164565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156132ad576000905061330f565b600082846132bb919061538b565b90508284826132ca919061535a565b1461330a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330190615124565b60405180910390fd5b809150505b92915050565b600061335783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c71565b905092915050565b600080828461336e9190615304565b9050838110156133b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133aa906150c4565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342c906151c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349c906150a4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161358391906151e4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135f8906151a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366890615044565b60405180910390fd5b601a60149054906101000a900460ff161561369857613691848484613cd4565b9050613bbc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561373c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137545750601a60189054906101000a900460ff165b1561379f5760175482111561379e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379590615104565b60405180910390fd5b5b60006137aa3061217d565b9050600060165482101590508080156137d05750601a60149054906101000a900460ff16155b80156138265750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561383e5750601a60159054906101000a900460ff165b1561386857601a60169054906101000a900460ff161561385e5760165491505b61386782613ea7565b5b6138f1846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139d75750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6139eb576139e6878787614172565b6139ed565b845b9050601a60179054906101000a900460ff168015613a555750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613aba57601854613a7882613a6a8961217d565b61335f90919063ffffffff16565b1115613ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ab0906150e4565b60405180910390fd5b5b613b0c81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bac91906151e4565b60405180910390a3600193505050505b9392505050565b6000838311158290613c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c029190615002565b60405180910390fd5b5060008385613c1a91906153e5565b9050809150509392505050565b6000613c6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bc3565b905092915050565b60008083118290613cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613caf9190615002565b60405180910390fd5b5060008385613cc7919061535a565b9050809150509392505050565b6000613d5f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bc39092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613df482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e9491906151e4565b60405180910390a3600190509392505050565b6001601a60146101000a81548160ff0219169083151502179055506000613edb60145460135461335f90919063ffffffff16565b90506000613ef6600f54600c5461335f90919063ffffffff16565b90506000613f11601054600d5461335f90919063ffffffff16565b90506000613f4d6002613f3f86613f31878a61329a90919063ffffffff16565b61331590919063ffffffff16565b61331590919063ffffffff16565b90506000613f648287613c2790919063ffffffff16565b90506000479050613f7482614399565b6000613f898247613c2790919063ffffffff16565b90506000613fb3613fa460028961331590919063ffffffff16565b89613c2790919063ffffffff16565b90506000613fef6002613fe184613fd38c8861329a90919063ffffffff16565b61331590919063ffffffff16565b61331590919063ffffffff16565b905060006140188361400a8a8761329a90919063ffffffff16565b61331590919063ffffffff16565b90506000614041826140338588613c2790919063ffffffff16565b613c2790919063ffffffff16565b905060008211156140b657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505b600081111561412957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614127573d6000803e3d6000fd5b505b6000831180156141395750600088115b15614149576141488884614696565b5b50505050505050505050506000601a60146101000a81548160ff02191690831515021790555050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141fa576141f360646141e56013548661329a90919063ffffffff16565b61331590919063ffffffff16565b9050614278565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142775761427460646142666014548661329a90919063ffffffff16565b61331590919063ffffffff16565b90505b5b600081111561437c576142d381600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161437391906151e4565b60405180910390a35b61438f8184613c2790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156143dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561440a5781602001602082028036833780820191505090505b5090503081600081518110614448577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156144ea57600080fd5b505afa1580156144fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452291906148e0565b8160018151811061455c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145c330601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133c5565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161462795949392919061522f565b600060405180830381600087803b15801561464157600080fd5b505af1158015614655573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161468a9291906151ff565b60405180910390a15050565b6146c330601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846133c5565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161474c96959493929190614f6b565b6060604051808303818588803b15801561476557600080fd5b505af1158015614779573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061479e9190614b4b565b5050505050565b6000813590506147b481615973565b92915050565b6000815190506147c981615973565b92915050565b60008083601f8401126147e157600080fd5b8235905067ffffffffffffffff8111156147fa57600080fd5b60208301915083602082028301111561481257600080fd5b9250929050565b60008083601f84011261482b57600080fd5b8235905067ffffffffffffffff81111561484457600080fd5b60208301915083602082028301111561485c57600080fd5b9250929050565b6000813590506148728161598a565b92915050565b6000815190506148878161598a565b92915050565b60008135905061489c816159a1565b92915050565b6000815190506148b1816159a1565b92915050565b6000602082840312156148c957600080fd5b60006148d7848285016147a5565b91505092915050565b6000602082840312156148f257600080fd5b6000614900848285016147ba565b91505092915050565b6000806040838503121561491c57600080fd5b600061492a858286016147a5565b925050602061493b858286016147a5565b9150509250929050565b60008060006060848603121561495a57600080fd5b6000614968868287016147a5565b9350506020614979868287016147a5565b925050604061498a8682870161488d565b9150509250925092565b600080604083850312156149a757600080fd5b60006149b5858286016147a5565b92505060206149c685828601614863565b9150509250929050565b600080604083850312156149e357600080fd5b60006149f1858286016147a5565b9250506020614a028582860161488d565b9150509250929050565b60008060008060408587031215614a2257600080fd5b600085013567ffffffffffffffff811115614a3c57600080fd5b614a48878288016147cf565b9450945050602085013567ffffffffffffffff811115614a6757600080fd5b614a7387828801614819565b925092505092959194509250565b600060208284031215614a9357600080fd5b6000614aa184828501614863565b91505092915050565b600060208284031215614abc57600080fd5b6000614aca84828501614878565b91505092915050565b600060208284031215614ae557600080fd5b6000614af38482850161488d565b91505092915050565b600080600060608486031215614b1157600080fd5b6000614b1f8682870161488d565b9350506020614b308682870161488d565b9250506040614b418682870161488d565b9150509250925092565b600080600060608486031215614b6057600080fd5b6000614b6e868287016148a2565b9350506020614b7f868287016148a2565b9250506040614b90868287016148a2565b9150509250925092565b6000614ba68383614bc1565b60208301905092915050565b614bbb8161542b565b82525050565b614bca81615419565b82525050565b614bd981615419565b82525050565b6000614bea826152b4565b614bf481856152d7565b9350614bff836152a4565b8060005b83811015614c30578151614c178882614b9a565b9750614c22836152ca565b925050600181019050614c03565b5085935050505092915050565b614c468161543d565b82525050565b614c5581615480565b82525050565b614c64816154a4565b82525050565b6000614c75826152bf565b614c7f81856152f3565b9350614c8f8185602086016154b6565b614c98816155f1565b840191505092915050565b6000614cb0601c836152f3565b9150614cbb82615602565b602082019050919050565b6000614cd36023836152f3565b9150614cde8261562b565b604082019050919050565b6000614cf6601b836152f3565b9150614d018261567a565b602082019050919050565b6000614d196026836152f3565b9150614d24826156a3565b604082019050919050565b6000614d3c6022836152f3565b9150614d47826156f2565b604082019050919050565b6000614d5f601b836152f3565b9150614d6a82615741565b602082019050919050565b6000614d826025836152f3565b9150614d8d8261576a565b604082019050919050565b6000614da56028836152f3565b9150614db0826157b9565b604082019050919050565b6000614dc86021836152f3565b9150614dd382615808565b604082019050919050565b6000614deb6016836152f3565b9150614df682615857565b602082019050919050565b6000614e0e6020836152f3565b9150614e1982615880565b602082019050919050565b6000614e31601d836152f3565b9150614e3c826158a9565b602082019050919050565b6000614e546025836152f3565b9150614e5f826158d2565b604082019050919050565b6000614e776000836152e8565b9150614e8282615921565b600082019050919050565b6000614e9a6024836152f3565b9150614ea582615924565b604082019050919050565b614eb981615469565b82525050565b614ec881615473565b82525050565b6000614ed982614e6a565b9150819050919050565b6000602082019050614ef86000830184614bd0565b92915050565b6000602082019050614f136000830184614bb2565b92915050565b6000604082019050614f2e6000830185614bd0565b614f3b6020830184614bd0565b9392505050565b6000604082019050614f576000830185614bd0565b614f646020830184614eb0565b9392505050565b600060c082019050614f806000830189614bd0565b614f8d6020830188614eb0565b614f9a6040830187614c5b565b614fa76060830186614c5b565b614fb46080830185614bd0565b614fc160a0830184614eb0565b979650505050505050565b6000602082019050614fe16000830184614c3d565b92915050565b6000602082019050614ffc6000830184614c4c565b92915050565b6000602082019050818103600083015261501c8184614c6a565b905092915050565b6000602082019050818103600083015261503d81614ca3565b9050919050565b6000602082019050818103600083015261505d81614cc6565b9050919050565b6000602082019050818103600083015261507d81614ce9565b9050919050565b6000602082019050818103600083015261509d81614d0c565b9050919050565b600060208201905081810360008301526150bd81614d2f565b9050919050565b600060208201905081810360008301526150dd81614d52565b9050919050565b600060208201905081810360008301526150fd81614d75565b9050919050565b6000602082019050818103600083015261511d81614d98565b9050919050565b6000602082019050818103600083015261513d81614dbb565b9050919050565b6000602082019050818103600083015261515d81614dde565b9050919050565b6000602082019050818103600083015261517d81614e01565b9050919050565b6000602082019050818103600083015261519d81614e24565b9050919050565b600060208201905081810360008301526151bd81614e47565b9050919050565b600060208201905081810360008301526151dd81614e8d565b9050919050565b60006020820190506151f96000830184614eb0565b92915050565b60006040820190506152146000830185614eb0565b81810360208301526152268184614bdf565b90509392505050565b600060a0820190506152446000830188614eb0565b6152516020830187614c5b565b81810360408301526152638186614bdf565b90506152726060830185614bd0565b61527f6080830184614eb0565b9695505050505050565b600060208201905061529e6000830184614ebf565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061530f82615469565b915061531a83615469565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561534f5761534e615564565b5b828201905092915050565b600061536582615469565b915061537083615469565b9250826153805761537f615593565b5b828204905092915050565b600061539682615469565b91506153a183615469565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153da576153d9615564565b5b828202905092915050565b60006153f082615469565b91506153fb83615469565b92508282101561540e5761540d615564565b5b828203905092915050565b600061542482615449565b9050919050565b600061543682615449565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061548b82615492565b9050919050565b600061549d82615449565b9050919050565b60006154af82615469565b9050919050565b60005b838110156154d45780820151818401526020810190506154b9565b838111156154e3576000848401525b50505050565b6000600282049050600182168061550157607f821691505b60208210811415615515576155146155c2565b5b50919050565b600061552682615469565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561555957615558615564565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f4275792066656573206d75737420626520323525206f72206c65737300000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53656c6c2066656573206d75737420626520323525206f72206c657373000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61597c81615419565b811461598757600080fd5b50565b6159938161543d565b811461599e57600080fd5b50565b6159aa81615469565b81146159b557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203dafbba8cc7304816e83b6e9900aa7215799d1bd339a2f381cc2a6484d7aa8dc64736f6c63430008040033

Deployed Bytecode Sourcemap

11686:16800:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15732:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20900:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12229:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16898:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13404:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16009:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20497:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17831:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12807:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21588:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18208:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12141:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19309:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15918:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16395:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18439:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12503:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13519:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18571:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12941:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12446:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19741:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27778:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16117:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3363:230;;;;;;;;;;;;;:::i;:::-;;11898:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13258:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13330:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13063:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17412:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13662:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12855:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12666:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3138:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15823:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12096:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16621:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19172:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21413:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18993:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12765:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13452:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12898:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12607:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18711:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13169:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13566:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12723:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16244:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23953:154;;;;;;;;;;;;;:::i;:::-;;18089:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17974:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17549:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13024:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18329:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3601:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23806:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12986:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17692:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13620:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11997:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18853:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15732:83;15769:13;15802:5;15795:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15732:83;:::o;20900:405::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21022:10:::1;21002:17;:30;;;;21063:10;21043:17;:30;;;;21104:10;21084:17;:30;;;;21146:63;21191:17;;21146:40;21168:17;;21146;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;21125:18;:84;;;;21260:2;21251:8;;:11;;;;:::i;:::-;21228:18;;:35;;21220:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20900:405:::0;;;:::o;12229:81::-;;;:::o;16898:161::-;16973:4;16990:39;16999:12;:10;:12::i;:::-;17013:7;17022:6;16990:8;:39::i;:::-;17047:4;17040:11;;16898:161;;;;:::o;13404:41::-;;;;;;;;;;;;;:::o;16009:100::-;16062:7;16089:12;;16082:19;;16009:100;:::o;20497:395::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20617:10:::1;20598:16;:29;;;;20657:10;20638:16;:29;;;;20697:10;20678:16;:29;;;;20738:60;20781:16;;20738:38;20759:16;;20738;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20718:17;:80;;;;20848:2;20839:8;;:11;;;;:::i;:::-;20817:17;;:34;;20809:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;20497:395:::0;;;:::o;17831:135::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17952:6:::1;17922:19;:27;17942:6;17922:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17831:135:::0;;:::o;12807:35::-;;;;:::o;21588:313::-;21686:4;21703:36;21713:6;21721:9;21732:6;21703:9;:36::i;:::-;;21750:121;21759:6;21767:12;:10;:12::i;:::-;21781:89;21819:6;21781:89;;;;;;;;;;;;;;;;;:11;:19;21793:6;21781:19;;;;;;;;;;;;;;;:33;21801:12;:10;:12::i;:::-;21781:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21750:8;:121::i;:::-;21889:4;21882:11;;21588:313;;;;;:::o;18208:113::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18305:8:::1;18286:16;;:27;;;;;;;;;;;;;;;;;;18208:113:::0;:::o;12141:81::-;;;:::o;19309:156::-;19362:7;19389:68;19434:22;19444:11;19434:9;:22::i;:::-;19389:40;19406:22;19416:11;19406:9;:22::i;:::-;19389:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19382:75;;19309:156;:::o;15918:83::-;15959:5;15984:9;;;;;;;;;;;15977:16;;15918:83;:::o;16395:218::-;16483:4;16500:83;16509:12;:10;:12::i;:::-;16523:7;16532:50;16571:10;16532:11;:25;16544:12;:10;:12::i;:::-;16532:25;;;;;;;;;;;;;;;:34;16558:7;16532:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16500:8;:83::i;:::-;16601:4;16594:11;;16395:218;;;;:::o;18439:124::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18547:8:::1;18521:23;:34;;;;18439:124:::0;:::o;12503:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13519:40::-;;;;;;;;;;;;;:::o;18571:132::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18684:10:::1;18658:15;;:37;;;;;;;;;;;;;;;;;;18571:132:::0;:::o;12941:36::-;;;;:::o;12446:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19741:748::-;19821:22;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19858:35:::1;19915:16;19858:74;;19981:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19963:53;;;20025:4;20032:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19963:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19946:110;;20098:1;20072:28;;:14;:28;;;20069:225;;;20186:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20168:74;;;20251:4;20258:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20168:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20151:131;;20069:225;20320:14;20306:11;;:28;;;;;;;;;;;;;;;;;;20386:16;20368:15;;:34;;;;;;;;;;;;;;;;;;20477:4;20440:12;:34;20461:11;;;;;;;;;;;20440:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3342:1;19741:748:::0;;;:::o;27778:697::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27878:15:::1;27896:10;27878:28;;27944:7;;:14;;27925:8;;:15;;:33;27917:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27995:15;28025:6:::0;28034:1:::1;28025:10;;28021:92;28041:7;;:14;;28037:1;:18;28021:92;;;28091:7;;28099:1;28091:10;;;;;;;;;;;;;;;;;;;;;28077:24;;;;;:::i;:::-;;;28057:3;;;;;:::i;:::-;;;;28021:92;;;;28153:10;28131:18;28141:7;28131:9;:18::i;:::-;:32;;28123:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28226:34;28249:10;28226:9;:18;28236:7;28226:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;28205:9;:18;28215:7;28205:18;;;;;;;;;;;;;;;:55;;;;28276:6;28272:194;28292:8;;:15;;28288:1;:19;28272:194;;;28354:38;28381:7;;28389:1;28381:10;;;;;;;;;;;;;;;;;;;;;28354:9;:22;28364:8;;28373:1;28364:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28354:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28329:9;:22;28339:8;;28348:1;28339:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28329:22;;;;;;;;;;;;;;;:63;;;;28430:8;;28439:1;28430:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28412:42;;28421:7;28412:42;;;28443:7;;28451:1;28443:10;;;;;;;;;;;;;;;;;;;;;28412:42;;;;;;:::i;:::-;;;;;;;;28309:3;;;;;:::i;:::-;;;;28272:194;;;;3342:1;;27778:697:::0;;;;:::o;16117:119::-;16183:7;16210:9;:18;16220:7;16210:18;;;;;;;;;;;;;;;;16203:25;;16117:119;;;:::o;3363:230::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3470:42:::1;3433:81;;3454:6;::::0;::::1;;;;;;;;3433:81;;;;;;;;;;;;3542:42;3525:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3363:230::o:0;11898:92::-;;;;;;;;;;;;;:::o;13258:59::-;;;;:::o;13330:58::-;;;;:::o;13063:33::-;;;;:::o;17412:129::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17525:8:::1;17501:12;:21;17514:7;17501:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17412:129:::0;;:::o;13662:41::-;;;;;;;;;;;;;:::o;12855:36::-;;;;:::o;12666:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3138:79::-;3176:7;3203:6;;;;;;;;;;;3196:13;;3138:79;:::o;15823:87::-;15862:13;15895:7;15888:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15823:87;:::o;12096:32::-;;;;;;;;;;;;;:::o;16621:269::-;16714:4;16731:129;16740:12;:10;:12::i;:::-;16754:7;16763:96;16802:15;16763:96;;;;;;;;;;;;;;;;;:11;:25;16775:12;:10;:12::i;:::-;16763:25;;;;;;;;;;;;;;;:34;16789:7;16763:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16731:8;:129::i;:::-;16878:4;16871:11;;16621:269;;;;:::o;19172:125::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19281:8:::1;19253:25;;:36;;;;;;;;;;;;;;;;;;19172:125:::0;:::o;21413:167::-;21491:4;21508:42;21518:12;:10;:12::i;:::-;21532:9;21543:6;21508:9;:42::i;:::-;;21568:4;21561:11;;21413:167;;;;:::o;18993:171::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19094:8:::1;19070:21;;:32;;;;;;;;;;;;;;;;;;19118:38;19147:8;19118:38;;;;;;:::i;:::-;;;;;;;;18993:171:::0;:::o;12765:35::-;;;;:::o;13452:26::-;;;;;;;;;;;;;:::o;12898:36::-;;;;:::o;12607:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18711:134::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18826:10:::1;18798:17;;:39;;;;;;;;;;;;;;;;;;18711:134:::0;:::o;13169:69::-;;;;:::o;13566:45::-;;;;;;;;;;;;;:::o;12723:35::-;;;;:::o;16244:143::-;16325:7;16352:11;:18;16364:5;16352:18;;;;;;;;;;;;;;;:27;16371:7;16352:27;;;;;;;;;;;;;;;;16345:34;;16244:143;;;;:::o;23953:154::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24007:7:::1;24027:10;24019:24;;24051:21;24019:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24006:71;;;24096:2;24088:11;;;::::0;::::1;;3342:1;23953:154::o:0;18089:111::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18181:11:::1;18166:12;:26;;;;18089:111:::0;:::o;17974:107::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18066:7:::1;18041:22;;:32;;;;;;;;;;;;;;;;;;17974:107:::0;:::o;17549:135::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17668:8:::1;17639:17;:26;17657:7;17639:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17549:135:::0;;:::o;13024:32::-;;;;:::o;18329:102::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18415:8:::1;18401:10;:22;;;;18329:102:::0;:::o;3601:244::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3710:1:::1;3690:22;;:8;:22;;;;3682:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3800:8;3771:38;;3792:6;::::0;::::1;;;;;;;;3771:38;;;;;;;;;;;;3829:8;3820:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3601:244:::0;:::o;23806:139::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23901:6:::1;23894:23;;;23918:10;23929:7;23894:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23806:139:::0;;:::o;12986:29::-;;;;:::o;17692:127::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17805:6:::1;17779:15;:23;17795:6;17779:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17692:127:::0;;:::o;13620:35::-;;;;;;;;;;;;;:::o;11997:92::-;;;;;;;;;;;;;:::o;18853:132::-;3282:12;:10;:12::i;:::-;3272:22;;:6;;;;;;;;;;:22;;;3264:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18966:10:::1;18940:15;;:37;;;;;;;;;;;;;;;;;;18853:132:::0;:::o;1823:250::-;1881:7;1910:1;1905;:6;1901:47;;;1935:1;1928:8;;;;1901:47;1960:9;1976:1;1972;:5;;;;:::i;:::-;1960:17;;2005:1;2000;1996;:5;;;;:::i;:::-;:10;1988:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2064:1;2057:8;;;1823:250;;;;;:::o;2081:132::-;2139:7;2166:39;2170:1;2173;2166:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2159:46;;2081:132;;;;:::o;1290:181::-;1348:7;1368:9;1384:1;1380;:5;;;;:::i;:::-;1368:17;;1409:1;1404;:6;;1396:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1462:1;1455:8;;;1290:181;;;;:::o;348:115::-;401:15;444:10;429:26;;348:115;:::o;17067:337::-;17177:1;17160:19;;:5;:19;;;;17152:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17258:1;17239:21;;:7;:21;;;;17231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17342:6;17312:11;:18;17324:5;17312:18;;;;;;;;;;;;;;;:27;17331:7;17312:27;;;;;;;;;;;;;;;:36;;;;17380:7;17364:32;;17373:5;17364:32;;;17389:6;17364:32;;;;;;:::i;:::-;;;;;;;;17067:337;;;:::o;21909:1889::-;21996:4;22041:1;22023:20;;:6;:20;;;;22015:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22125:1;22104:23;;:9;:23;;;;22096:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22282:16;;;;;;;;;;;22279:1502;;;22332:41;22347:6;22355:9;22366:6;22332:14;:41::i;:::-;22325:48;;;;22279:1502;22431:15;:23;22447:6;22431:23;;;;;;;;;;;;;;;;;;;;;;;;;22430:24;:55;;;;;22459:15;:26;22475:9;22459:26;;;;;;;;;;;;;;;;;;;;;;;;;22458:27;22430:55;:81;;;;;22489:22;;;;;;;;;;;22430:81;22427:196;;;22550:12;;22540:6;:22;;22532:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;22427:196;22639:28;22670:24;22688:4;22670:9;:24::i;:::-;22639:55;;22709:28;22764:23;;22740:20;:47;;22709:78;;22820:23;:44;;;;;22848:16;;;;;;;;;;;22847:17;22820:44;:69;;;;;22869:12;:20;22882:6;22869:20;;;;;;;;;;;;;;;;;;;;;;;;;22868:21;22820:69;:94;;;;;22893:21;;;;;;;;;;;22820:94;22816:305;;;22952:25;;;;;;;;;;;22949:97;;;23023:23;;23000:46;;22949:97;23065:36;23080:20;23065:14;:36::i;:::-;22816:305;23157:53;23179:6;23157:53;;;;;;;;;;;;;;;;;:9;:17;23167:6;23157:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23137:9;:17;23147:6;23137:17;;;;;;;;;;;;;;;:73;;;;23227:19;23250:17;:25;23268:6;23250:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;23279:17;:28;23297:9;23279:28;;;;;;;;;;;;;;;;;;;;;;;;;23250:57;23249:148;;23363:34;23371:6;23379:9;23390:6;23363:7;:34::i;:::-;23249:148;;;23354:6;23249:148;23227:170;;23417:16;;;;;;;;;;;:51;;;;;23438:19;:30;23458:9;23438:30;;;;;;;;;;;;;;;;;;;;;;;;;23437:31;23417:51;23414:191;;;23538:10;;23497:37;23522:11;23497:20;23507:9;23497;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;23489:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;23414:191;23644:37;23669:11;23644:9;:20;23654:9;23644:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23621:9;:20;23631:9;23621:20;;;;;;;;;;;;;;;:60;;;;23720:9;23703:40;;23712:6;23703:40;;;23731:11;23703:40;;;;;;:::i;:::-;;;;;;;;23765:4;23758:11;;;;;21909:1889;;;;;;:::o;1623:192::-;1709:7;1742:1;1737;:6;;1745:12;1729:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1769:9;1785:1;1781;:5;;;;:::i;:::-;1769:17;;1806:1;1799:8;;;1623:192;;;;;:::o;1479:136::-;1537:7;1564:43;1568:1;1571;1564:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1557:50;;1479:136;;;;:::o;2221:278::-;2307:7;2339:1;2335;:5;2342:12;2327:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2366:9;2382:1;2378;:5;;;;:::i;:::-;2366:17;;2490:1;2483:8;;;2221:278;;;;;:::o;24115:330::-;24208:4;24245:53;24267:6;24245:53;;;;;;;;;;;;;;;;;:9;:17;24255:6;24245:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24225:9;:17;24235:6;24225:17;;;;;;;;;;;;;;;:73;;;;24332:32;24357:6;24332:9;:20;24342:9;24332:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24309:9;:20;24319:9;24309:20;;;;;;;;;;;;;;;:55;;;;24397:9;24380:35;;24389:6;24380:35;;;24408:6;24380:35;;;;;;:::i;:::-;;;;;;;;24433:4;24426:11;;24115:330;;;;;:::o;24453:1449::-;14147:4;14128:16;;:23;;;;;;;;;;;;;;;;;;24527:19:::1;24549:41;24571:18;;24549:17;;:21;;:41;;;;:::i;:::-;24527:63;;24603:22;24628:39;24649:17;;24628:16;;:20;;:39;;;;:::i;:::-;24603:64;;24678:22;24703:39;24724:17;;24703:16;;:20;;:39;;;;:::i;:::-;24678:64;;24841:18;24862:51;24911:1;24862:44;24894:11;24862:27;24874:14;24862:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24841:72;;24924:20;24947:23;24959:10;24947:7;:11;;:23;;;;:::i;:::-;24924:46;;24983:22;25009:21;24983:47;;25041:30;25058:12;25041:16;:30::i;:::-;25082:23;25109:41;25135:14;25109:21;:25;;:41;;;;:::i;:::-;25082:68;;25163:19;25185:38;25201:21;25220:1;25201:14;:18;;:21;;;;:::i;:::-;25185:11;:15;;:38;;;;:::i;:::-;25163:60;;25236:26;25265:59;25322:1;25265:52;25305:11;25265:35;25285:14;25265:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;25236:88;;25335:26;25364:52;25404:11;25364:35;25384:14;25364:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;25335:81;;25427:26;25456:63;25500:18;25456:39;25476:18;25456:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;25427:92;;25556:1;25535:18;:22;25532:107;;;25582:15;;;;;;;;;;;25574:33;;:53;25608:18;25574:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25532:107;25675:1;25654:18;:22;25651:107;;;25701:15;;;;;;;;;;;25693:33;;:53;25727:18;25693:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25651:107;25803:1;25782:18;:22;:40;;;;;25821:1;25808:10;:14;25782:40;25779:116;;;25839:44;25852:10;25864:18;25839:12;:44::i;:::-;25779:116;14162:1;;;;;;;;;;;14193:5:::0;14174:16;;:24;;;;;;;;;;;;;;;;;;24453:1449;:::o;27119:622::-;27205:7;27235:17;27255:1;27235:21;;27280:12;:20;27293:6;27280:20;;;;;;;;;;;;;;;;;;;;;;;;;27277:223;;;27329:38;27363:3;27329:29;27340:17;;27329:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;27317:50;;27277:223;;;27397:12;:23;27410:9;27397:23;;;;;;;;;;;;;;;;;;;;;;;;;27394:106;;;27449:39;27484:3;27449:30;27460:18;;27449:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27437:51;;27394:106;27277:223;27535:1;27523:9;:13;27520:173;;;27580:39;27609:9;27580;:24;27598:4;27580:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27553:9;:24;27571:4;27553:24;;;;;;;;;;;;;;;:66;;;;27664:4;27639:42;;27648:6;27639:42;;;27671:9;27639:42;;;;;;:::i;:::-;;;;;;;;27520:173;27712:21;27723:9;27712:6;:10;;:21;;;;:::i;:::-;27705:28;;;27119:622;;;;;:::o;25914:666::-;26040:21;26078:1;26064:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26040:40;;26109:4;26091;26096:1;26091:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26135:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26125:4;26130:1;26125:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;26170:62;26187:4;26202:15;;;;;;;;;;;26220:11;26170:8;:62::i;:::-;26271:15;;;;;;;;;;;:66;;;26352:11;26378:1;26422:4;26449;26485:15;26271:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26537:35;26554:11;26567:4;26537:35;;;;;;;:::i;:::-;;;;;;;;25914:666;;:::o;26588:523::-;26736:62;26753:4;26768:15;;;;;;;;;;;26786:11;26736:8;:62::i;:::-;26841:15;;;;;;;;;;;:31;;;26880:9;26913:4;26933:11;26959:1;27002;27045:17;;;;;;;;;;;27077:15;26841:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26588:523;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;708:367::-;781:8;791:6;841:3;834:4;826:6;822:17;818:27;808:2;;859:1;856;849:12;808:2;895:6;882:20;872:30;;925:18;917:6;914:30;911:2;;;957:1;954;947:12;911:2;994:4;986:6;982:17;970:29;;1048:3;1040:4;1032:6;1028:17;1018:8;1014:32;1011:41;1008:2;;;1065:1;1062;1055:12;1008:2;798:277;;;;;:::o;1081:133::-;1124:5;1162:6;1149:20;1140:29;;1178:30;1202:5;1178:30;:::i;:::-;1130:84;;;;:::o;1220:137::-;1274:5;1305:6;1299:13;1290:22;;1321:30;1345:5;1321:30;:::i;:::-;1280:77;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1657:262::-;1716:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:2;;;1781:1;1778;1771:12;1733:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1723:196;;;;:::o;1925:284::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2060:1;2057;2050:12;2012:2;2103:1;2128:64;2184:7;2175:6;2164:9;2160:22;2128:64;:::i;:::-;2118:74;;2074:128;2002:207;;;;:::o;2215:407::-;2283:6;2291;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2526:2;2552:53;2597:7;2588:6;2577:9;2573:22;2552:53;:::i;:::-;2542:63;;2497:118;2298:324;;;;;:::o;2628:552::-;2705:6;2713;2721;2770:2;2758:9;2749:7;2745:23;2741:32;2738:2;;;2786:1;2783;2776:12;2738:2;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2728:452;;;;;:::o;3186:401::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:2;;;3324:1;3321;3314:12;3276:2;3367:1;3392:53;3437:7;3428:6;3417:9;3413:22;3392:53;:::i;:::-;3382:63;;3338:117;3494:2;3520:50;3562:7;3553:6;3542:9;3538:22;3520:50;:::i;:::-;3510:60;;3465:115;3266:321;;;;;:::o;3593:407::-;3661:6;3669;3718:2;3706:9;3697:7;3693:23;3689:32;3686:2;;;3734:1;3731;3724:12;3686:2;3777:1;3802:53;3847:7;3838:6;3827:9;3823:22;3802:53;:::i;:::-;3792:63;;3748:117;3904:2;3930:53;3975:7;3966:6;3955:9;3951:22;3930:53;:::i;:::-;3920:63;;3875:118;3676:324;;;;;:::o;4006:733::-;4128:6;4136;4144;4152;4201:2;4189:9;4180:7;4176:23;4172:32;4169:2;;;4217:1;4214;4207:12;4169:2;4288:1;4277:9;4273:17;4260:31;4318:18;4310:6;4307:30;4304:2;;;4350:1;4347;4340:12;4304:2;4386:80;4458:7;4449:6;4438:9;4434:22;4386:80;:::i;:::-;4368:98;;;;4231:245;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4642:80;4714:7;4705:6;4694:9;4690:22;4642:80;:::i;:::-;4624:98;;;;4486:246;4159:580;;;;;;;:::o;4745:256::-;4801:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:2;;;4866:1;4863;4856:12;4818:2;4909:1;4934:50;4976:7;4967:6;4956:9;4952:22;4934:50;:::i;:::-;4924:60;;4880:114;4808:193;;;;:::o;5007:278::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;5139:1;5136;5129:12;5091:2;5182:1;5207:61;5260:7;5251:6;5240:9;5236:22;5207:61;:::i;:::-;5197:71;;5153:125;5081:204;;;;:::o;5291:262::-;5350:6;5399:2;5387:9;5378:7;5374:23;5370:32;5367:2;;;5415:1;5412;5405:12;5367:2;5458:1;5483:53;5528:7;5519:6;5508:9;5504:22;5483:53;:::i;:::-;5473:63;;5429:117;5357:196;;;;:::o;5559:552::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:2;;;5717:1;5714;5707:12;5669:2;5760:1;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5731:117;5887:2;5913:53;5958:7;5949:6;5938:9;5934:22;5913:53;:::i;:::-;5903:63;;5858:118;6015:2;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5986:118;5659:452;;;;;:::o;6117:596::-;6205:6;6213;6221;6270:2;6258:9;6249:7;6245:23;6241:32;6238:2;;;6286:1;6283;6276:12;6238:2;6329:1;6354:64;6410:7;6401:6;6390:9;6386:22;6354:64;:::i;:::-;6344:74;;6300:128;6467:2;6493:64;6549:7;6540:6;6529:9;6525:22;6493:64;:::i;:::-;6483:74;;6438:129;6606:2;6632:64;6688:7;6679:6;6668:9;6664:22;6632:64;:::i;:::-;6622:74;;6577:129;6228:485;;;;;:::o;6719:179::-;6788:10;6809:46;6851:3;6843:6;6809:46;:::i;:::-;6887:4;6882:3;6878:14;6864:28;;6799:99;;;;:::o;6904:142::-;7007:32;7033:5;7007:32;:::i;:::-;7002:3;6995:45;6985:61;;:::o;7052:108::-;7129:24;7147:5;7129:24;:::i;:::-;7124:3;7117:37;7107:53;;:::o;7166:118::-;7253:24;7271:5;7253:24;:::i;:::-;7248:3;7241:37;7231:53;;:::o;7320:732::-;7439:3;7468:54;7516:5;7468:54;:::i;:::-;7538:86;7617:6;7612:3;7538:86;:::i;:::-;7531:93;;7648:56;7698:5;7648:56;:::i;:::-;7727:7;7758:1;7743:284;7768:6;7765:1;7762:13;7743:284;;;7844:6;7838:13;7871:63;7930:3;7915:13;7871:63;:::i;:::-;7864:70;;7957:60;8010:6;7957:60;:::i;:::-;7947:70;;7803:224;7790:1;7787;7783:9;7778:14;;7743:284;;;7747:14;8043:3;8036:10;;7444:608;;;;;;;:::o;8058:109::-;8139:21;8154:5;8139:21;:::i;:::-;8134:3;8127:34;8117:50;;:::o;8173:185::-;8287:64;8345:5;8287:64;:::i;:::-;8282:3;8275:77;8265:93;;:::o;8364:147::-;8459:45;8498:5;8459:45;:::i;:::-;8454:3;8447:58;8437:74;;:::o;8517:364::-;8605:3;8633:39;8666:5;8633:39;:::i;:::-;8688:71;8752:6;8747:3;8688:71;:::i;:::-;8681:78;;8768:52;8813:6;8808:3;8801:4;8794:5;8790:16;8768:52;:::i;:::-;8845:29;8867:6;8845:29;:::i;:::-;8840:3;8836:39;8829:46;;8609:272;;;;;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;9033:220;;;:::o;9259:366::-;9401:3;9422:67;9486:2;9481:3;9422:67;:::i;:::-;9415:74;;9498:93;9587:3;9498:93;:::i;:::-;9616:2;9611:3;9607:12;9600:19;;9405:220;;;:::o;9631:366::-;9773:3;9794:67;9858:2;9853:3;9794:67;:::i;:::-;9787:74;;9870:93;9959:3;9870:93;:::i;:::-;9988:2;9983:3;9979:12;9972:19;;9777:220;;;:::o;10003:366::-;10145:3;10166:67;10230:2;10225:3;10166:67;:::i;:::-;10159:74;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10149:220;;;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10521:220;;;:::o;10747:366::-;10889:3;10910:67;10974:2;10969:3;10910:67;:::i;:::-;10903:74;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10893:220;;;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11265:220;;;:::o;11491:366::-;11633:3;11654:67;11718:2;11713:3;11654:67;:::i;:::-;11647:74;;11730:93;11819:3;11730:93;:::i;:::-;11848:2;11843:3;11839:12;11832:19;;11637:220;;;:::o;11863:366::-;12005:3;12026:67;12090:2;12085:3;12026:67;:::i;:::-;12019:74;;12102:93;12191:3;12102:93;:::i;:::-;12220:2;12215:3;12211:12;12204:19;;12009:220;;;:::o;12235:366::-;12377:3;12398:67;12462:2;12457:3;12398:67;:::i;:::-;12391:74;;12474:93;12563:3;12474:93;:::i;:::-;12592:2;12587:3;12583:12;12576:19;;12381:220;;;:::o;12607:366::-;12749:3;12770:67;12834:2;12829:3;12770:67;:::i;:::-;12763:74;;12846:93;12935:3;12846:93;:::i;:::-;12964:2;12959:3;12955:12;12948:19;;12753:220;;;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;13125:220;;;:::o;13351:366::-;13493:3;13514:67;13578:2;13573:3;13514:67;:::i;:::-;13507:74;;13590:93;13679:3;13590:93;:::i;:::-;13708:2;13703:3;13699:12;13692:19;;13497:220;;;:::o;13723:398::-;13882:3;13903:83;13984:1;13979:3;13903:83;:::i;:::-;13896:90;;13995:93;14084:3;13995:93;:::i;:::-;14113:1;14108:3;14104:11;14097:18;;13886:235;;;:::o;14127:366::-;14269:3;14290:67;14354:2;14349:3;14290:67;:::i;:::-;14283:74;;14366:93;14455:3;14366:93;:::i;:::-;14484:2;14479:3;14475:12;14468:19;;14273:220;;;:::o;14499:118::-;14586:24;14604:5;14586:24;:::i;:::-;14581:3;14574:37;14564:53;;:::o;14623:112::-;14706:22;14722:5;14706:22;:::i;:::-;14701:3;14694:35;14684:51;;:::o;14741:379::-;14925:3;14947:147;15090:3;14947:147;:::i;:::-;14940:154;;15111:3;15104:10;;14929:191;;;:::o;15126:222::-;15219:4;15257:2;15246:9;15242:18;15234:26;;15270:71;15338:1;15327:9;15323:17;15314:6;15270:71;:::i;:::-;15224:124;;;;:::o;15354:254::-;15463:4;15501:2;15490:9;15486:18;15478:26;;15514:87;15598:1;15587:9;15583:17;15574:6;15514:87;:::i;:::-;15468:140;;;;:::o;15614:332::-;15735:4;15773:2;15762:9;15758:18;15750:26;;15786:71;15854:1;15843:9;15839:17;15830:6;15786:71;:::i;:::-;15867:72;15935:2;15924:9;15920:18;15911:6;15867:72;:::i;:::-;15740:206;;;;;:::o;15952:332::-;16073:4;16111:2;16100:9;16096:18;16088:26;;16124:71;16192:1;16181:9;16177:17;16168:6;16124:71;:::i;:::-;16205:72;16273:2;16262:9;16258:18;16249:6;16205:72;:::i;:::-;16078:206;;;;;:::o;16290:807::-;16539:4;16577:3;16566:9;16562:19;16554:27;;16591:71;16659:1;16648:9;16644:17;16635:6;16591:71;:::i;:::-;16672:72;16740:2;16729:9;16725:18;16716:6;16672:72;:::i;:::-;16754:80;16830:2;16819:9;16815:18;16806:6;16754:80;:::i;:::-;16844;16920:2;16909:9;16905:18;16896:6;16844:80;:::i;:::-;16934:73;17002:3;16991:9;16987:19;16978:6;16934:73;:::i;:::-;17017;17085:3;17074:9;17070:19;17061:6;17017:73;:::i;:::-;16544:553;;;;;;;;;:::o;17103:210::-;17190:4;17228:2;17217:9;17213:18;17205:26;;17241:65;17303:1;17292:9;17288:17;17279:6;17241:65;:::i;:::-;17195:118;;;;:::o;17319:276::-;17439:4;17477:2;17466:9;17462:18;17454:26;;17490:98;17585:1;17574:9;17570:17;17561:6;17490:98;:::i;:::-;17444:151;;;;:::o;17601:313::-;17714:4;17752:2;17741:9;17737:18;17729:26;;17801:9;17795:4;17791:20;17787:1;17776:9;17772:17;17765:47;17829:78;17902:4;17893:6;17829:78;:::i;:::-;17821:86;;17719:195;;;;:::o;17920:419::-;18086:4;18124:2;18113:9;18109:18;18101:26;;18173:9;18167:4;18163:20;18159:1;18148:9;18144:17;18137:47;18201:131;18327:4;18201:131;:::i;:::-;18193:139;;18091:248;;;:::o;18345:419::-;18511:4;18549:2;18538:9;18534:18;18526:26;;18598:9;18592:4;18588:20;18584:1;18573:9;18569:17;18562:47;18626:131;18752:4;18626:131;:::i;:::-;18618:139;;18516:248;;;:::o;18770:419::-;18936:4;18974:2;18963:9;18959:18;18951:26;;19023:9;19017:4;19013:20;19009:1;18998:9;18994:17;18987:47;19051:131;19177:4;19051:131;:::i;:::-;19043:139;;18941:248;;;:::o;19195:419::-;19361:4;19399:2;19388:9;19384:18;19376:26;;19448:9;19442:4;19438:20;19434:1;19423:9;19419:17;19412:47;19476:131;19602:4;19476:131;:::i;:::-;19468:139;;19366:248;;;:::o;19620:419::-;19786:4;19824:2;19813:9;19809:18;19801:26;;19873:9;19867:4;19863:20;19859:1;19848:9;19844:17;19837:47;19901:131;20027:4;19901:131;:::i;:::-;19893:139;;19791:248;;;:::o;20045:419::-;20211:4;20249:2;20238:9;20234:18;20226:26;;20298:9;20292:4;20288:20;20284:1;20273:9;20269:17;20262:47;20326:131;20452:4;20326:131;:::i;:::-;20318:139;;20216:248;;;:::o;20470:419::-;20636:4;20674:2;20663:9;20659:18;20651:26;;20723:9;20717:4;20713:20;20709:1;20698:9;20694:17;20687:47;20751:131;20877:4;20751:131;:::i;:::-;20743:139;;20641:248;;;:::o;20895:419::-;21061:4;21099:2;21088:9;21084:18;21076:26;;21148:9;21142:4;21138:20;21134:1;21123:9;21119:17;21112:47;21176:131;21302:4;21176:131;:::i;:::-;21168:139;;21066:248;;;:::o;21320:419::-;21486:4;21524:2;21513:9;21509:18;21501:26;;21573:9;21567:4;21563:20;21559:1;21548:9;21544:17;21537:47;21601:131;21727:4;21601:131;:::i;:::-;21593:139;;21491:248;;;:::o;21745:419::-;21911:4;21949:2;21938:9;21934:18;21926:26;;21998:9;21992:4;21988:20;21984:1;21973:9;21969:17;21962:47;22026:131;22152:4;22026:131;:::i;:::-;22018:139;;21916:248;;;:::o;22170:419::-;22336:4;22374:2;22363:9;22359:18;22351:26;;22423:9;22417:4;22413:20;22409:1;22398:9;22394:17;22387:47;22451:131;22577:4;22451:131;:::i;:::-;22443:139;;22341:248;;;:::o;22595:419::-;22761:4;22799:2;22788:9;22784:18;22776:26;;22848:9;22842:4;22838:20;22834:1;22823:9;22819:17;22812:47;22876:131;23002:4;22876:131;:::i;:::-;22868:139;;22766:248;;;:::o;23020:419::-;23186:4;23224:2;23213:9;23209:18;23201:26;;23273:9;23267:4;23263:20;23259:1;23248:9;23244:17;23237:47;23301:131;23427:4;23301:131;:::i;:::-;23293:139;;23191:248;;;:::o;23445:419::-;23611:4;23649:2;23638:9;23634:18;23626:26;;23698:9;23692:4;23688:20;23684:1;23673:9;23669:17;23662:47;23726:131;23852:4;23726:131;:::i;:::-;23718:139;;23616:248;;;:::o;23870:222::-;23963:4;24001:2;23990:9;23986:18;23978:26;;24014:71;24082:1;24071:9;24067:17;24058:6;24014:71;:::i;:::-;23968:124;;;;:::o;24098:483::-;24269:4;24307:2;24296:9;24292:18;24284:26;;24320:71;24388:1;24377:9;24373:17;24364:6;24320:71;:::i;:::-;24438:9;24432:4;24428:20;24423:2;24412:9;24408:18;24401:48;24466:108;24569:4;24560:6;24466:108;:::i;:::-;24458:116;;24274:307;;;;;:::o;24587:831::-;24850:4;24888:3;24877:9;24873:19;24865:27;;24902:71;24970:1;24959:9;24955:17;24946:6;24902:71;:::i;:::-;24983:80;25059:2;25048:9;25044:18;25035:6;24983:80;:::i;:::-;25110:9;25104:4;25100:20;25095:2;25084:9;25080:18;25073:48;25138:108;25241:4;25232:6;25138:108;:::i;:::-;25130:116;;25256:72;25324:2;25313:9;25309:18;25300:6;25256:72;:::i;:::-;25338:73;25406:3;25395:9;25391:19;25382:6;25338:73;:::i;:::-;24855:563;;;;;;;;:::o;25424:214::-;25513:4;25551:2;25540:9;25536:18;25528:26;;25564:67;25628:1;25617:9;25613:17;25604:6;25564:67;:::i;:::-;25518:120;;;;:::o;25644:132::-;25711:4;25734:3;25726:11;;25764:4;25759:3;25755:14;25747:22;;25716:60;;;:::o;25782:114::-;25849:6;25883:5;25877:12;25867:22;;25856:40;;;:::o;25902:99::-;25954:6;25988:5;25982:12;25972:22;;25961:40;;;:::o;26007:113::-;26077:4;26109;26104:3;26100:14;26092:22;;26082:38;;;:::o;26126:184::-;26225:11;26259:6;26254:3;26247:19;26299:4;26294:3;26290:14;26275:29;;26237:73;;;;:::o;26316:147::-;26417:11;26454:3;26439:18;;26429:34;;;;:::o;26469:169::-;26553:11;26587:6;26582:3;26575:19;26627:4;26622:3;26618:14;26603:29;;26565:73;;;;:::o;26644:305::-;26684:3;26703:20;26721:1;26703:20;:::i;:::-;26698:25;;26737:20;26755:1;26737:20;:::i;:::-;26732:25;;26891:1;26823:66;26819:74;26816:1;26813:81;26810:2;;;26897:18;;:::i;:::-;26810:2;26941:1;26938;26934:9;26927:16;;26688:261;;;;:::o;26955:185::-;26995:1;27012:20;27030:1;27012:20;:::i;:::-;27007:25;;27046:20;27064:1;27046:20;:::i;:::-;27041:25;;27085:1;27075:2;;27090:18;;:::i;:::-;27075:2;27132:1;27129;27125:9;27120:14;;26997:143;;;;:::o;27146:348::-;27186:7;27209:20;27227:1;27209:20;:::i;:::-;27204:25;;27243:20;27261:1;27243:20;:::i;:::-;27238:25;;27431:1;27363:66;27359:74;27356:1;27353:81;27348:1;27341:9;27334:17;27330:105;27327:2;;;27438:18;;:::i;:::-;27327:2;27486:1;27483;27479:9;27468:20;;27194:300;;;;:::o;27500:191::-;27540:4;27560:20;27578:1;27560:20;:::i;:::-;27555:25;;27594:20;27612:1;27594:20;:::i;:::-;27589:25;;27633:1;27630;27627:8;27624:2;;;27638:18;;:::i;:::-;27624:2;27683:1;27680;27676:9;27668:17;;27545:146;;;;:::o;27697:96::-;27734:7;27763:24;27781:5;27763:24;:::i;:::-;27752:35;;27742:51;;;:::o;27799:104::-;27844:7;27873:24;27891:5;27873:24;:::i;:::-;27862:35;;27852:51;;;:::o;27909:90::-;27943:7;27986:5;27979:13;27972:21;27961:32;;27951:48;;;:::o;28005:126::-;28042:7;28082:42;28075:5;28071:54;28060:65;;28050:81;;;:::o;28137:77::-;28174:7;28203:5;28192:16;;28182:32;;;:::o;28220:86::-;28255:7;28295:4;28288:5;28284:16;28273:27;;28263:43;;;:::o;28312:180::-;28389:9;28422:64;28480:5;28422:64;:::i;:::-;28409:77;;28399:93;;;:::o;28498:140::-;28575:9;28608:24;28626:5;28608:24;:::i;:::-;28595:37;;28585:53;;;:::o;28644:121::-;28702:9;28735:24;28753:5;28735:24;:::i;:::-;28722:37;;28712:53;;;:::o;28771:307::-;28839:1;28849:113;28863:6;28860:1;28857:13;28849:113;;;28948:1;28943:3;28939:11;28933:18;28929:1;28924:3;28920:11;28913:39;28885:2;28882:1;28878:10;28873:15;;28849:113;;;28980:6;28977:1;28974:13;28971:2;;;29060:1;29051:6;29046:3;29042:16;29035:27;28971:2;28820:258;;;;:::o;29084:320::-;29128:6;29165:1;29159:4;29155:12;29145:22;;29212:1;29206:4;29202:12;29233:18;29223:2;;29289:4;29281:6;29277:17;29267:27;;29223:2;29351;29343:6;29340:14;29320:18;29317:38;29314:2;;;29370:18;;:::i;:::-;29314:2;29135:269;;;;:::o;29410:233::-;29449:3;29472:24;29490:5;29472:24;:::i;:::-;29463:33;;29518:66;29511:5;29508:77;29505:2;;;29588:18;;:::i;:::-;29505:2;29635:1;29628:5;29624:13;29617:20;;29453:190;;;:::o;29649:180::-;29697:77;29694:1;29687:88;29794:4;29791:1;29784:15;29818:4;29815:1;29808:15;29835:180;29883:77;29880:1;29873:88;29980:4;29977:1;29970:15;30004:4;30001:1;29994:15;30021:180;30069:77;30066:1;30059:88;30166:4;30163:1;30156:15;30190:4;30187:1;30180:15;30207:102;30248:6;30299:2;30295:7;30290:2;30283:5;30279:14;30275:28;30265:38;;30255:54;;;:::o;30315:178::-;30455:30;30451:1;30443:6;30439:14;30432:54;30421:72;:::o;30499:222::-;30639:34;30635:1;30627:6;30623:14;30616:58;30708:5;30703:2;30695:6;30691:15;30684:30;30605:116;:::o;30727:177::-;30867:29;30863:1;30855:6;30851:14;30844:53;30833:71;:::o;30910:225::-;31050:34;31046:1;31038:6;31034:14;31027:58;31119:8;31114:2;31106:6;31102:15;31095:33;31016:119;:::o;31141:221::-;31281:34;31277:1;31269:6;31265:14;31258:58;31350:4;31345:2;31337:6;31333:15;31326:29;31247:115;:::o;31368:177::-;31508:29;31504:1;31496:6;31492:14;31485:53;31474:71;:::o;31551:224::-;31691:34;31687:1;31679:6;31675:14;31668:58;31760:7;31755:2;31747:6;31743:15;31736:32;31657:118;:::o;31781:227::-;31921:34;31917:1;31909:6;31905:14;31898:58;31990:10;31985:2;31977:6;31973:15;31966:35;31887:121;:::o;32014:220::-;32154:34;32150:1;32142:6;32138:14;32131:58;32223:3;32218:2;32210:6;32206:15;32199:28;32120:114;:::o;32240:172::-;32380:24;32376:1;32368:6;32364:14;32357:48;32346:66;:::o;32418:182::-;32558:34;32554:1;32546:6;32542:14;32535:58;32524:76;:::o;32606:179::-;32746:31;32742:1;32734:6;32730:14;32723:55;32712:73;:::o;32791:224::-;32931:34;32927:1;32919:6;32915:14;32908:58;33000:7;32995:2;32987:6;32983:15;32976:32;32897:118;:::o;33021:114::-;33127:8;:::o;33141:223::-;33281:34;33277:1;33269:6;33265:14;33258:58;33350:6;33345:2;33337:6;33333:15;33326:31;33247:117;:::o;33370:122::-;33443:24;33461:5;33443:24;:::i;:::-;33436:5;33433:35;33423:2;;33482:1;33479;33472:12;33423:2;33413:79;:::o;33498:116::-;33568:21;33583:5;33568:21;:::i;:::-;33561:5;33558:32;33548:2;;33604:1;33601;33594:12;33548:2;33538:76;:::o;33620:122::-;33693:24;33711:5;33693:24;:::i;:::-;33686:5;33683:35;33673:2;;33732:1;33729;33722:12;33673:2;33663:79;:::o

Swarm Source

ipfs://3dafbba8cc7304816e83b6e9900aa7215799d1bd339a2f381cc2a6484d7aa8dc
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.