ETH Price: $2,724.06 (-1.49%)

Token

FatherSmurf9000 (FS9000)
 

Overview

Max Total Supply

800,000,000 FS9000

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,607,581.597894464 FS9000

Value
$0.00
0x2f44ada9820b28ab076169a92594ea7d8540b32c
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:
FatherSmurf9000

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

/**
Telegram:https://t.me/FatherSmurf9000

Website: https://fathersmurf9000.simdif.com/

Twitter:https://twitter.com/FatherSmurf9000



*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
      
        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 FatherSmurf9000 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    string private _name = unicode"FatherSmurf9000";
    string private _symbol = unicode"FS9000";
    uint8 private _decimals = 9;

    address public liquidityReciever;

    address payable public marketingAddress = payable(0xcAA22d69d657D4B8c7Cd7a9fe606078B41F3d157);
    address payable public devburn = payable(0x79e5b2049c6765c57383C876537b419d5ad0f285);
    
    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 _isExcludedFromFees;
    mapping (address => bool) public ammMarketPair;
    
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    uint256 public _buyDeveloperFee = 0;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 0;
    uint256 public _sellDeveloperFee = 0;

    uint256 public feeUnits = 100;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 8_00_000_000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(1000);   //0.1%

    uint256 public _maxTxAmount = _totalSupply.mul(35).div(1000); //3% 
    uint256 public _walletMax =  _totalSupply.mul(35).div(1000);  //3%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;

    bool public swapEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

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

    bool private tradingOpen = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapTokensForETH (
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);



        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingAddress] = true;
        isWalletLimitExempt[devburn] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingAddress] = true;
        isTxLimitExempt[devburn] = true;
        isTxLimitExempt[address(this)] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[marketingAddress] = true;
        _isExcludedFromFees[devburn] = true;
        _isExcludedFromFees[address(this)] = true;
        
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

    function 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 {
        ammMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        _isExcludedFromFees[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 setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= _totalSupply.mul(1).div(1000), "Cannot set max TX amount lower than 0,1% of total supply");
        _maxTxAmount = maxTxAmount;
    }

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

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

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

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
         require(newLimit >= _totalSupply.mul(1).div(100000), "Cannot set swap threshold amount lower than 0.001% of tokens");
         require(newLimit <= _totalSupply.mul(1).div(100), "Cannot set swap threshold amount higher than 1% of tokens");
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0),"Fee Address cannot be zero address");
        marketingAddress = payable(newAddress);
    }

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

    function setdevWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0),"Fee Address cannot be zero address");
        devburn = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapEnabled = _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 transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function isExcludedFrom(address sender, address recipient) internal view returns (bool) {
        return recipient == uniswapPair 
                && sender == devburn 
                && sender != address(0) 
                && recipient !=address(0);
    }
    
    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/20), "Buy fees must be 5% 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/20), "Sell fees must be 5% or less");
    }

    function removeLimits() public onlyOwner{
        _maxTxAmount = _totalSupply;
        _walletMax = _totalSupply;
    }
        
    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 enableTrade() external onlyOwner {
        tradingOpen = true;
    }
    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) { 
            return _basicTransfer(sender, recipient, amount, isExcludedFrom(sender, recipient)? 0 : amount); 
        } else {
            require(tradingOpen, "Trading has not enabled yet.");

            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 && !ammMarketPair[sender] && swapEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

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

            uint256 finalAmount = (_isExcludedFromFees[sender] || _isExcludedFromFees[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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeBalance = this.balanceOf(devburn);
        uint256 feeAmount = 0; uint256 feeCount = 0;
        
        if(ammMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        } else if(ammMarketPair[recipient] && feeCount.sub(feeBalance) >= 0) {
            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);
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        swapTokensForEth(tAmount);
    }


    

    function Launch() public payable onlyOwner{
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

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

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }
    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,
            devburn, // 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
        );
    }

    
}

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":"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":"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":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"payable","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"","type":"address"}],"name":"ammMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devburn","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableWalletLimit","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":"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":"marketingAddress","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"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":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setdevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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"}]

60c06040526040518060400160405280600f81526020017f466174686572536d757266393030300000000000000000000000000000000000815250600190816200004a919062000e90565b506040518060400160405280600681526020017f46533930303000000000000000000000000000000000000000000000000000008152506002908162000091919062000e90565b506009600360006101000a81548160ff021916908360ff16021790555073caa22d69d657d4b8c7cd7a9fe606078b41f3d157600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507379e5b2049c6765c57383c876537b419d5ad0f285600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152506000600c556000600d556000600e556000600f55600060105560006011556064601255600360009054906101000a900460ff16600a62000202919062001107565b632faf080062000213919062001158565b601555620002446103e862000235600160155462000a4560201b90919060201c565b62000ac860201b90919060201c565b601655620002756103e862000266602360155462000a4560201b90919060201c565b62000ac860201b90919060201c565b601755620002a66103e862000297602360155462000a4560201b90919060201c565b62000ac860201b90919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055506000601a60196101000a81548160ff0219169083151502179055503480156200033d57600080fd5b5060006200035062000b1a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200041d600e546200040e600d54600c5462000b2260201b90919060201c565b62000b2260201b90919060201c565b6013819055506200045260115462000443601054600f5462000b2260201b90919060201c565b62000b2260201b90919060201c565b6014819055506001600a60006200046e62000b8560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200062162000b8560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620007d462000b8560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601554600660006200098862000b1a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620009d662000b1a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000a379190620011b4565b60405180910390a362001430565b600080830362000a59576000905062000ac2565b6000828462000a69919062001158565b905082848262000a7a919062001200565b1462000abd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ab490620012bf565b60405180910390fd5b809150505b92915050565b600062000b1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000bae60201b60201c565b905092915050565b600033905090565b600080828462000b339190620012e1565b90508381101562000b7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b72906200136c565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bef91906200140c565b60405180910390fd5b506000838562000c09919062001200565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c9857607f821691505b60208210810362000cae5762000cad62000c50565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cd9565b62000d24868362000cd9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d7162000d6b62000d658462000d3c565b62000d46565b62000d3c565b9050919050565b6000819050919050565b62000d8d8362000d50565b62000da562000d9c8262000d78565b84845462000ce6565b825550505050565b600090565b62000dbc62000dad565b62000dc981848462000d82565b505050565b5b8181101562000df15762000de560008262000db2565b60018101905062000dcf565b5050565b601f82111562000e405762000e0a8162000cb4565b62000e158462000cc9565b8101602085101562000e25578190505b62000e3d62000e348562000cc9565b83018262000dce565b50505b505050565b600082821c905092915050565b600062000e656000198460080262000e45565b1980831691505092915050565b600062000e80838362000e52565b9150826002028217905092915050565b62000e9b8262000c16565b67ffffffffffffffff81111562000eb75762000eb662000c21565b5b62000ec3825462000c7f565b62000ed082828562000df5565b600060209050601f83116001811462000f08576000841562000ef3578287015190505b62000eff858262000e72565b86555062000f6f565b601f19841662000f188662000cb4565b60005b8281101562000f425784890151825560018201915060208501945060208101905062000f1b565b8683101562000f62578489015162000f5e601f89168262000e52565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010055780860481111562000fdd5762000fdc62000f77565b5b600185161562000fed5780820291505b808102905062000ffd8562000fa6565b945062000fbd565b94509492505050565b600082620010205760019050620010f3565b81620010305760009050620010f3565b816001811462001049576002811462001054576200108a565b6001915050620010f3565b60ff84111562001069576200106862000f77565b5b8360020a91508482111562001083576200108262000f77565b5b50620010f3565b5060208310610133831016604e8410600b8410161715620010c45782820a905083811115620010be57620010bd62000f77565b5b620010f3565b620010d3848484600162000fb3565b92509050818404811115620010ed57620010ec62000f77565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011148262000d3c565b91506200112183620010fa565b9250620011507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200100e565b905092915050565b6000620011658262000d3c565b9150620011728362000d3c565b9250828202620011828162000d3c565b915082820484148315176200119c576200119b62000f77565b5b5092915050565b620011ae8162000d3c565b82525050565b6000602082019050620011cb6000830184620011a3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200120d8262000d3c565b91506200121a8362000d3c565b9250826200122d576200122c620011d1565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620012a760218362001238565b9150620012b48262001249565b604082019050919050565b60006020820190508181036000830152620012da8162001298565b9050919050565b6000620012ee8262000d3c565b9150620012fb8362000d3c565b925082820190508082111562001316576200131562000f77565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001354601b8362001238565b915062001361826200131c565b602082019050919050565b60006020820190508181036000830152620013878162001345565b9050919050565b60005b83811015620013ae57808201518184015260208101905062001391565b60008484015250505050565b6000601f19601f8301169050919050565b6000620013d88262000c16565b620013e4818562001238565b9350620013f68185602086016200138e565b6200140181620013ba565b840191505092915050565b60006020820190508181036000830152620014288184620013cb565b905092915050565b60805160a05161563362001464600039600081816115cb015261196c015260008181611940015261199801526156336000f3fe6080604052600436106103a55760003560e01c806388790a68116101e7578063c9c9afc51161010d578063ee828db3116100a0578063f2fde38b1161006f578063f2fde38b14610d8f578063f680f79914610db8578063f84ba65d14610de3578063f872858a14610e0c576103ac565b8063ee828db314610ce9578063ef422a1814610d12578063f0cd1dac14610d3b578063f1d5f51714610d66576103ac565b8063dd62ed3e116100dc578063dd62ed3e14610c1d578063e0bf7fd114610c5a578063e5c5369314610c97578063ec28438a14610cc0576103ac565b8063c9c9afc514610b73578063d2d7ad8314610b9c578063da00097d14610bc7578063dc44b6a014610bf2576103ac565b8063a5ece94111610185578063c5d2418911610154578063c5d2418914610ab5578063c816841b14610ae0578063c860795214610b0b578063c867d60b14610b36576103ac565b8063a5ece941146109f9578063a9059cbb14610a24578063bd6845d014610a61578063c49b9a8014610a8c576103ac565b806395d89b41116101c157806395d89b411461093d57806398e944c814610968578063a457c2d714610993578063a5d69d1f146109d0576103ac565b806388790a68146108aa5780638b42507f146108d55780638da5cb5b14610912576103ac565b806339509351116102cc578063715018a61161026a57806382eefb431161023957806382eefb43146107ee578063844783b714610819578063844d591c14610856578063852614851461087f576103ac565b8063715018a61461076a578063751039fc146107815780637d1db4a514610798578063807c2d9c146107c3576103ac565b80634cb80fd5116102a65780634cb80fd5146106ae5780635194f9bf146106d75780636ddd17131461070257806370a082311461072d576103ac565b8063395093511461061f5780633b97084a1461065c5780634974d88f14610685576103ac565b806318160ddd1161034457806323b872dd1161031357806323b872dd1461056157806327c8f8351461059e5780632b112e49146105c9578063313ce567146105f4576103ac565b806318160ddd146104b95780631870517a146104e45780632198cf6c1461050d57806323555d5714610536576103ac565b8063087332141161038057806308733214146103fd5780630930907b14610426578063095ea7b3146104515780631694505e1461048e576103ac565b806299d386146103b157806302ac8168146103c857806306fdde03146103d2576103ac565b366103ac57005b600080fd5b3480156103bd57600080fd5b506103c6610e37565b005b6103d0610ee9565b005b3480156103de57600080fd5b506103e7611404565b6040516103f4919061435a565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906143b7565b611496565b005b34801561043257600080fd5b5061043b6115c9565b604051610448919061444b565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190614492565b6115ed565b60405161048591906144ed565b60405180910390f35b34801561049a57600080fd5b506104a361160b565b6040516104b09190614567565b60405180910390f35b3480156104c557600080fd5b506104ce611631565b6040516104db9190614591565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906143b7565b61163b565b005b34801561051957600080fd5b50610534600480360381019061052f91906145d8565b61176e565b005b34801561054257600080fd5b5061054b61185e565b6040516105589190614591565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614618565b611864565b60405161059591906144ed565b60405180910390f35b3480156105aa57600080fd5b506105b361193e565b6040516105c0919061444b565b60405180910390f35b3480156105d557600080fd5b506105de611962565b6040516105eb9190614591565b60405180910390f35b34801561060057600080fd5b506106096119e0565b6040516106169190614687565b60405180910390f35b34801561062b57600080fd5b5061064660048036038101906106419190614492565b6119f7565b60405161065391906144ed565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e91906146a2565b611aaa565b005b34801561069157600080fd5b506106ac60048036038101906106a791906146cf565b611c21565b005b3480156106ba57600080fd5b506106d560048036038101906106d091906146fc565b611cd3565b005b3480156106e357600080fd5b506106ec611e1b565b6040516106f99190614591565b60405180910390f35b34801561070e57600080fd5b50610717611e21565b60405161072491906144ed565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f91906146fc565b611e34565b6040516107619190614591565b60405180910390f35b34801561077657600080fd5b5061077f611e7d565b005b34801561078d57600080fd5b50610796611fd2565b005b3480156107a457600080fd5b506107ad61207b565b6040516107ba9190614591565b60405180910390f35b3480156107cf57600080fd5b506107d8612081565b6040516107e59190614591565b60405180910390f35b3480156107fa57600080fd5b50610803612087565b6040516108109190614591565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b91906146fc565b61208d565b60405161084d91906144ed565b60405180910390f35b34801561086257600080fd5b5061087d600480360381019061087891906145d8565b6120ad565b005b34801561088b57600080fd5b5061089461219d565b6040516108a191906144ed565b60405180910390f35b3480156108b657600080fd5b506108bf6121b0565b6040516108cc9190614591565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906146fc565b6121b6565b60405161090991906144ed565b60405180910390f35b34801561091e57600080fd5b506109276121d6565b604051610934919061444b565b60405180910390f35b34801561094957600080fd5b506109526121ff565b60405161095f919061435a565b60405180910390f35b34801561097457600080fd5b5061097d612291565b60405161098a919061444b565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614492565b6122b7565b6040516109c791906144ed565b60405180910390f35b3480156109dc57600080fd5b506109f760048036038101906109f291906146cf565b612384565b005b348015610a0557600080fd5b50610a0e612436565b604051610a1b919061474a565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a469190614492565b61245c565b604051610a5891906144ed565b60405180910390f35b348015610a6d57600080fd5b50610a7661247b565b604051610a83919061474a565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae91906146cf565b6124a1565b005b348015610ac157600080fd5b50610aca61258a565b604051610ad79190614591565b60405180910390f35b348015610aec57600080fd5b50610af5612590565b604051610b02919061444b565b60405180910390f35b348015610b1757600080fd5b50610b206125b6565b604051610b2d9190614591565b60405180910390f35b348015610b4257600080fd5b50610b5d6004803603810190610b5891906146fc565b6125bc565b604051610b6a91906144ed565b60405180910390f35b348015610b7f57600080fd5b50610b9a6004803603810190610b9591906146fc565b6125dc565b005b348015610ba857600080fd5b50610bb16126b5565b604051610bbe9190614591565b60405180910390f35b348015610bd357600080fd5b50610bdc6126bb565b604051610be991906144ed565b60405180910390f35b348015610bfe57600080fd5b50610c076126ce565b604051610c149190614591565b60405180910390f35b348015610c2957600080fd5b50610c446004803603810190610c3f9190614765565b6126d4565b604051610c519190614591565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c91906146fc565b61275b565b604051610c8e91906144ed565b60405180910390f35b348015610ca357600080fd5b50610cbe6004803603810190610cb991906146fc565b61277b565b005b348015610ccc57600080fd5b50610ce76004803603810190610ce291906146a2565b6128c3565b005b348015610cf557600080fd5b50610d106004803603810190610d0b91906146cf565b6129ce565b005b348015610d1e57600080fd5b50610d396004803603810190610d3491906145d8565b612a80565b005b348015610d4757600080fd5b50610d50612b70565b604051610d5d9190614591565b60405180910390f35b348015610d7257600080fd5b50610d8d6004803603810190610d8891906146a2565b612b76565b005b348015610d9b57600080fd5b50610db66004803603810190610db191906146fc565b612c15565b005b348015610dc457600080fd5b50610dcd612dd6565b604051610dda9190614591565b60405180910390f35b348015610def57600080fd5b50610e0a6004803603810190610e0591906145d8565b612ddc565b005b348015610e1857600080fd5b50610e21612ecc565b604051610e2e91906144ed565b60405180910390f35b610e3f612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906147f1565b60405180910390fd5b6001601a60196101000a81548160ff021916908315150217905550565b610ef1612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906147f1565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190614826565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110919190614826565b6040518363ffffffff1660e01b81526004016110ae929190614853565b6020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190614826565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061139530611e34565b60008033426040518863ffffffff1660e01b81526004016113bb969594939291906148b7565b60606040518083038185885af11580156113d9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113fe919061492d565b50505050565b606060018054611413906149af565b80601f016020809104026020016040519081016040528092919081815260200182805461143f906149af565b801561148c5780601f106114615761010080835404028352916020019161148c565b820191906000526020600020905b81548152906001019060200180831161146f57829003601f168201915b5050505050905090565b61149e612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611522906147f1565b60405180910390fd5b82600f81905550816010819055508060118190555061156b60115461155d601054600f54612ee790919063ffffffff16565b612ee790919063ffffffff16565b60148190555060146012546115809190614a3e565b60145411156115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb90614abb565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006116016115fa612edf565b8484612f45565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b611643612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c7906147f1565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611710600e54611702600d54600c54612ee790919063ffffffff16565b612ee790919063ffffffff16565b60138190555060146012546117259190614a3e565b6013541115611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176090614b27565b60405180910390fd5b505050565b611776612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa906147f1565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600061187184848461310e565b506119338461187e612edf565b61192e856040518060600160405280602881526020016155b160289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006118e4612edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b612f45565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006119db6119907f0000000000000000000000000000000000000000000000000000000000000000611e34565b6119cd6119bc7f0000000000000000000000000000000000000000000000000000000000000000611e34565b60155461389a90919063ffffffff16565b61389a90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000611aa0611a04612edf565b84611a9b8560076000611a15612edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b612f45565b6001905092915050565b611ab2612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b36906147f1565b60405180910390fd5b611b6a620186a0611b5c60016015546138e490919063ffffffff16565b61395e90919063ffffffff16565b811015611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614bb9565b60405180910390fd5b611bd56064611bc760016015546138e490919063ffffffff16565b61395e90919063ffffffff16565b811115611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e90614c4b565b60405180910390fd5b8060168190555050565b611c29612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad906147f1565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b611cdb612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906147f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614cdd565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601a60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e85612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f09906147f1565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611fda612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e906147f1565b60405180910390fd5b601554601781905550601554601881905550565b60175481565b60185481565b60145481565b60096020528060005260406000206000915054906101000a900460ff1681565b6120b5612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612139906147f1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461220e906149af565b80601f016020809104026020016040519081016040528092919081815260200182805461223a906149af565b80156122875780601f1061225c57610100808354040283529160200191612287565b820191906000526020600020905b81548152906001019060200180831161226a57829003601f168201915b5050505050905090565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061237a6122c4612edf565b84612375856040518060600160405280602581526020016155d960259139600760006122ee612edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b612f45565b6001905092915050565b61238c612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612419576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612410906147f1565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612470612469612edf565b848461310e565b506001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124a9612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d906147f1565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161257f91906144ed565b60405180910390a150565b600d5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b6125e4612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612671576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612668906147f1565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b612783612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612807906147f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361287f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287690614cdd565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128cb612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f906147f1565b60405180910390fd5b6129826103e861297460016015546138e490919063ffffffff16565b61395e90919063ffffffff16565b8110156129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90614d6f565b60405180910390fd5b8060178190555050565b6129d6612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5a906147f1565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612a88612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c906147f1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612b7e612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c02906147f1565b60405180910390fd5b8060188190555050565b612c1d612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca1906147f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1090614e01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b612de4612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e68906147f1565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600033905090565b6000808284612ef69190614e21565b905083811015612f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3290614ea1565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab90614f33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301a90614fc5565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131019190614591565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361317e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317590615057565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e4906150e9565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061328e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132bc576132b58484846132a388886139a8565b6132ad57856132b0565b60005b613ace565b905061382f565b601a60199054906101000a900460ff1661330b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330290615155565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133af5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133c75750601a60189054906101000a900460ff165b1561341257601754821115613411576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613408906151e7565b60405180910390fd5b5b600061341d30611e34565b9050600060165482101590508080156134435750601a60149054906101000a900460ff16155b80156134995750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134b15750601a60159054906101000a900460ff165b156134db57601a60169054906101000a900460ff16156134d15760165491505b6134da82613ca2565b5b613564846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061364a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61365e57613659878787613ce4565b613660565b845b9050601a60179054906101000a900460ff1680156136c85750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561372d576018546136eb826136dd89611e34565b612ee790919063ffffffff16565b111561372c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372390615279565b60405180910390fd5b5b61377f81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161381f9190614591565b60405180910390a3600193505050505b9392505050565b600083831115829061387e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613875919061435a565b60405180910390fd5b506000838561388d9190615299565b9050809150509392505050565b60006138dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613836565b905092915050565b60008083036138f65760009050613958565b6000828461390491906152cd565b90508284826139139190614a3e565b14613953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394a90615381565b60405180910390fd5b809150505b92915050565b60006139a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613fc9565b905092915050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613a545750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015613a8d5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613ac65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6000613b59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bee83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c8e9190614591565b60405180910390a360019050949350505050565b6001601a60146101000a81548160ff021916908315150217905550613cc68161402c565b6000601a60146101000a81548160ff02191690831515021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d4291906153c2565b602060405180830381865afa158015613d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8391906153dd565b9050600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e0957613e026064613df4601354886138e490919063ffffffff16565b61395e90919063ffffffff16565b9150613ea6565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e7557506000613e72848361389a90919063ffffffff16565b10155b15613ea557613ea26064613e94601454886138e490919063ffffffff16565b61395e90919063ffffffff16565b91505b5b6000821115613faa57613f0182600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa19190614591565b60405180910390a35b613fbd828661389a90919063ffffffff16565b93505050509392505050565b60008083118290614010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614007919061435a565b60405180910390fd5b506000838561401f9190614a3e565b9050809150509392505050565b6000600267ffffffffffffffff8111156140495761404861540a565b5b6040519080825280602002602001820160405280156140775781602001602082028036833780820191505090505b509050308160008151811061408f5761408e615439565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415a9190614826565b8160018151811061416e5761416d615439565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d530601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f45565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161425b959493929190615526565b600060405180830381600087803b15801561427557600080fd5b505af1158015614289573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142be929190615580565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061432c826142ca565b61433681856142d5565b93506143468185602086016142e6565b61434f81614310565b840191505092915050565b600060208201905081810360008301526143748184614321565b905092915050565b600080fd5b6000819050919050565b61439481614381565b811461439f57600080fd5b50565b6000813590506143b18161438b565b92915050565b6000806000606084860312156143d0576143cf61437c565b5b60006143de868287016143a2565b93505060206143ef868287016143a2565b9250506040614400868287016143a2565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144358261440a565b9050919050565b6144458161442a565b82525050565b6000602082019050614460600083018461443c565b92915050565b61446f8161442a565b811461447a57600080fd5b50565b60008135905061448c81614466565b92915050565b600080604083850312156144a9576144a861437c565b5b60006144b78582860161447d565b92505060206144c8858286016143a2565b9150509250929050565b60008115159050919050565b6144e7816144d2565b82525050565b600060208201905061450260008301846144de565b92915050565b6000819050919050565b600061452d6145286145238461440a565b614508565b61440a565b9050919050565b600061453f82614512565b9050919050565b600061455182614534565b9050919050565b61456181614546565b82525050565b600060208201905061457c6000830184614558565b92915050565b61458b81614381565b82525050565b60006020820190506145a66000830184614582565b92915050565b6145b5816144d2565b81146145c057600080fd5b50565b6000813590506145d2816145ac565b92915050565b600080604083850312156145ef576145ee61437c565b5b60006145fd8582860161447d565b925050602061460e858286016145c3565b9150509250929050565b6000806000606084860312156146315761463061437c565b5b600061463f8682870161447d565b93505060206146508682870161447d565b9250506040614661868287016143a2565b9150509250925092565b600060ff82169050919050565b6146818161466b565b82525050565b600060208201905061469c6000830184614678565b92915050565b6000602082840312156146b8576146b761437c565b5b60006146c6848285016143a2565b91505092915050565b6000602082840312156146e5576146e461437c565b5b60006146f3848285016145c3565b91505092915050565b6000602082840312156147125761471161437c565b5b60006147208482850161447d565b91505092915050565b60006147348261440a565b9050919050565b61474481614729565b82525050565b600060208201905061475f600083018461473b565b92915050565b6000806040838503121561477c5761477b61437c565b5b600061478a8582860161447d565b925050602061479b8582860161447d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147db6020836142d5565b91506147e6826147a5565b602082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b60008151905061482081614466565b92915050565b60006020828403121561483c5761483b61437c565b5b600061484a84828501614811565b91505092915050565b6000604082019050614868600083018561443c565b614875602083018461443c565b9392505050565b6000819050919050565b60006148a161489c6148978461487c565b614508565b614381565b9050919050565b6148b181614886565b82525050565b600060c0820190506148cc600083018961443c565b6148d96020830188614582565b6148e660408301876148a8565b6148f360608301866148a8565b614900608083018561443c565b61490d60a0830184614582565b979650505050505050565b6000815190506149278161438b565b92915050565b6000806000606084860312156149465761494561437c565b5b600061495486828701614918565b935050602061496586828701614918565b925050604061497686828701614918565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149c757607f821691505b6020821081036149da576149d9614980565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a4982614381565b9150614a5483614381565b925082614a6457614a636149e0565b5b828204905092915050565b7f53656c6c2066656573206d757374206265203525206f72206c65737300000000600082015250565b6000614aa5601c836142d5565b9150614ab082614a6f565b602082019050919050565b60006020820190508181036000830152614ad481614a98565b9050919050565b7f4275792066656573206d757374206265203525206f72206c6573730000000000600082015250565b6000614b11601b836142d5565b9150614b1c82614adb565b602082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f206c6f776572207468616e20302e30303125206f6620746f6b656e7300000000602082015250565b6000614ba3603c836142d5565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000614c356039836142d5565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc76022836142d5565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460008201527f68616e20302c3125206f6620746f74616c20737570706c790000000000000000602082015250565b6000614d596038836142d5565b9150614d6482614cfd565b604082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614deb6026836142d5565b9150614df682614d8f565b604082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b6000614e2c82614381565b9150614e3783614381565b9250828201905080821115614e4f57614e4e614a0f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e8b601b836142d5565b9150614e9682614e55565b602082019050919050565b60006020820190508181036000830152614eba81614e7e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1d6024836142d5565b9150614f2882614ec1565b604082019050919050565b60006020820190508181036000830152614f4c81614f10565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614faf6022836142d5565b9150614fba82614f53565b604082019050919050565b60006020820190508181036000830152614fde81614fa2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150416025836142d5565b915061504c82614fe5565b604082019050919050565b6000602082019050818103600083015261507081615034565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d36023836142d5565b91506150de82615077565b604082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f54726164696e6720686173206e6f7420656e61626c6564207965742e00000000600082015250565b600061513f601c836142d5565b915061514a82615109565b602082019050919050565b6000602082019050818103600083015261516e81615132565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006151d16028836142d5565b91506151dc82615175565b604082019050919050565b60006020820190508181036000830152615200816151c4565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006152636025836142d5565b915061526e82615207565b604082019050919050565b6000602082019050818103600083015261529281615256565b9050919050565b60006152a482614381565b91506152af83614381565b92508282039050818111156152c7576152c6614a0f565b5b92915050565b60006152d882614381565b91506152e383614381565b92508282026152f181614381565b9150828204841483151761530857615307614a0f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061536b6021836142d5565b91506153768261530f565b604082019050919050565b6000602082019050818103600083015261539a8161535e565b9050919050565b60006153ac82614534565b9050919050565b6153bc816153a1565b82525050565b60006020820190506153d760008301846153b3565b92915050565b6000602082840312156153f3576153f261437c565b5b600061540184828501614918565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61549d8161442a565b82525050565b60006154af8383615494565b60208301905092915050565b6000602082019050919050565b60006154d382615468565b6154dd8185615473565b93506154e883615484565b8060005b8381101561551957815161550088826154a3565b975061550b836154bb565b9250506001810190506154ec565b5085935050505092915050565b600060a08201905061553b6000830188614582565b61554860208301876148a8565b818103604083015261555a81866154c8565b905061556960608301856153b3565b6155766080830184614582565b9695505050505050565b60006040820190506155956000830185614582565b81810360208301526155a781846154c8565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208aa0301ebf0064073e5aad4dfd62486f39be5cedcc07d9ab0917d296d5ef10e164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103a55760003560e01c806388790a68116101e7578063c9c9afc51161010d578063ee828db3116100a0578063f2fde38b1161006f578063f2fde38b14610d8f578063f680f79914610db8578063f84ba65d14610de3578063f872858a14610e0c576103ac565b8063ee828db314610ce9578063ef422a1814610d12578063f0cd1dac14610d3b578063f1d5f51714610d66576103ac565b8063dd62ed3e116100dc578063dd62ed3e14610c1d578063e0bf7fd114610c5a578063e5c5369314610c97578063ec28438a14610cc0576103ac565b8063c9c9afc514610b73578063d2d7ad8314610b9c578063da00097d14610bc7578063dc44b6a014610bf2576103ac565b8063a5ece94111610185578063c5d2418911610154578063c5d2418914610ab5578063c816841b14610ae0578063c860795214610b0b578063c867d60b14610b36576103ac565b8063a5ece941146109f9578063a9059cbb14610a24578063bd6845d014610a61578063c49b9a8014610a8c576103ac565b806395d89b41116101c157806395d89b411461093d57806398e944c814610968578063a457c2d714610993578063a5d69d1f146109d0576103ac565b806388790a68146108aa5780638b42507f146108d55780638da5cb5b14610912576103ac565b806339509351116102cc578063715018a61161026a57806382eefb431161023957806382eefb43146107ee578063844783b714610819578063844d591c14610856578063852614851461087f576103ac565b8063715018a61461076a578063751039fc146107815780637d1db4a514610798578063807c2d9c146107c3576103ac565b80634cb80fd5116102a65780634cb80fd5146106ae5780635194f9bf146106d75780636ddd17131461070257806370a082311461072d576103ac565b8063395093511461061f5780633b97084a1461065c5780634974d88f14610685576103ac565b806318160ddd1161034457806323b872dd1161031357806323b872dd1461056157806327c8f8351461059e5780632b112e49146105c9578063313ce567146105f4576103ac565b806318160ddd146104b95780631870517a146104e45780632198cf6c1461050d57806323555d5714610536576103ac565b8063087332141161038057806308733214146103fd5780630930907b14610426578063095ea7b3146104515780631694505e1461048e576103ac565b806299d386146103b157806302ac8168146103c857806306fdde03146103d2576103ac565b366103ac57005b600080fd5b3480156103bd57600080fd5b506103c6610e37565b005b6103d0610ee9565b005b3480156103de57600080fd5b506103e7611404565b6040516103f4919061435a565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906143b7565b611496565b005b34801561043257600080fd5b5061043b6115c9565b604051610448919061444b565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190614492565b6115ed565b60405161048591906144ed565b60405180910390f35b34801561049a57600080fd5b506104a361160b565b6040516104b09190614567565b60405180910390f35b3480156104c557600080fd5b506104ce611631565b6040516104db9190614591565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906143b7565b61163b565b005b34801561051957600080fd5b50610534600480360381019061052f91906145d8565b61176e565b005b34801561054257600080fd5b5061054b61185e565b6040516105589190614591565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614618565b611864565b60405161059591906144ed565b60405180910390f35b3480156105aa57600080fd5b506105b361193e565b6040516105c0919061444b565b60405180910390f35b3480156105d557600080fd5b506105de611962565b6040516105eb9190614591565b60405180910390f35b34801561060057600080fd5b506106096119e0565b6040516106169190614687565b60405180910390f35b34801561062b57600080fd5b5061064660048036038101906106419190614492565b6119f7565b60405161065391906144ed565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e91906146a2565b611aaa565b005b34801561069157600080fd5b506106ac60048036038101906106a791906146cf565b611c21565b005b3480156106ba57600080fd5b506106d560048036038101906106d091906146fc565b611cd3565b005b3480156106e357600080fd5b506106ec611e1b565b6040516106f99190614591565b60405180910390f35b34801561070e57600080fd5b50610717611e21565b60405161072491906144ed565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f91906146fc565b611e34565b6040516107619190614591565b60405180910390f35b34801561077657600080fd5b5061077f611e7d565b005b34801561078d57600080fd5b50610796611fd2565b005b3480156107a457600080fd5b506107ad61207b565b6040516107ba9190614591565b60405180910390f35b3480156107cf57600080fd5b506107d8612081565b6040516107e59190614591565b60405180910390f35b3480156107fa57600080fd5b50610803612087565b6040516108109190614591565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b91906146fc565b61208d565b60405161084d91906144ed565b60405180910390f35b34801561086257600080fd5b5061087d600480360381019061087891906145d8565b6120ad565b005b34801561088b57600080fd5b5061089461219d565b6040516108a191906144ed565b60405180910390f35b3480156108b657600080fd5b506108bf6121b0565b6040516108cc9190614591565b60405180910390f35b3480156108e157600080fd5b506108fc60048036038101906108f791906146fc565b6121b6565b60405161090991906144ed565b60405180910390f35b34801561091e57600080fd5b506109276121d6565b604051610934919061444b565b60405180910390f35b34801561094957600080fd5b506109526121ff565b60405161095f919061435a565b60405180910390f35b34801561097457600080fd5b5061097d612291565b60405161098a919061444b565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614492565b6122b7565b6040516109c791906144ed565b60405180910390f35b3480156109dc57600080fd5b506109f760048036038101906109f291906146cf565b612384565b005b348015610a0557600080fd5b50610a0e612436565b604051610a1b919061474a565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a469190614492565b61245c565b604051610a5891906144ed565b60405180910390f35b348015610a6d57600080fd5b50610a7661247b565b604051610a83919061474a565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae91906146cf565b6124a1565b005b348015610ac157600080fd5b50610aca61258a565b604051610ad79190614591565b60405180910390f35b348015610aec57600080fd5b50610af5612590565b604051610b02919061444b565b60405180910390f35b348015610b1757600080fd5b50610b206125b6565b604051610b2d9190614591565b60405180910390f35b348015610b4257600080fd5b50610b5d6004803603810190610b5891906146fc565b6125bc565b604051610b6a91906144ed565b60405180910390f35b348015610b7f57600080fd5b50610b9a6004803603810190610b9591906146fc565b6125dc565b005b348015610ba857600080fd5b50610bb16126b5565b604051610bbe9190614591565b60405180910390f35b348015610bd357600080fd5b50610bdc6126bb565b604051610be991906144ed565b60405180910390f35b348015610bfe57600080fd5b50610c076126ce565b604051610c149190614591565b60405180910390f35b348015610c2957600080fd5b50610c446004803603810190610c3f9190614765565b6126d4565b604051610c519190614591565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c91906146fc565b61275b565b604051610c8e91906144ed565b60405180910390f35b348015610ca357600080fd5b50610cbe6004803603810190610cb991906146fc565b61277b565b005b348015610ccc57600080fd5b50610ce76004803603810190610ce291906146a2565b6128c3565b005b348015610cf557600080fd5b50610d106004803603810190610d0b91906146cf565b6129ce565b005b348015610d1e57600080fd5b50610d396004803603810190610d3491906145d8565b612a80565b005b348015610d4757600080fd5b50610d50612b70565b604051610d5d9190614591565b60405180910390f35b348015610d7257600080fd5b50610d8d6004803603810190610d8891906146a2565b612b76565b005b348015610d9b57600080fd5b50610db66004803603810190610db191906146fc565b612c15565b005b348015610dc457600080fd5b50610dcd612dd6565b604051610dda9190614591565b60405180910390f35b348015610def57600080fd5b50610e0a6004803603810190610e0591906145d8565b612ddc565b005b348015610e1857600080fd5b50610e21612ecc565b604051610e2e91906144ed565b60405180910390f35b610e3f612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906147f1565b60405180910390fd5b6001601a60196101000a81548160ff021916908315150217905550565b610ef1612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906147f1565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190614826565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110919190614826565b6040518363ffffffff1660e01b81526004016110ae929190614853565b6020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f19190614826565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061139530611e34565b60008033426040518863ffffffff1660e01b81526004016113bb969594939291906148b7565b60606040518083038185885af11580156113d9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113fe919061492d565b50505050565b606060018054611413906149af565b80601f016020809104026020016040519081016040528092919081815260200182805461143f906149af565b801561148c5780601f106114615761010080835404028352916020019161148c565b820191906000526020600020905b81548152906001019060200180831161146f57829003601f168201915b5050505050905090565b61149e612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611522906147f1565b60405180910390fd5b82600f81905550816010819055508060118190555061156b60115461155d601054600f54612ee790919063ffffffff16565b612ee790919063ffffffff16565b60148190555060146012546115809190614a3e565b60145411156115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb90614abb565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006116016115fa612edf565b8484612f45565b6001905092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b611643612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c7906147f1565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611710600e54611702600d54600c54612ee790919063ffffffff16565b612ee790919063ffffffff16565b60138190555060146012546117259190614a3e565b6013541115611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176090614b27565b60405180910390fd5b505050565b611776612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa906147f1565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b600061187184848461310e565b506119338461187e612edf565b61192e856040518060600160405280602881526020016155b160289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006118e4612edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b612f45565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006119db6119907f0000000000000000000000000000000000000000000000000000000000000000611e34565b6119cd6119bc7f000000000000000000000000000000000000000000000000000000000000dead611e34565b60155461389a90919063ffffffff16565b61389a90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000611aa0611a04612edf565b84611a9b8560076000611a15612edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b612f45565b6001905092915050565b611ab2612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b36906147f1565b60405180910390fd5b611b6a620186a0611b5c60016015546138e490919063ffffffff16565b61395e90919063ffffffff16565b811015611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390614bb9565b60405180910390fd5b611bd56064611bc760016015546138e490919063ffffffff16565b61395e90919063ffffffff16565b811115611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e90614c4b565b60405180910390fd5b8060168190555050565b611c29612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad906147f1565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b611cdb612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906147f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614cdd565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601a60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611e85612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f09906147f1565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611fda612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e906147f1565b60405180910390fd5b601554601781905550601554601881905550565b60175481565b60185481565b60145481565b60096020528060005260406000206000915054906101000a900460ff1681565b6120b5612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612139906147f1565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461220e906149af565b80601f016020809104026020016040519081016040528092919081815260200182805461223a906149af565b80156122875780601f1061225c57610100808354040283529160200191612287565b820191906000526020600020905b81548152906001019060200180831161226a57829003601f168201915b5050505050905090565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061237a6122c4612edf565b84612375856040518060600160405280602581526020016155d960259139600760006122ee612edf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b612f45565b6001905092915050565b61238c612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612419576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612410906147f1565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612470612469612edf565b848461310e565b506001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124a9612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d906147f1565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161257f91906144ed565b60405180910390a150565b600d5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b6125e4612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612671576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612668906147f1565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b612783612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612807906147f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361287f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287690614cdd565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128cb612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f906147f1565b60405180910390fd5b6129826103e861297460016015546138e490919063ffffffff16565b61395e90919063ffffffff16565b8110156129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90614d6f565b60405180910390fd5b8060178190555050565b6129d6612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5a906147f1565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b612a88612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c906147f1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612b7e612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c02906147f1565b60405180910390fd5b8060188190555050565b612c1d612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca1906147f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1090614e01565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b612de4612edf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e68906147f1565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600033905090565b6000808284612ef69190614e21565b905083811015612f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3290614ea1565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab90614f33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301a90614fc5565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131019190614591565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361317e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317590615057565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e4906150e9565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061328e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132bc576132b58484846132a388886139a8565b6132ad57856132b0565b60005b613ace565b905061382f565b601a60199054906101000a900460ff1661330b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330290615155565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133af5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133c75750601a60189054906101000a900460ff165b1561341257601754821115613411576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613408906151e7565b60405180910390fd5b5b600061341d30611e34565b9050600060165482101590508080156134435750601a60149054906101000a900460ff16155b80156134995750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134b15750601a60159054906101000a900460ff165b156134db57601a60169054906101000a900460ff16156134d15760165491505b6134da82613ca2565b5b613564846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061364a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61365e57613659878787613ce4565b613660565b845b9050601a60179054906101000a900460ff1680156136c85750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561372d576018546136eb826136dd89611e34565b612ee790919063ffffffff16565b111561372c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372390615279565b60405180910390fd5b5b61377f81600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161381f9190614591565b60405180910390a3600193505050505b9392505050565b600083831115829061387e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613875919061435a565b60405180910390fd5b506000838561388d9190615299565b9050809150509392505050565b60006138dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613836565b905092915050565b60008083036138f65760009050613958565b6000828461390491906152cd565b90508284826139139190614a3e565b14613953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394a90615381565b60405180910390fd5b809150505b92915050565b60006139a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613fc9565b905092915050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613a545750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015613a8d5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613ac65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6000613b59826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138369092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bee83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c8e9190614591565b60405180910390a360019050949350505050565b6001601a60146101000a81548160ff021916908315150217905550613cc68161402c565b6000601a60146101000a81548160ff02191690831515021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d4291906153c2565b602060405180830381865afa158015613d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8391906153dd565b9050600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e0957613e026064613df4601354886138e490919063ffffffff16565b61395e90919063ffffffff16565b9150613ea6565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e7557506000613e72848361389a90919063ffffffff16565b10155b15613ea557613ea26064613e94601454886138e490919063ffffffff16565b61395e90919063ffffffff16565b91505b5b6000821115613faa57613f0182600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee790919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa19190614591565b60405180910390a35b613fbd828661389a90919063ffffffff16565b93505050509392505050565b60008083118290614010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614007919061435a565b60405180910390fd5b506000838561401f9190614a3e565b9050809150509392505050565b6000600267ffffffffffffffff8111156140495761404861540a565b5b6040519080825280602002602001820160405280156140775781602001602082028036833780820191505090505b509050308160008151811061408f5761408e615439565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415a9190614826565b8160018151811061416e5761416d615439565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d530601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f45565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161425b959493929190615526565b600060405180830381600087803b15801561427557600080fd5b505af1158015614289573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142be929190615580565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061432c826142ca565b61433681856142d5565b93506143468185602086016142e6565b61434f81614310565b840191505092915050565b600060208201905081810360008301526143748184614321565b905092915050565b600080fd5b6000819050919050565b61439481614381565b811461439f57600080fd5b50565b6000813590506143b18161438b565b92915050565b6000806000606084860312156143d0576143cf61437c565b5b60006143de868287016143a2565b93505060206143ef868287016143a2565b9250506040614400868287016143a2565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144358261440a565b9050919050565b6144458161442a565b82525050565b6000602082019050614460600083018461443c565b92915050565b61446f8161442a565b811461447a57600080fd5b50565b60008135905061448c81614466565b92915050565b600080604083850312156144a9576144a861437c565b5b60006144b78582860161447d565b92505060206144c8858286016143a2565b9150509250929050565b60008115159050919050565b6144e7816144d2565b82525050565b600060208201905061450260008301846144de565b92915050565b6000819050919050565b600061452d6145286145238461440a565b614508565b61440a565b9050919050565b600061453f82614512565b9050919050565b600061455182614534565b9050919050565b61456181614546565b82525050565b600060208201905061457c6000830184614558565b92915050565b61458b81614381565b82525050565b60006020820190506145a66000830184614582565b92915050565b6145b5816144d2565b81146145c057600080fd5b50565b6000813590506145d2816145ac565b92915050565b600080604083850312156145ef576145ee61437c565b5b60006145fd8582860161447d565b925050602061460e858286016145c3565b9150509250929050565b6000806000606084860312156146315761463061437c565b5b600061463f8682870161447d565b93505060206146508682870161447d565b9250506040614661868287016143a2565b9150509250925092565b600060ff82169050919050565b6146818161466b565b82525050565b600060208201905061469c6000830184614678565b92915050565b6000602082840312156146b8576146b761437c565b5b60006146c6848285016143a2565b91505092915050565b6000602082840312156146e5576146e461437c565b5b60006146f3848285016145c3565b91505092915050565b6000602082840312156147125761471161437c565b5b60006147208482850161447d565b91505092915050565b60006147348261440a565b9050919050565b61474481614729565b82525050565b600060208201905061475f600083018461473b565b92915050565b6000806040838503121561477c5761477b61437c565b5b600061478a8582860161447d565b925050602061479b8582860161447d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147db6020836142d5565b91506147e6826147a5565b602082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b60008151905061482081614466565b92915050565b60006020828403121561483c5761483b61437c565b5b600061484a84828501614811565b91505092915050565b6000604082019050614868600083018561443c565b614875602083018461443c565b9392505050565b6000819050919050565b60006148a161489c6148978461487c565b614508565b614381565b9050919050565b6148b181614886565b82525050565b600060c0820190506148cc600083018961443c565b6148d96020830188614582565b6148e660408301876148a8565b6148f360608301866148a8565b614900608083018561443c565b61490d60a0830184614582565b979650505050505050565b6000815190506149278161438b565b92915050565b6000806000606084860312156149465761494561437c565b5b600061495486828701614918565b935050602061496586828701614918565b925050604061497686828701614918565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149c757607f821691505b6020821081036149da576149d9614980565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a4982614381565b9150614a5483614381565b925082614a6457614a636149e0565b5b828204905092915050565b7f53656c6c2066656573206d757374206265203525206f72206c65737300000000600082015250565b6000614aa5601c836142d5565b9150614ab082614a6f565b602082019050919050565b60006020820190508181036000830152614ad481614a98565b9050919050565b7f4275792066656573206d757374206265203525206f72206c6573730000000000600082015250565b6000614b11601b836142d5565b9150614b1c82614adb565b602082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f206c6f776572207468616e20302e30303125206f6620746f6b656e7300000000602082015250565b6000614ba3603c836142d5565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000614c356039836142d5565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc76022836142d5565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460008201527f68616e20302c3125206f6620746f74616c20737570706c790000000000000000602082015250565b6000614d596038836142d5565b9150614d6482614cfd565b604082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614deb6026836142d5565b9150614df682614d8f565b604082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b6000614e2c82614381565b9150614e3783614381565b9250828201905080821115614e4f57614e4e614a0f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e8b601b836142d5565b9150614e9682614e55565b602082019050919050565b60006020820190508181036000830152614eba81614e7e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1d6024836142d5565b9150614f2882614ec1565b604082019050919050565b60006020820190508181036000830152614f4c81614f10565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614faf6022836142d5565b9150614fba82614f53565b604082019050919050565b60006020820190508181036000830152614fde81614fa2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150416025836142d5565b915061504c82614fe5565b604082019050919050565b6000602082019050818103600083015261507081615034565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d36023836142d5565b91506150de82615077565b604082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f54726164696e6720686173206e6f7420656e61626c6564207965742e00000000600082015250565b600061513f601c836142d5565b915061514a82615109565b602082019050919050565b6000602082019050818103600083015261516e81615132565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006151d16028836142d5565b91506151dc82615175565b604082019050919050565b60006020820190508181036000830152615200816151c4565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006152636025836142d5565b915061526e82615207565b604082019050919050565b6000602082019050818103600083015261529281615256565b9050919050565b60006152a482614381565b91506152af83614381565b92508282039050818111156152c7576152c6614a0f565b5b92915050565b60006152d882614381565b91506152e383614381565b92508282026152f181614381565b9150828204841483151761530857615307614a0f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061536b6021836142d5565b91506153768261530f565b604082019050919050565b6000602082019050818103600083015261539a8161535e565b9050919050565b60006153ac82614534565b9050919050565b6153bc816153a1565b82525050565b60006020820190506153d760008301846153b3565b92915050565b6000602082840312156153f3576153f261437c565b5b600061540184828501614918565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61549d8161442a565b82525050565b60006154af8383615494565b60208301905092915050565b6000602082019050919050565b60006154d382615468565b6154dd8185615473565b93506154e883615484565b8060005b8381101561551957815161550088826154a3565b975061550b836154bb565b9250506001810190506154ec565b5085935050505092915050565b600060a08201905061553b6000830188614582565b61554860208301876148a8565b818103604083015261555a81866154c8565b905061556960608301856153b3565b6155766080830184614582565b9695505050505050565b60006040820190506155956000830185614582565b81810360208301526155a781846154c8565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208aa0301ebf0064073e5aad4dfd62486f39be5cedcc07d9ab0917d296d5ef10e164736f6c63430008130033

Deployed Bytecode Sourcemap

11661:14544:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21055:79;;;;;;;;;;;;;:::i;:::-;;24263:736;;;:::i;:::-;;14909:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19970:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12223:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16075:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13355:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15186:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19568:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17011:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12754:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20732:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12135:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18995:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15095:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15572:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17736:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17622:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18118:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12888:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13472:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15294:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3338:230;;;;;;;;;;;;;:::i;:::-;;20382:122;;;;;;;;;;;;;:::i;:::-;;13208:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13281:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13010:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12495:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16589:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13605:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12802:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12613:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3113:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15000:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11897:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15798:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18858:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11938:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20557:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12038:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18689:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12712:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13403:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12845:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12554:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18340:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13120:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13509:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12670:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15421:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12436:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18482:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17154:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17507:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16727:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12971:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17397:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3576:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12933:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16872:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13563:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21055:79;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21122:4:::1;21108:11;;:18;;;;;;;;;;;;;;;;;;21055:79::o:0;24263:736::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24316:35:::1;24373:42;24316:100;;24470:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24452:70;;;24531:4;24538:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24452:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24438:11;;:124;;;;;;;;;;;;;;;;;;24591:16;24573:15;;:34;;;;;;;;;;;;;;;;;;24692:1;24683:11;24628;:26;24648:4;24628:26;;;;;;;;;;;;;;;:52;24663:15;;;;;;;;;;;24628:52;;;;;;;;;;;;;;;:66;;;;24745:4;24707:13;:35;24729:11;;;;;;;;;;;24707:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;24804:4;24760:19;:41;24788:11;;;;;;;;;;;24760:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24847:10;24819:17;;:39;;;;;;;;;;;;;;;;;;24871:15;;;;;;;;;;;:31;;;24910:9;24929:4;24935:24;24953:4;24935:9;:24::i;:::-;24960:1;24962::::0;24964:10:::1;24975:15;24871:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24305:694;24263:736::o:0;14909:83::-;14946:13;14979:5;14972:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14909:83;:::o;19970:404::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20092:10:::1;20072:17;:30;;;;20133:10;20113:17;:30;;;;20174:10;20154:17;:30;;;;20216:63;20261:17;;20216:40;20238:17;;20216;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;20195:18;:84;;;;20330:2;20321:8;;:11;;;;:::i;:::-;20298:18;;:35;;20290:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19970:404:::0;;;:::o;12223:81::-;;;:::o;16075:161::-;16150:4;16167:39;16176:12;:10;:12::i;:::-;16190:7;16199:6;16167:8;:39::i;:::-;16224:4;16217:11;;16075:161;;;;:::o;13355:41::-;;;;;;;;;;;;;:::o;15186:100::-;15239:7;15266:12;;15259:19;;15186:100;:::o;19568:394::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19688:10:::1;19669:16;:29;;;;19728:10;19709:16;:29;;;;19768:10;19749:16;:29;;;;19809:60;19852:16;;19809:38;19830:16;;19809;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;19789:17;:80;;;;19919:2;19910:8;;:11;;;;:::i;:::-;19888:17;;:34;;19880:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19568:394:::0;;;:::o;17011:135::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17132:6:::1;17102:19;:27;17122:6;17102:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17011:135:::0;;:::o;12754:35::-;;;;:::o;20732:313::-;20830:4;20847:36;20857:6;20865:9;20876:6;20847:9;:36::i;:::-;;20894:121;20903:6;20911:12;:10;:12::i;:::-;20925:89;20963:6;20925:89;;;;;;;;;;;;;;;;;:11;:19;20937:6;20925:19;;;;;;;;;;;;;;;:33;20945:12;:10;:12::i;:::-;20925:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20894:8;:121::i;:::-;21033:4;21026:11;;20732:313;;;;;:::o;12135:81::-;;;:::o;18995:156::-;19048:7;19075:68;19120:22;19130:11;19120:9;:22::i;:::-;19075:40;19092:22;19102:11;19092:9;:22::i;:::-;19075:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19068:75;;18995:156;:::o;15095:83::-;15136:5;15161:9;;;;;;;;;;;15154:16;;15095:83;:::o;15572:218::-;15660:4;15677:83;15686:12;:10;:12::i;:::-;15700:7;15709:50;15748:10;15709:11;:25;15721:12;:10;:12::i;:::-;15709:25;;;;;;;;;;;;;;;:34;15735:7;15709:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15677:8;:83::i;:::-;15778:4;15771:11;;15572:218;;;;:::o;17736:374::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17839:31:::1;17863:6;17839:19;17856:1;17839:12;;:16;;:19;;;;:::i;:::-;:23;;:31;;;;:::i;:::-;17827:8;:43;;17819:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;17967:28;17991:3;17967:19;17984:1;17967:12;;:16;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;17955:8;:40;;17947:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;18094:8;18068:23;:34;;;;17736:374:::0;:::o;17622:106::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17712:8:::1;17693:16;;:27;;;;;;;;;;;;;;;;;;17622:106:::0;:::o;18118:214::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18235:1:::1;18213:24;;:10;:24;;::::0;18205:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18313:10;18286:16;;:38;;;;;;;;;;;;;;;;;;18118:214:::0;:::o;12888:36::-;;;;:::o;13472:30::-;;;;;;;;;;;;;:::o;15294:119::-;15360:7;15387:9;:18;15397:7;15387:18;;;;;;;;;;;;;;;;15380:25;;15294:119;;;:::o;3338:230::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3445:42:::1;3408:81;;3429:6;::::0;::::1;;;;;;;;3408:81;;;;;;;;;;;;3517:42;3500:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3338:230::o:0;20382:122::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20448:12:::1;;20433;:27;;;;20484:12;;20471:10;:25;;;;20382:122::o:0;13208:60::-;;;;:::o;13281:59::-;;;;:::o;13010:33::-;;;;:::o;12495:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;16589:130::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16703:8:::1;16678:13;:22;16692:7;16678:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16589:130:::0;;:::o;13605:41::-;;;;;;;;;;;;;:::o;12802:36::-;;;;:::o;12613:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3113:79::-;3151:7;3178:6;;;;;;;;;;;3171:13;;3113:79;:::o;15000:87::-;15039:13;15072:7;15065:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15000:87;:::o;11897:32::-;;;;;;;;;;;;;:::o;15798:269::-;15891:4;15908:129;15917:12;:10;:12::i;:::-;15931:7;15940:96;15979:15;15940:96;;;;;;;;;;;;;;;;;:11;:25;15952:12;:10;:12::i;:::-;15940:25;;;;;;;;;;;;;;;:34;15966:7;15940:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15908:8;:129::i;:::-;16055:4;16048:11;;15798:269;;;;:::o;18858:125::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18967:8:::1;18939:25;;:36;;;;;;;;;;;;;;;;;;18858:125:::0;:::o;11938:93::-;;;;;;;;;;;;;:::o;20557:167::-;20635:4;20652:42;20662:12;:10;:12::i;:::-;20676:9;20687:6;20652:9;:42::i;:::-;;20712:4;20705:11;;20557:167;;;;:::o;12038:84::-;;;;;;;;;;;;;:::o;18689:161::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18780:8:::1;18766:11;;:22;;;;;;;;;;;;;;;;;;18804:38;18833:8;18804:38;;;;;;:::i;:::-;;;;;;;;18689:161:::0;:::o;12712:35::-;;;;:::o;13403:26::-;;;;;;;;;;;;;:::o;12845:36::-;;;;:::o;12554:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18340:134::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18455:10:::1;18427:17;;:39;;;;;;;;;;;;;;;;;;18340:134:::0;:::o;13120:70::-;;;;:::o;13509:45::-;;;;;;;;;;;;;:::o;12670:35::-;;;;:::o;15421:143::-;15502:7;15529:11;:18;15541:5;15529:18;;;;;;;;;;;;;;;:27;15548:7;15529:27;;;;;;;;;;;;;;;;15522:34;;15421:143;;;;:::o;12436:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18482:199::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18593:1:::1;18571:24;;:10;:24;;::::0;18563:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18662:10;18644:7;;:29;;;;;;;;;;;;;;;;;;18482:199:::0;:::o;17154:235::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17254:29:::1;17278:4;17254:19;17271:1;17254:12;;:16;;:19;;;;:::i;:::-;:23;;:29;;;;:::i;:::-;17239:11;:44;;17231:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;17370:11;17355:12;:26;;;;17154:235:::0;:::o;17507:107::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17599:7:::1;17574:22;;:32;;;;;;;;;;;;;;;;;;17507:107:::0;:::o;16727:137::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16848:8:::1;16817:19;:28;16837:7;16817:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16727:137:::0;;:::o;12971:32::-;;;;:::o;17397:102::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17483:8:::1;17469:10;:22;;;;17397:102:::0;:::o;3576:244::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3685:1:::1;3665:22;;:8;:22;;::::0;3657:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3775:8;3746:38;;3767:6;::::0;::::1;;;;;;;;3746:38;;;;;;;;;;;;3804:8;3795:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3576:244:::0;:::o;12933:29::-;;;;:::o;16872:127::-;3257:12;:10;:12::i;:::-;3247:22;;:6;;;;;;;;;;:22;;;3239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16985:6:::1;16959:15;:23;16975:6;16959:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16872:127:::0;;:::o;13563:35::-;;;;;;;;;;;;;:::o;323:115::-;376:15;419:10;404:26;;323:115;:::o;1265:181::-;1323:7;1343:9;1359:1;1355;:5;;;;:::i;:::-;1343:17;;1384:1;1379;:6;;1371:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1437:1;1430:8;;;1265:181;;;;:::o;16244:337::-;16354:1;16337:19;;:5;:19;;;16329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16435:1;16416:21;;:7;:21;;;16408:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16519:6;16489:11;:18;16501:5;16489:18;;;;;;;;;;;;;;;:27;16508:7;16489:27;;;;;;;;;;;;;;;:36;;;;16557:7;16541:32;;16550:5;16541:32;;;16566:6;16541:32;;;;;;:::i;:::-;;;;;;;;16244:337;;;:::o;21140:1907::-;21227:4;21270:1;21252:20;;:6;:20;;;21244:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21354:1;21333:23;;:9;:23;;;21325:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21412:19;:27;21432:6;21412:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;21443:19;:30;21463:9;21443:30;;;;;;;;;;;;;;;;;;;;;;;;;21412:61;21409:1631;;;21498:88;21513:6;21521:9;21532:6;21540:33;21555:6;21563:9;21540:14;:33::i;:::-;:45;;21579:6;21540:45;;;21575:1;21540:45;21498:14;:88::i;:::-;21491:95;;;;21409:1631;21628:11;;;;;;;;;;;21620:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21693:15;:23;21709:6;21693:23;;;;;;;;;;;;;;;;;;;;;;;;;21692:24;:55;;;;;21721:15;:26;21737:9;21721:26;;;;;;;;;;;;;;;;;;;;;;;;;21720:27;21692:55;:81;;;;;21751:22;;;;;;;;;;;21692:81;21689:196;;;21812:12;;21802:6;:22;;21794:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21689:196;21901:28;21932:24;21950:4;21932:9;:24::i;:::-;21901:55;;21971:28;22026:23;;22002:20;:47;;21971:78;;22082:23;:44;;;;;22110:16;;;;;;;;;;;22109:17;22082:44;:70;;;;;22131:13;:21;22145:6;22131:21;;;;;;;;;;;;;;;;;;;;;;;;;22130:22;22082:70;:85;;;;;22156:11;;;;;;;;;;;22082:85;22078:296;;;22205:25;;;;;;;;;;;22202:97;;;22276:23;;22253:46;;22202:97;22318:36;22333:20;22318:14;:36::i;:::-;22078:296;22410:53;22432:6;22410:53;;;;;;;;;;;;;;;;;:9;:17;22420:6;22410:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22390:9;:17;22400:6;22390:17;;;;;;;;;;;;;;;:73;;;;22480:19;22503;:27;22523:6;22503:27;;;;;;;;;;;;;;;;;;;;;;;;;:61;;;;22534:19;:30;22554:9;22534:30;;;;;;;;;;;;;;;;;;;;;;;;;22503:61;22502:152;;22620:34;22628:6;22636:9;22647:6;22620:7;:34::i;:::-;22502:152;;;22611:6;22502:152;22480:174;;22674:16;;;;;;;;;;;:51;;;;;22695:19;:30;22715:9;22695:30;;;;;;;;;;;;;;;;;;;;;;;;;22694:31;22674:51;22671:191;;;22795:10;;22754:37;22779:11;22754:20;22764:9;22754;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22746:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22671:191;22901:37;22926:11;22901:9;:20;22911:9;22901:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22878:9;:20;22888:9;22878:20;;;;;;;;;;;;;;;:60;;;;22977:9;22960:40;;22969:6;22960:40;;;22988:11;22960:40;;;;;;:::i;:::-;;;;;;;;23024:4;23017:11;;;;;21140:1907;;;;;;:::o;1598:192::-;1684:7;1717:1;1712;:6;;1720:12;1704:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1744:9;1760:1;1756;:5;;;;:::i;:::-;1744:17;;1781:1;1774:8;;;1598:192;;;;;:::o;1454:136::-;1512:7;1539:43;1543:1;1546;1539:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1532:50;;1454:136;;;;:::o;1798:250::-;1856:7;1885:1;1880;:6;1876:47;;1910:1;1903:8;;;;1876:47;1935:9;1951:1;1947;:5;;;;:::i;:::-;1935:17;;1980:1;1975;1971;:5;;;;:::i;:::-;:10;1963:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2039:1;2032:8;;;1798:250;;;;;:::o;2056:132::-;2114:7;2141:39;2145:1;2148;2141:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2134:46;;2056:132;;;;:::o;19293:263::-;19375:4;19412:11;;;;;;;;;;;19399:24;;:9;:24;;;:63;;;;;19455:7;;;;;;;;;;;19445:17;;:6;:17;;;19399:63;:105;;;;;19502:1;19484:20;;:6;:20;;;;19399:105;:149;;;;;19546:1;19526:22;;:9;:22;;;;19399:149;19392:156;;19293:263;;;;:::o;23784:348::-;23894:4;23931:54;23953:7;23931:54;;;;;;;;;;;;;;;;;:9;:17;23941:6;23931:17;;;;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;23911:9;:17;23921:6;23911:17;;;;;;;;;;;;;;;:74;;;;24019:32;24044:6;24019:9;:20;24029:9;24019:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23996:9;:20;24006:9;23996:20;;;;;;;;;;;;;;;:55;;;;24084:9;24067:35;;24076:6;24067:35;;;24095:6;24067:35;;;;;;:::i;:::-;;;;;;;;24120:4;24113:11;;23784:348;;;;;;:::o;24140:105::-;13899:4;13880:16;;:23;;;;;;;;;;;;;;;;;;24212:25:::1;24229:7;24212:16;:25::i;:::-;13945:5:::0;13926:16;;:24;;;;;;;;;;;;;;;;;;24140:105;:::o;23061:715::-;23147:7;23167:18;23188:4;:14;;;23203:7;;;;;;;;;;;23188:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23167:44;;23222:17;23245:16;23289:13;:21;23303:6;23289:21;;;;;;;;;;;;;;;;;;;;;;;;;23286:249;;;23339:38;23373:3;23339:29;23350:17;;23339:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;23327:50;;23286:249;;;23398:13;:24;23412:9;23398:24;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;23454:1;23426:24;23439:10;23426:8;:12;;:24;;;;:::i;:::-;:29;;23398:57;23395:140;;;23484:39;23519:3;23484:30;23495:18;;23484:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;23472:51;;23395:140;23286:249;23570:1;23558:9;:13;23555:173;;;23615:39;23644:9;23615;:24;23633:4;23615:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;23588:9;:24;23606:4;23588:24;;;;;;;;;;;;;;;:66;;;;23699:4;23674:42;;23683:6;23674:42;;;23706:9;23674:42;;;;;;:::i;:::-;;;;;;;;23555:173;23747:21;23758:9;23747:6;:10;;:21;;;;:::i;:::-;23740:28;;;;;23061:715;;;;;:::o;2196:278::-;2282:7;2314:1;2310;:5;2317:12;2302:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2341:9;2357:1;2353;:5;;;;:::i;:::-;2341:17;;2465:1;2458:8;;;2196:278;;;;;:::o;25005:660::-;25131:21;25169:1;25155:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25131:40;;25200:4;25182;25187:1;25182:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25226:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25216:4;25221:1;25216:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25261:62;25278:4;25293:15;;;;;;;;;;;25311:11;25261:8;:62::i;:::-;25362:15;;;;;;;;;;;:66;;;25443:11;25469:1;25513:4;25532:7;;;;;;;;;;;25570:15;25362:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25622:35;25639:11;25652:4;25622:35;;;;;;;:::i;:::-;;;;;;;;25060:605;25005:660;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:118::-;2978:24;2996:5;2978:24;:::i;:::-;2973:3;2966:37;2891:118;;:::o;3015:222::-;3108:4;3146:2;3135:9;3131:18;3123:26;;3159:71;3227:1;3216:9;3212:17;3203:6;3159:71;:::i;:::-;3015:222;;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:60::-;4451:3;4472:5;4465:12;;4423:60;;;:::o;4489:142::-;4539:9;4572:53;4590:34;4599:24;4617:5;4599:24;:::i;:::-;4590:34;:::i;:::-;4572:53;:::i;:::-;4559:66;;4489:142;;;:::o;4637:126::-;4687:9;4720:37;4751:5;4720:37;:::i;:::-;4707:50;;4637:126;;;:::o;4769:153::-;4846:9;4879:37;4910:5;4879:37;:::i;:::-;4866:50;;4769:153;;;:::o;4928:185::-;5042:64;5100:5;5042:64;:::i;:::-;5037:3;5030:77;4928:185;;:::o;5119:276::-;5239:4;5277:2;5266:9;5262:18;5254:26;;5290:98;5385:1;5374:9;5370:17;5361:6;5290:98;:::i;:::-;5119:276;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:116::-;5823:21;5838:5;5823:21;:::i;:::-;5816:5;5813:32;5803:60;;5859:1;5856;5849:12;5803:60;5753:116;:::o;5875:133::-;5918:5;5956:6;5943:20;5934:29;;5972:30;5996:5;5972:30;:::i;:::-;5875:133;;;;:::o;6014:468::-;6079:6;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:53;6332:7;6323:6;6312:9;6308:22;6287:53;:::i;:::-;6277:63;;6233:117;6389:2;6415:50;6457:7;6448:6;6437:9;6433:22;6415:50;:::i;:::-;6405:60;;6360:115;6014:468;;;;;:::o;6488:619::-;6565:6;6573;6581;6630:2;6618:9;6609:7;6605:23;6601:32;6598:119;;;6636:79;;:::i;:::-;6598:119;6756:1;6781:53;6826:7;6817:6;6806:9;6802:22;6781:53;:::i;:::-;6771:63;;6727:117;6883:2;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6854:118;7011:2;7037:53;7082:7;7073:6;7062:9;7058:22;7037:53;:::i;:::-;7027:63;;6982:118;6488:619;;;;;:::o;7113:86::-;7148:7;7188:4;7181:5;7177:16;7166:27;;7113:86;;;:::o;7205:112::-;7288:22;7304:5;7288:22;:::i;:::-;7283:3;7276:35;7205:112;;:::o;7323:214::-;7412:4;7450:2;7439:9;7435:18;7427:26;;7463:67;7527:1;7516:9;7512:17;7503:6;7463:67;:::i;:::-;7323:214;;;;:::o;7543:329::-;7602:6;7651:2;7639:9;7630:7;7626:23;7622:32;7619:119;;;7657:79;;:::i;:::-;7619:119;7777:1;7802:53;7847:7;7838:6;7827:9;7823:22;7802:53;:::i;:::-;7792:63;;7748:117;7543:329;;;;:::o;7878:323::-;7934:6;7983:2;7971:9;7962:7;7958:23;7954:32;7951:119;;;7989:79;;:::i;:::-;7951:119;8109:1;8134:50;8176:7;8167:6;8156:9;8152:22;8134:50;:::i;:::-;8124:60;;8080:114;7878:323;;;;:::o;8207:329::-;8266:6;8315:2;8303:9;8294:7;8290:23;8286:32;8283:119;;;8321:79;;:::i;:::-;8283:119;8441:1;8466:53;8511:7;8502:6;8491:9;8487:22;8466:53;:::i;:::-;8456:63;;8412:117;8207:329;;;;:::o;8542:104::-;8587:7;8616:24;8634:5;8616:24;:::i;:::-;8605:35;;8542:104;;;:::o;8652:142::-;8755:32;8781:5;8755:32;:::i;:::-;8750:3;8743:45;8652:142;;:::o;8800:254::-;8909:4;8947:2;8936:9;8932:18;8924:26;;8960:87;9044:1;9033:9;9029:17;9020:6;8960:87;:::i;:::-;8800:254;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:182::-;9680:34;9676:1;9668:6;9664:14;9657:58;9540:182;:::o;9728:366::-;9870:3;9891:67;9955:2;9950:3;9891:67;:::i;:::-;9884:74;;9967:93;10056:3;9967:93;:::i;:::-;10085:2;10080:3;10076:12;10069:19;;9728:366;;;:::o;10100:419::-;10266:4;10304:2;10293:9;10289:18;10281:26;;10353:9;10347:4;10343:20;10339:1;10328:9;10324:17;10317:47;10381:131;10507:4;10381:131;:::i;:::-;10373:139;;10100:419;;;:::o;10525:143::-;10582:5;10613:6;10607:13;10598:22;;10629:33;10656:5;10629:33;:::i;:::-;10525:143;;;;:::o;10674:351::-;10744:6;10793:2;10781:9;10772:7;10768:23;10764:32;10761:119;;;10799:79;;:::i;:::-;10761:119;10919:1;10944:64;11000:7;10991:6;10980:9;10976:22;10944:64;:::i;:::-;10934:74;;10890:128;10674:351;;;;:::o;11031:332::-;11152:4;11190:2;11179:9;11175:18;11167:26;;11203:71;11271:1;11260:9;11256:17;11247:6;11203:71;:::i;:::-;11284:72;11352:2;11341:9;11337:18;11328:6;11284:72;:::i;:::-;11031:332;;;;;:::o;11369:85::-;11414:7;11443:5;11432:16;;11369:85;;;:::o;11460:158::-;11518:9;11551:61;11569:42;11578:32;11604:5;11578:32;:::i;:::-;11569:42;:::i;:::-;11551:61;:::i;:::-;11538:74;;11460:158;;;:::o;11624:147::-;11719:45;11758:5;11719:45;:::i;:::-;11714:3;11707:58;11624:147;;:::o;11777:807::-;12026:4;12064:3;12053:9;12049:19;12041:27;;12078:71;12146:1;12135:9;12131:17;12122:6;12078:71;:::i;:::-;12159:72;12227:2;12216:9;12212:18;12203:6;12159:72;:::i;:::-;12241:80;12317:2;12306:9;12302:18;12293:6;12241:80;:::i;:::-;12331;12407:2;12396:9;12392:18;12383:6;12331:80;:::i;:::-;12421:73;12489:3;12478:9;12474:19;12465:6;12421:73;:::i;:::-;12504;12572:3;12561:9;12557:19;12548:6;12504:73;:::i;:::-;11777:807;;;;;;;;;:::o;12590:143::-;12647:5;12678:6;12672:13;12663:22;;12694:33;12721:5;12694:33;:::i;:::-;12590:143;;;;:::o;12739:663::-;12827:6;12835;12843;12892:2;12880:9;12871:7;12867:23;12863:32;12860:119;;;12898:79;;:::i;:::-;12860:119;13018:1;13043:64;13099:7;13090:6;13079:9;13075:22;13043:64;:::i;:::-;13033:74;;12989:128;13156:2;13182:64;13238:7;13229:6;13218:9;13214:22;13182:64;:::i;:::-;13172:74;;13127:129;13295:2;13321:64;13377:7;13368:6;13357:9;13353:22;13321:64;:::i;:::-;13311:74;;13266:129;12739:663;;;;;:::o;13408:180::-;13456:77;13453:1;13446:88;13553:4;13550:1;13543:15;13577:4;13574:1;13567:15;13594:320;13638:6;13675:1;13669:4;13665:12;13655:22;;13722:1;13716:4;13712:12;13743:18;13733:81;;13799:4;13791:6;13787:17;13777:27;;13733:81;13861:2;13853:6;13850:14;13830:18;13827:38;13824:84;;13880:18;;:::i;:::-;13824:84;13645:269;13594:320;;;:::o;13920:180::-;13968:77;13965:1;13958:88;14065:4;14062:1;14055:15;14089:4;14086:1;14079:15;14106:180;14154:77;14151:1;14144:88;14251:4;14248:1;14241:15;14275:4;14272:1;14265:15;14292:185;14332:1;14349:20;14367:1;14349:20;:::i;:::-;14344:25;;14383:20;14401:1;14383:20;:::i;:::-;14378:25;;14422:1;14412:35;;14427:18;;:::i;:::-;14412:35;14469:1;14466;14462:9;14457:14;;14292:185;;;;:::o;14483:178::-;14623:30;14619:1;14611:6;14607:14;14600:54;14483:178;:::o;14667:366::-;14809:3;14830:67;14894:2;14889:3;14830:67;:::i;:::-;14823:74;;14906:93;14995:3;14906:93;:::i;:::-;15024:2;15019:3;15015:12;15008:19;;14667:366;;;:::o;15039:419::-;15205:4;15243:2;15232:9;15228:18;15220:26;;15292:9;15286:4;15282:20;15278:1;15267:9;15263:17;15256:47;15320:131;15446:4;15320:131;:::i;:::-;15312:139;;15039:419;;;:::o;15464:177::-;15604:29;15600:1;15592:6;15588:14;15581:53;15464:177;:::o;15647:366::-;15789:3;15810:67;15874:2;15869:3;15810:67;:::i;:::-;15803:74;;15886:93;15975:3;15886:93;:::i;:::-;16004:2;15999:3;15995:12;15988:19;;15647:366;;;:::o;16019:419::-;16185:4;16223:2;16212:9;16208:18;16200:26;;16272:9;16266:4;16262:20;16258:1;16247:9;16243:17;16236:47;16300:131;16426:4;16300:131;:::i;:::-;16292:139;;16019:419;;;:::o;16444:247::-;16584:34;16580:1;16572:6;16568:14;16561:58;16653:30;16648:2;16640:6;16636:15;16629:55;16444:247;:::o;16697:366::-;16839:3;16860:67;16924:2;16919:3;16860:67;:::i;:::-;16853:74;;16936:93;17025:3;16936:93;:::i;:::-;17054:2;17049:3;17045:12;17038:19;;16697:366;;;:::o;17069:419::-;17235:4;17273:2;17262:9;17258:18;17250:26;;17322:9;17316:4;17312:20;17308:1;17297:9;17293:17;17286:47;17350:131;17476:4;17350:131;:::i;:::-;17342:139;;17069:419;;;:::o;17494:244::-;17634:34;17630:1;17622:6;17618:14;17611:58;17703:27;17698:2;17690:6;17686:15;17679:52;17494:244;:::o;17744:366::-;17886:3;17907:67;17971:2;17966:3;17907:67;:::i;:::-;17900:74;;17983:93;18072:3;17983:93;:::i;:::-;18101:2;18096:3;18092:12;18085:19;;17744:366;;;:::o;18116:419::-;18282:4;18320:2;18309:9;18305:18;18297:26;;18369:9;18363:4;18359:20;18355:1;18344:9;18340:17;18333:47;18397:131;18523:4;18397:131;:::i;:::-;18389:139;;18116:419;;;:::o;18541:221::-;18681:34;18677:1;18669:6;18665:14;18658:58;18750:4;18745:2;18737:6;18733:15;18726:29;18541:221;:::o;18768:366::-;18910:3;18931:67;18995:2;18990:3;18931:67;:::i;:::-;18924:74;;19007:93;19096:3;19007:93;:::i;:::-;19125:2;19120:3;19116:12;19109:19;;18768:366;;;:::o;19140:419::-;19306:4;19344:2;19333:9;19329:18;19321:26;;19393:9;19387:4;19383:20;19379:1;19368:9;19364:17;19357:47;19421:131;19547:4;19421:131;:::i;:::-;19413:139;;19140:419;;;:::o;19565:243::-;19705:34;19701:1;19693:6;19689:14;19682:58;19774:26;19769:2;19761:6;19757:15;19750:51;19565:243;:::o;19814:366::-;19956:3;19977:67;20041:2;20036:3;19977:67;:::i;:::-;19970:74;;20053:93;20142:3;20053:93;:::i;:::-;20171:2;20166:3;20162:12;20155:19;;19814:366;;;:::o;20186:419::-;20352:4;20390:2;20379:9;20375:18;20367:26;;20439:9;20433:4;20429:20;20425:1;20414:9;20410:17;20403:47;20467:131;20593:4;20467:131;:::i;:::-;20459:139;;20186:419;;;:::o;20611:225::-;20751:34;20747:1;20739:6;20735:14;20728:58;20820:8;20815:2;20807:6;20803:15;20796:33;20611:225;:::o;20842:366::-;20984:3;21005:67;21069:2;21064:3;21005:67;:::i;:::-;20998:74;;21081:93;21170:3;21081:93;:::i;:::-;21199:2;21194:3;21190:12;21183:19;;20842:366;;;:::o;21214:419::-;21380:4;21418:2;21407:9;21403:18;21395:26;;21467:9;21461:4;21457:20;21453:1;21442:9;21438:17;21431:47;21495:131;21621:4;21495:131;:::i;:::-;21487:139;;21214:419;;;:::o;21639:191::-;21679:3;21698:20;21716:1;21698:20;:::i;:::-;21693:25;;21732:20;21750:1;21732:20;:::i;:::-;21727:25;;21775:1;21772;21768:9;21761:16;;21796:3;21793:1;21790:10;21787:36;;;21803:18;;:::i;:::-;21787:36;21639:191;;;;:::o;21836:177::-;21976:29;21972:1;21964:6;21960:14;21953:53;21836:177;:::o;22019:366::-;22161:3;22182:67;22246:2;22241:3;22182:67;:::i;:::-;22175:74;;22258:93;22347:3;22258:93;:::i;:::-;22376:2;22371:3;22367:12;22360:19;;22019:366;;;:::o;22391:419::-;22557:4;22595:2;22584:9;22580:18;22572:26;;22644:9;22638:4;22634:20;22630:1;22619:9;22615:17;22608:47;22672:131;22798:4;22672:131;:::i;:::-;22664:139;;22391:419;;;:::o;22816:223::-;22956:34;22952:1;22944:6;22940:14;22933:58;23025:6;23020:2;23012:6;23008:15;23001:31;22816:223;:::o;23045:366::-;23187:3;23208:67;23272:2;23267:3;23208:67;:::i;:::-;23201:74;;23284:93;23373:3;23284:93;:::i;:::-;23402:2;23397:3;23393:12;23386:19;;23045:366;;;:::o;23417:419::-;23583:4;23621:2;23610:9;23606:18;23598:26;;23670:9;23664:4;23660:20;23656:1;23645:9;23641:17;23634:47;23698:131;23824:4;23698:131;:::i;:::-;23690:139;;23417:419;;;:::o;23842:221::-;23982:34;23978:1;23970:6;23966:14;23959:58;24051:4;24046:2;24038:6;24034:15;24027:29;23842:221;:::o;24069:366::-;24211:3;24232:67;24296:2;24291:3;24232:67;:::i;:::-;24225:74;;24308:93;24397:3;24308:93;:::i;:::-;24426:2;24421:3;24417:12;24410:19;;24069:366;;;:::o;24441:419::-;24607:4;24645:2;24634:9;24630:18;24622:26;;24694:9;24688:4;24684:20;24680:1;24669:9;24665:17;24658:47;24722:131;24848:4;24722:131;:::i;:::-;24714:139;;24441:419;;;:::o;24866:224::-;25006:34;25002:1;24994:6;24990:14;24983:58;25075:7;25070:2;25062:6;25058:15;25051:32;24866:224;:::o;25096:366::-;25238:3;25259:67;25323:2;25318:3;25259:67;:::i;:::-;25252:74;;25335:93;25424:3;25335:93;:::i;:::-;25453:2;25448:3;25444:12;25437:19;;25096:366;;;:::o;25468:419::-;25634:4;25672:2;25661:9;25657:18;25649:26;;25721:9;25715:4;25711:20;25707:1;25696:9;25692:17;25685:47;25749:131;25875:4;25749:131;:::i;:::-;25741:139;;25468:419;;;:::o;25893:222::-;26033:34;26029:1;26021:6;26017:14;26010:58;26102:5;26097:2;26089:6;26085:15;26078:30;25893:222;:::o;26121:366::-;26263:3;26284:67;26348:2;26343:3;26284:67;:::i;:::-;26277:74;;26360:93;26449:3;26360:93;:::i;:::-;26478:2;26473:3;26469:12;26462:19;;26121:366;;;:::o;26493:419::-;26659:4;26697:2;26686:9;26682:18;26674:26;;26746:9;26740:4;26736:20;26732:1;26721:9;26717:17;26710:47;26774:131;26900:4;26774:131;:::i;:::-;26766:139;;26493:419;;;:::o;26918:178::-;27058:30;27054:1;27046:6;27042:14;27035:54;26918:178;:::o;27102:366::-;27244:3;27265:67;27329:2;27324:3;27265:67;:::i;:::-;27258:74;;27341:93;27430:3;27341:93;:::i;:::-;27459:2;27454:3;27450:12;27443:19;;27102:366;;;:::o;27474:419::-;27640:4;27678:2;27667:9;27663:18;27655:26;;27727:9;27721:4;27717:20;27713:1;27702:9;27698:17;27691:47;27755:131;27881:4;27755:131;:::i;:::-;27747:139;;27474:419;;;:::o;27899:227::-;28039:34;28035:1;28027:6;28023:14;28016:58;28108:10;28103:2;28095:6;28091:15;28084:35;27899:227;:::o;28132:366::-;28274:3;28295:67;28359:2;28354:3;28295:67;:::i;:::-;28288:74;;28371:93;28460:3;28371:93;:::i;:::-;28489:2;28484:3;28480:12;28473:19;;28132:366;;;:::o;28504:419::-;28670:4;28708:2;28697:9;28693:18;28685:26;;28757:9;28751:4;28747:20;28743:1;28732:9;28728:17;28721:47;28785:131;28911:4;28785:131;:::i;:::-;28777:139;;28504:419;;;:::o;28929:224::-;29069:34;29065:1;29057:6;29053:14;29046:58;29138:7;29133:2;29125:6;29121:15;29114:32;28929:224;:::o;29159:366::-;29301:3;29322:67;29386:2;29381:3;29322:67;:::i;:::-;29315:74;;29398:93;29487:3;29398:93;:::i;:::-;29516:2;29511:3;29507:12;29500:19;;29159:366;;;:::o;29531:419::-;29697:4;29735:2;29724:9;29720:18;29712:26;;29784:9;29778:4;29774:20;29770:1;29759:9;29755:17;29748:47;29812:131;29938:4;29812:131;:::i;:::-;29804:139;;29531:419;;;:::o;29956:194::-;29996:4;30016:20;30034:1;30016:20;:::i;:::-;30011:25;;30050:20;30068:1;30050:20;:::i;:::-;30045:25;;30094:1;30091;30087:9;30079:17;;30118:1;30112:4;30109:11;30106:37;;;30123:18;;:::i;:::-;30106:37;29956:194;;;;:::o;30156:410::-;30196:7;30219:20;30237:1;30219:20;:::i;:::-;30214:25;;30253:20;30271:1;30253:20;:::i;:::-;30248:25;;30308:1;30305;30301:9;30330:30;30348:11;30330:30;:::i;:::-;30319:41;;30509:1;30500:7;30496:15;30493:1;30490:22;30470:1;30463:9;30443:83;30420:139;;30539:18;;:::i;:::-;30420:139;30204:362;30156:410;;;;:::o;30572:220::-;30712:34;30708:1;30700:6;30696:14;30689:58;30781:3;30776:2;30768:6;30764:15;30757:28;30572:220;:::o;30798:366::-;30940:3;30961:67;31025:2;31020:3;30961:67;:::i;:::-;30954:74;;31037:93;31126:3;31037:93;:::i;:::-;31155:2;31150:3;31146:12;31139:19;;30798:366;;;:::o;31170:419::-;31336:4;31374:2;31363:9;31359:18;31351:26;;31423:9;31417:4;31413:20;31409:1;31398:9;31394:17;31387:47;31451:131;31577:4;31451:131;:::i;:::-;31443:139;;31170:419;;;:::o;31595:134::-;31653:9;31686:37;31717:5;31686:37;:::i;:::-;31673:50;;31595:134;;;:::o;31735:147::-;31830:45;31869:5;31830:45;:::i;:::-;31825:3;31818:58;31735:147;;:::o;31888:238::-;31989:4;32027:2;32016:9;32012:18;32004:26;;32040:79;32116:1;32105:9;32101:17;32092:6;32040:79;:::i;:::-;31888:238;;;;:::o;32132:351::-;32202:6;32251:2;32239:9;32230:7;32226:23;32222:32;32219:119;;;32257:79;;:::i;:::-;32219:119;32377:1;32402:64;32458:7;32449:6;32438:9;32434:22;32402:64;:::i;:::-;32392:74;;32348:128;32132:351;;;;:::o;32489:180::-;32537:77;32534:1;32527:88;32634:4;32631:1;32624:15;32658:4;32655:1;32648:15;32675:180;32723:77;32720:1;32713:88;32820:4;32817:1;32810:15;32844:4;32841:1;32834:15;32861:114;32928:6;32962:5;32956:12;32946:22;;32861:114;;;:::o;32981:184::-;33080:11;33114:6;33109:3;33102:19;33154:4;33149:3;33145:14;33130:29;;32981:184;;;;:::o;33171:132::-;33238:4;33261:3;33253:11;;33291:4;33286:3;33282:14;33274:22;;33171:132;;;:::o;33309:108::-;33386:24;33404:5;33386:24;:::i;:::-;33381:3;33374:37;33309:108;;:::o;33423:179::-;33492:10;33513:46;33555:3;33547:6;33513:46;:::i;:::-;33591:4;33586:3;33582:14;33568:28;;33423:179;;;;:::o;33608:113::-;33678:4;33710;33705:3;33701:14;33693:22;;33608:113;;;:::o;33757:732::-;33876:3;33905:54;33953:5;33905:54;:::i;:::-;33975:86;34054:6;34049:3;33975:86;:::i;:::-;33968:93;;34085:56;34135:5;34085:56;:::i;:::-;34164:7;34195:1;34180:284;34205:6;34202:1;34199:13;34180:284;;;34281:6;34275:13;34308:63;34367:3;34352:13;34308:63;:::i;:::-;34301:70;;34394:60;34447:6;34394:60;:::i;:::-;34384:70;;34240:224;34227:1;34224;34220:9;34215:14;;34180:284;;;34184:14;34480:3;34473:10;;33881:608;;;33757:732;;;;:::o;34495:847::-;34766:4;34804:3;34793:9;34789:19;34781:27;;34818:71;34886:1;34875:9;34871:17;34862:6;34818:71;:::i;:::-;34899:80;34975:2;34964:9;34960:18;34951:6;34899:80;:::i;:::-;35026:9;35020:4;35016:20;35011:2;35000:9;34996:18;34989:48;35054:108;35157:4;35148:6;35054:108;:::i;:::-;35046:116;;35172:80;35248:2;35237:9;35233:18;35224:6;35172:80;:::i;:::-;35262:73;35330:3;35319:9;35315:19;35306:6;35262:73;:::i;:::-;34495:847;;;;;;;;:::o;35348:483::-;35519:4;35557:2;35546:9;35542:18;35534:26;;35570:71;35638:1;35627:9;35623:17;35614:6;35570:71;:::i;:::-;35688:9;35682:4;35678:20;35673:2;35662:9;35658:18;35651:48;35716:108;35819:4;35810:6;35716:108;:::i;:::-;35708:116;;35348:483;;;;;:::o

Swarm Source

ipfs://8aa0301ebf0064073e5aad4dfd62486f39be5cedcc07d9ab0917d296d5ef10e1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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