Token

SuperSonic3 (SUPERSONIC3)

Overview

Max Total Supply

1,000,000,000 SUPERSONIC3

Holders

4

Market

Price

-

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
998,030,046.942314663364302995 SUPERSONIC3

Value
$0.00
0x30ecc3cf7a0742880066fc085978d7dffcd46236
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
SuperSonic3

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2024-12-20
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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


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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

    function WETH() external pure returns (address);

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

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

contract SuperSonic3 is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;

    address public devWallet;
    address public teamWallet;

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

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

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

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

	uint256 public tokensForLiquidity;
    uint256 public tokensForMarketing;

    uint256 public tradeCount;
    uint256[] public tradeFeeLevels = [5, 4, 3, 2, 1, 0]; 
    uint256[] public tradeCounts = [20, 40, 60, 80, 100, 120]; 

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor() ERC20("SuperSonic3", "SUPERSONIC3") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x591cf6942c422fA53E8D81c62a9692D7BeA72F61
        );

        _isExcludedFromMaxTx[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _isExcludedFromMaxTx[address(uniswapV2Pair)] = true;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyLiquidityFee = getCurrentFee();
        uint256 _buyMarketingFee = getCurrentFee();

        uint256 _sellLiquidityFee = getCurrentFee();
        uint256 _sellMarketingFee = getCurrentFee();

        uint256 totalSupply = 1000000000 * 1e18;

        maxTransactionAmount = 200 * 1e7 * 1e18; //2 %
        maxWallet = 200 * 1e7 * 1e18; //2%
        swapTokensAtAmount = (totalSupply * 10) / 1000; 

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

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

        devWallet = address(0xE9D391f4BB923FABA9585E60B0d83cA1474Da5a5); 
        teamWallet = address(0xE9D391f4BB923FABA9585E60B0d83cA1474Da5a5);

         

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrade() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function updateFees(uint256 _buyLiquidityFee,uint256 _buyMarketingFee,uint256 _sellLiquidityFee,uint256 _sellMarketingFee) external onlyOwner {
        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFees = buyLiquidityFee + buyMarketingFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellTotalFees = sellLiquidityFee + sellMarketingFee;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = 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() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }
	
    function excludeFromMaxTransaction(address updAds, bool isEx)
        external
        onlyOwner
    {
        _isExcludedFromMaxTx[updAds] = isEx;
    }

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {


            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;                
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;

            tradeCount += 1;
        }

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

      function getCurrentFee() public view returns (uint256) {
        if (tradeCount < tradeCounts[0]) return tradeFeeLevels[0]; 
        if (tradeCount < tradeCounts[1]) return tradeFeeLevels[1]; 
        if (tradeCount < tradeCounts[2]) return tradeFeeLevels[2]; 
        if (tradeCount < tradeCounts[3]) return tradeFeeLevels[3]; 
        if (tradeCount < tradeCounts[4]) return tradeFeeLevels[4]; 
        if (tradeCount < tradeCounts[5]) return tradeFeeLevels[5]; 

        return tradeFeeLevels[5];
                                        
    }

    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
            devWallet,
            block.timestamp
        );
    }

    function setDevWallet(address wallet) external onlyOwner {
        devWallet = wallet; 
    }

    function setTeamWallet(address wallet) external onlyOwner {
        teamWallet = wallet; 
    }

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

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

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

        // Halve the amount of liquidity tokens
       
        uint256 amountToSwapForETH = contractBalance;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;
	
        uint256 ethForMarketing = ethBalance * tokensForMarketing / totalTokensToSwap;

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (ethForLiquidity > 0) {

            (success, ) = address(teamWallet).call{value: ethForLiquidity}("");
           
        }

           if (ethForMarketing > 0) {

            (success, ) = address(devWallet).call{value: ethForMarketing}("");
           
        }
        //there will be no leftover eth in the contract 
        (success, ) = address(devWallet).call{value: address(this).balance}("");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrade","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":[],"name":"getCurrentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setTeamWallet","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":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"tradeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tradeCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tradeFeeLevels","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":[{"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":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"}],"name":"updateFees","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"}]

60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506040518060c00160405280600560ff168152602001600460ff168152602001600360ff168152602001600260ff168152602001600160ff168152602001600060ff168152506015906006620000ac92919062000e23565b506040518060c00160405280601460ff168152602001602860ff168152602001603c60ff168152602001605060ff168152602001606460ff168152602001607860ff1681525060169060066200010492919062000e23565b503480156200011257600080fd5b506040518060400160405280600b81526020017f5375706572536f6e6963330000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f5355504552534f4e494333000000000000000000000000000000000000000000815250816003908162000190919062001113565b508060049081620001a2919062001113565b505050620001c5620001b96200079360201b60201c565b6200079b60201b60201c565b600073591cf6942c422fa53e8d81c62a9692d7bea72f6190506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc919062001264565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062001264565b6040518363ffffffff1660e01b815260040162000389929190620012a7565b6020604051808303816000875af1158015620003a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cf919062001264565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060016018600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200047160a05160016200086160201b60201c565b6000620004836200090260201b60201c565b90506000620004976200090260201b60201c565b90506000620004ab6200090260201b60201c565b90506000620004bf6200090260201b60201c565b905060006b033b2e3c9fd0803ce800000090506b06765c793fa10079d00000006008819055506b06765c793fa10079d0000000600a819055506103e8600a826200050a919062001303565b6200051691906200137d565b60098190555084600d8190555083600e81905550600e54600d546200053c9190620013b5565b600c819055508260108190555081601181905550601154601054620005629190620013b5565b600f8190555073e9d391f4bb923faba9585e60b0d83ca1474da5a5600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9d391f4bb923faba9585e60b0d83ca1474da5a5600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006346200062662000b3d60201b60201c565b600162000b6760201b60201c565b6200064730600162000b6760201b60201c565b6200065c61dead600162000b6760201b60201c565b6001601860006200067262000b3d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000787338262000ca160201b60201c565b5050505050506200157c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600060166000815481106200091c576200091b620013f0565b5b906000526020600020015460145410156200095c576015600081548110620009495762000948620013f0565b5b9060005260206000200154905062000b3a565b6016600181548110620009745762000973620013f0565b5b90600052602060002001546014541015620009b4576015600181548110620009a157620009a0620013f0565b5b9060005260206000200154905062000b3a565b6016600281548110620009cc57620009cb620013f0565b5b9060005260206000200154601454101562000a0c576015600281548110620009f957620009f8620013f0565b5b9060005260206000200154905062000b3a565b601660038154811062000a245762000a23620013f0565b5b9060005260206000200154601454101562000a6457601560038154811062000a515762000a50620013f0565b5b9060005260206000200154905062000b3a565b601660048154811062000a7c5762000a7b620013f0565b5b9060005260206000200154601454101562000abc57601560048154811062000aa95762000aa8620013f0565b5b9060005260206000200154905062000b3a565b601660058154811062000ad45762000ad3620013f0565b5b9060005260206000200154601454101562000b1457601560058154811062000b015762000b00620013f0565b5b9060005260206000200154905062000b3a565b601560058154811062000b2c5762000b2b620013f0565b5b906000526020600020015490505b90565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000b776200079360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000b9d62000b3d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bed9062001480565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000c959190620014bf565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d0a906200152c565b60405180910390fd5b62000d276000838362000e1960201b60201c565b806002600082825462000d3b9190620013b5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d929190620013b5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000df991906200155f565b60405180910390a362000e156000838362000e1e60201b60201c565b5050565b505050565b505050565b82805482825590600052602060002090810192821562000e67579160200282015b8281111562000e66578251829060ff1690559160200191906001019062000e44565b5b50905062000e76919062000e7a565b5090565b5b8082111562000e9557600081600090555060010162000e7b565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f1b57607f821691505b60208210810362000f315762000f3062000ed3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f5c565b62000fa7868362000f5c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ff462000fee62000fe88462000fbf565b62000fc9565b62000fbf565b9050919050565b6000819050919050565b620010108362000fd3565b620010286200101f8262000ffb565b84845462000f69565b825550505050565b600090565b6200103f62001030565b6200104c81848462001005565b505050565b5b8181101562001074576200106860008262001035565b60018101905062001052565b5050565b601f821115620010c3576200108d8162000f37565b620010988462000f4c565b81016020851015620010a8578190505b620010c0620010b78562000f4c565b83018262001051565b50505b505050565b600082821c905092915050565b6000620010e860001984600802620010c8565b1980831691505092915050565b6000620011038383620010d5565b9150826002028217905092915050565b6200111e8262000e99565b67ffffffffffffffff8111156200113a576200113962000ea4565b5b62001146825462000f02565b6200115382828562001078565b600060209050601f8311600181146200118b576000841562001176578287015190505b620011828582620010f5565b865550620011f2565b601f1984166200119b8662000f37565b60005b82811015620011c5578489015182556001820191506020850194506020810190506200119e565b86831015620011e55784890151620011e1601f891682620010d5565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200122c82620011ff565b9050919050565b6200123e816200121f565b81146200124a57600080fd5b50565b6000815190506200125e8162001233565b92915050565b6000602082840312156200127d576200127c620011fa565b5b60006200128d848285016200124d565b91505092915050565b620012a1816200121f565b82525050565b6000604082019050620012be600083018562001296565b620012cd602083018462001296565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013108262000fbf565b91506200131d8362000fbf565b92508282026200132d8162000fbf565b91508282048414831517620013475762001346620012d4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200138a8262000fbf565b9150620013978362000fbf565b925082620013aa57620013a96200134e565b5b828204905092915050565b6000620013c28262000fbf565b9150620013cf8362000fbf565b9250828201905080821115620013ea57620013e9620012d4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620014686020836200141f565b9150620014758262001430565b602082019050919050565b600060208201905081810360008301526200149b8162001459565b9050919050565b60008115159050919050565b620014b981620014a2565b82525050565b6000602082019050620014d66000830184620014ae565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001514601f836200141f565b91506200152182620014dc565b602082019050919050565b60006020820190508181036000830152620015478162001505565b9050919050565b620015598162000fbf565b82525050565b60006020820190506200157660008301846200154e565b92915050565b60805160a05161451c620015be600039600081816110bb01526115d1015260008181610df001528181613215015281816132f6015261331d015261451c6000f3fe6080604052600436106102b15760003560e01c80637bce5a0411610175578063c0246668116100dc578063e2f4560511610095578063f30678ba1161006f578063f30678ba14610aec578063f637434214610b29578063f70d936214610b54578063f8b45b0514610b7f576102b8565b8063e2f4560514610a6d578063f11a24d314610a98578063f2fde38b14610ac3576102b8565b8063c02466681461094b578063c6616ba114610974578063c8c8ebe41461099d578063d257b34f146109c8578063d85ba06314610a05578063dd62ed3e14610a30576102b8565b80639a7a23d61161012e5780639a7a23d614610815578063a457c2d71461083e578063a9059cbb1461087b578063b62496f5146108b8578063bbc0c742146108f5578063bd55022a14610920576102b8565b80637bce5a04146107155780638da5cb5b146107405780638ea5220f1461076b5780639213691314610796578063924de9b7146107c157806395d89b41146107ea576102b8565b8063313ce567116102195780636a486a8e116101d25780636a486a8e146106175780636ddd17131461064257806370a082311461066d578063715018a6146106aa578063751039fc146106c15780637571336a146106ec576102b8565b8063313ce567146104f1578063395093511461051c57806349bd5a5e146105595780634a62bb65146105845780634fbee193146105af57806359927044146105ec576102b8565b806318160ddd1161026b57806318160ddd146103cd5780631a8145bb146103f85780631f3fed8f146104235780631f53ac021461044e57806323b872dd1461047757806326a2a72d146104b4576102b8565b806299d386146102bd57806306fdde03146102d457806307866291146102ff578063095ea7b31461033c5780631525ff7d146103795780631694505e146103a2576102b8565b366102b857005b600080fd5b3480156102c957600080fd5b506102d2610baa565b005b3480156102e057600080fd5b506102e9610c5e565b6040516102f69190613443565b60405180910390f35b34801561030b57600080fd5b50610326600480360381019061032191906134c8565b610cf0565b6040516103339190613510565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613561565b610d10565b6040516103709190613510565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906134c8565b610d2e565b005b3480156103ae57600080fd5b506103b7610dee565b6040516103c49190613600565b60405180910390f35b3480156103d957600080fd5b506103e2610e12565b6040516103ef919061362a565b60405180910390f35b34801561040457600080fd5b5061040d610e1c565b60405161041a919061362a565b60405180910390f35b34801561042f57600080fd5b50610438610e22565b604051610445919061362a565b60405180910390f35b34801561045a57600080fd5b50610475600480360381019061047091906134c8565b610e28565b005b34801561048357600080fd5b5061049e60048036038101906104999190613645565b610ee8565b6040516104ab9190613510565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613698565b610fe0565b6040516104e8919061362a565b60405180910390f35b3480156104fd57600080fd5b50610506611004565b60405161051391906136e1565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613561565b61100d565b6040516105509190613510565b60405180910390f35b34801561056557600080fd5b5061056e6110b9565b60405161057b919061370b565b60405180910390f35b34801561059057600080fd5b506105996110dd565b6040516105a69190613510565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d191906134c8565b6110f0565b6040516105e39190613510565b60405180910390f35b3480156105f857600080fd5b50610601611146565b60405161060e919061370b565b60405180910390f35b34801561062357600080fd5b5061062c61116c565b604051610639919061362a565b60405180910390f35b34801561064e57600080fd5b50610657611172565b6040516106649190613510565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f91906134c8565b611185565b6040516106a1919061362a565b60405180910390f35b3480156106b657600080fd5b506106bf6111cd565b005b3480156106cd57600080fd5b506106d6611255565b6040516106e39190613510565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190613752565b6112f5565b005b34801561072157600080fd5b5061072a6113cc565b604051610737919061362a565b60405180910390f35b34801561074c57600080fd5b506107556113d2565b604051610762919061370b565b60405180910390f35b34801561077757600080fd5b506107806113fc565b60405161078d919061370b565b60405180910390f35b3480156107a257600080fd5b506107ab611422565b6040516107b8919061362a565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190613792565b611428565b005b3480156107f657600080fd5b506107ff6114c1565b60405161080c9190613443565b60405180910390f35b34801561082157600080fd5b5061083c60048036038101906108379190613752565b611553565b005b34801561084a57600080fd5b5061086560048036038101906108609190613561565b61166b565b6040516108729190613510565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d9190613561565b611756565b6040516108af9190613510565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da91906134c8565b611774565b6040516108ec9190613510565b60405180910390f35b34801561090157600080fd5b5061090a611794565b6040516109179190613510565b60405180910390f35b34801561092c57600080fd5b506109356117a7565b604051610942919061362a565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613752565b6117ad565b005b34801561098057600080fd5b5061099b600480360381019061099691906137bf565b6118d2565b005b3480156109a957600080fd5b506109b261199c565b6040516109bf919061362a565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea9190613698565b6119a2565b6040516109fc9190613510565b60405180910390f35b348015610a1157600080fd5b50610a1a611af7565b604051610a27919061362a565b60405180910390f35b348015610a3c57600080fd5b50610a576004803603810190610a529190613826565b611afd565b604051610a64919061362a565b60405180910390f35b348015610a7957600080fd5b50610a82611b84565b604051610a8f919061362a565b60405180910390f35b348015610aa457600080fd5b50610aad611b8a565b604051610aba919061362a565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae591906134c8565b611b90565b005b348015610af857600080fd5b50610b136004803603810190610b0e9190613698565b611c87565b604051610b20919061362a565b60405180910390f35b348015610b3557600080fd5b50610b3e611cab565b604051610b4b919061362a565b60405180910390f35b348015610b6057600080fd5b50610b69611cb1565b604051610b76919061362a565b60405180910390f35b348015610b8b57600080fd5b50610b94611eb9565b604051610ba1919061362a565b60405180910390f35b610bb2611ebf565b73ffffffffffffffffffffffffffffffffffffffff16610bd06113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906138b2565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b606060038054610c6d90613901565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9990613901565b8015610ce65780601f10610cbb57610100808354040283529160200191610ce6565b820191906000526020600020905b815481529060010190602001808311610cc957829003601f168201915b5050505050905090565b60186020528060005260406000206000915054906101000a900460ff1681565b6000610d24610d1d611ebf565b8484611ec7565b6001905092915050565b610d36611ebf565b73ffffffffffffffffffffffffffffffffffffffff16610d546113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da1906138b2565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60125481565b60135481565b610e30611ebf565b73ffffffffffffffffffffffffffffffffffffffff16610e4e6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b906138b2565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610ef5848484612090565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f40611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb7906139a4565b60405180910390fd5b610fd485610fcc611ebf565b858403611ec7565b60019150509392505050565b60158181548110610ff057600080fd5b906000526020600020016000915090505481565b60006012905090565b60006110af61101a611ebf565b848460016000611028611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa91906139f3565b611ec7565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d5611ebf565b73ffffffffffffffffffffffffffffffffffffffff166111f36113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611240906138b2565b60405180910390fd5b6112536000612af7565b565b600061125f611ebf565b73ffffffffffffffffffffffffffffffffffffffff1661127d6113d2565b73ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca906138b2565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6112fd611ebf565b73ffffffffffffffffffffffffffffffffffffffff1661131b6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611368906138b2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b611430611ebf565b73ffffffffffffffffffffffffffffffffffffffff1661144e6113d2565b73ffffffffffffffffffffffffffffffffffffffff16146114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b906138b2565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546114d090613901565b80601f01602080910402602001604051908101604052809291908181526020018280546114fc90613901565b80156115495780601f1061151e57610100808354040283529160200191611549565b820191906000526020600020905b81548152906001019060200180831161152c57829003601f168201915b5050505050905090565b61155b611ebf565b73ffffffffffffffffffffffffffffffffffffffff166115796113d2565b73ffffffffffffffffffffffffffffffffffffffff16146115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c6906138b2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613a99565b60405180910390fd5b6116678282612bbd565b5050565b6000806001600061167a611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90613b2b565b60405180910390fd5b61174b611742611ebf565b85858403611ec7565b600191505092915050565b600061176a611763611ebf565b8484612090565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b60145481565b6117b5611ebf565b73ffffffffffffffffffffffffffffffffffffffff166117d36113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906138b2565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118c69190613510565b60405180910390a25050565b6118da611ebf565b73ffffffffffffffffffffffffffffffffffffffff166118f86113d2565b73ffffffffffffffffffffffffffffffffffffffff161461194e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611945906138b2565b60405180910390fd5b83600d8190555082600e81905550600e54600d5461196c91906139f3565b600c81905550816010819055508060118190555060115460105461199091906139f3565b600f8190555050505050565b60085481565b60006119ac611ebf565b73ffffffffffffffffffffffffffffffffffffffff166119ca6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a17906138b2565b60405180910390fd5b620186a06001611a2e610e12565b611a389190613b4b565b611a429190613bbc565b821015611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90613c5f565b60405180910390fd5b6103e86005611a91610e12565b611a9b9190613b4b565b611aa59190613bbc565b821115611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613cf1565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600d5481565b611b98611ebf565b73ffffffffffffffffffffffffffffffffffffffff16611bb66113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c03906138b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290613d83565b60405180910390fd5b611c8481612af7565b50565b60168181548110611c9757600080fd5b906000526020600020016000915090505481565b60105481565b60006016600081548110611cc857611cc7613da3565b5b90600052602060002001546014541015611d03576015600081548110611cf157611cf0613da3565b5b90600052602060002001549050611eb6565b6016600181548110611d1857611d17613da3565b5b90600052602060002001546014541015611d53576015600181548110611d4157611d40613da3565b5b90600052602060002001549050611eb6565b6016600281548110611d6857611d67613da3565b5b90600052602060002001546014541015611da3576015600281548110611d9157611d90613da3565b5b90600052602060002001549050611eb6565b6016600381548110611db857611db7613da3565b5b90600052602060002001546014541015611df3576015600381548110611de157611de0613da3565b5b90600052602060002001549050611eb6565b6016600481548110611e0857611e07613da3565b5b90600052602060002001546014541015611e43576015600481548110611e3157611e30613da3565b5b90600052602060002001549050611eb6565b6016600581548110611e5857611e57613da3565b5b90600052602060002001546014541015611e93576015600581548110611e8157611e80613da3565b5b90600052602060002001549050611eb6565b6015600581548110611ea857611ea7613da3565b5b906000526020600020015490505b90565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90613e44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613ed6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612083919061362a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613f68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590613ffa565b60405180910390fd5b600081036121875761218283836000612c5e565b612af2565b600b60009054906101000a900460ff1615612682576121a46113d2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561221257506121e26113d2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561224b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612285575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561229e5750600560149054906101000a900460ff16155b1561268157600b60019054906101000a900460ff1661239857601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123585750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90614066565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561243b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e257600854811115612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c906140f8565b60405180910390fd5b600a5461249183611185565b8261249c91906139f3565b11156124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490614164565b60405180910390fd5b612680565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125855750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125d4576008548111156125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c6906141f6565b60405180910390fd5b61267f565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661267e57600a5461263183611185565b8261263c91906139f3565b111561267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267490614164565b60405180910390fd5b5b5b5b5b5b600061268d30611185565b9050600060095482101590508080156126b25750600b60029054906101000a900460ff165b80156126cb5750600560149054906101000a900460ff16155b80156127215750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127775750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127cd5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612811576001600560146101000a81548160ff0219169083151502179055506127f5612edd565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128c75750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d157600090505b60008115612ae257601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561293457506000600f54115b156129c0576064600f54866129499190613b4b565b6129539190613bbc565b9050600f54601054826129669190613b4b565b6129709190613bbc565b6012600082825461298191906139f3565b92505081905550600f54601154826129999190613b4b565b6129a39190613bbc565b601360008282546129b491906139f3565b92505081905550612aa4565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a1b57506000600c54115b15612aa3576064600c5486612a309190613b4b565b612a3a9190613bbc565b9050600c54600d5482612a4d9190613b4b565b612a579190613bbc565b60126000828254612a6891906139f3565b92505081905550600c54600e5482612a809190613b4b565b612a8a9190613bbc565b60136000828254612a9b91906139f3565b925050819055505b5b6000811115612ab957612ab8873083612c5e565b5b8085612ac59190614216565b9450600160146000828254612ada91906139f3565b925050819055505b612aed878787612c5e565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc490613f68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3390613ffa565b60405180910390fd5b612d4783838361316c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc4906142bc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e6091906139f3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ec4919061362a565b60405180910390a3612ed7848484613171565b50505050565b6000612ee830611185565b90506000601354601254612efc91906139f3565b9050600080831480612f0e5750600082145b15612f1b5750505061316a565b6014600954612f2a9190613b4b565b831115612f43576014600954612f409190613b4b565b92505b60008390506000479050612f5682613176565b60008147612f649190614216565b905060008560135483612f779190613b4b565b612f819190613bbc565b905060008183612f919190614216565b905060006012819055506000601381905550600081111561303b57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612ff29061430d565b60006040518083038185875af1925050503d806000811461302f576040519150601f19603f3d011682016040523d82523d6000602084013e613034565b606091505b5050809650505b60008211156130d357600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161308a9061430d565b60006040518083038185875af1925050503d80600081146130c7576040519150601f19603f3d011682016040523d82523d6000602084013e6130cc565b606091505b5050809650505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516131199061430d565b60006040518083038185875af1925050503d8060008114613156576040519150601f19603f3d011682016040523d82523d6000602084013e61315b565b606091505b50508096505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561319357613192614322565b5b6040519080825280602002602001820160405280156131c15781602001602082028036833780820191505090505b50905030816000815181106131d9576131d8613da3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a29190614366565b816001815181106132b6576132b5613da3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061331b307f000000000000000000000000000000000000000000000000000000000000000084611ec7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161337d95949392919061448c565b600060405180830381600087803b15801561339757600080fd5b505af11580156133ab573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133ed5780820151818401526020810190506133d2565b60008484015250505050565b6000601f19601f8301169050919050565b6000613415826133b3565b61341f81856133be565b935061342f8185602086016133cf565b613438816133f9565b840191505092915050565b6000602082019050818103600083015261345d818461340a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134958261346a565b9050919050565b6134a58161348a565b81146134b057600080fd5b50565b6000813590506134c28161349c565b92915050565b6000602082840312156134de576134dd613465565b5b60006134ec848285016134b3565b91505092915050565b60008115159050919050565b61350a816134f5565b82525050565b60006020820190506135256000830184613501565b92915050565b6000819050919050565b61353e8161352b565b811461354957600080fd5b50565b60008135905061355b81613535565b92915050565b6000806040838503121561357857613577613465565b5b6000613586858286016134b3565b92505060206135978582860161354c565b9150509250929050565b6000819050919050565b60006135c66135c16135bc8461346a565b6135a1565b61346a565b9050919050565b60006135d8826135ab565b9050919050565b60006135ea826135cd565b9050919050565b6135fa816135df565b82525050565b600060208201905061361560008301846135f1565b92915050565b6136248161352b565b82525050565b600060208201905061363f600083018461361b565b92915050565b60008060006060848603121561365e5761365d613465565b5b600061366c868287016134b3565b935050602061367d868287016134b3565b925050604061368e8682870161354c565b9150509250925092565b6000602082840312156136ae576136ad613465565b5b60006136bc8482850161354c565b91505092915050565b600060ff82169050919050565b6136db816136c5565b82525050565b60006020820190506136f660008301846136d2565b92915050565b6137058161348a565b82525050565b600060208201905061372060008301846136fc565b92915050565b61372f816134f5565b811461373a57600080fd5b50565b60008135905061374c81613726565b92915050565b6000806040838503121561376957613768613465565b5b6000613777858286016134b3565b92505060206137888582860161373d565b9150509250929050565b6000602082840312156137a8576137a7613465565b5b60006137b68482850161373d565b91505092915050565b600080600080608085870312156137d9576137d8613465565b5b60006137e78782880161354c565b94505060206137f88782880161354c565b93505060406138098782880161354c565b925050606061381a8782880161354c565b91505092959194509250565b6000806040838503121561383d5761383c613465565b5b600061384b858286016134b3565b925050602061385c858286016134b3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061389c6020836133be565b91506138a782613866565b602082019050919050565b600060208201905081810360008301526138cb8161388f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061391957607f821691505b60208210810361392c5761392b6138d2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061398e6028836133be565b915061399982613932565b604082019050919050565b600060208201905081810360008301526139bd81613981565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139fe8261352b565b9150613a098361352b565b9250828201905080821115613a2157613a206139c4565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613a836039836133be565b9150613a8e82613a27565b604082019050919050565b60006020820190508181036000830152613ab281613a76565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613b156025836133be565b9150613b2082613ab9565b604082019050919050565b60006020820190508181036000830152613b4481613b08565b9050919050565b6000613b568261352b565b9150613b618361352b565b9250828202613b6f8161352b565b91508282048414831517613b8657613b856139c4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bc78261352b565b9150613bd28361352b565b925082613be257613be1613b8d565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613c496035836133be565b9150613c5482613bed565b604082019050919050565b60006020820190508181036000830152613c7881613c3c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613cdb6034836133be565b9150613ce682613c7f565b604082019050919050565b60006020820190508181036000830152613d0a81613cce565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d6d6026836133be565b9150613d7882613d11565b604082019050919050565b60006020820190508181036000830152613d9c81613d60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e2e6024836133be565b9150613e3982613dd2565b604082019050919050565b60006020820190508181036000830152613e5d81613e21565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ec06022836133be565b9150613ecb82613e64565b604082019050919050565b60006020820190508181036000830152613eef81613eb3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f526025836133be565b9150613f5d82613ef6565b604082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fe46023836133be565b9150613fef82613f88565b604082019050919050565b6000602082019050818103600083015261401381613fd7565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140506016836133be565b915061405b8261401a565b602082019050919050565b6000602082019050818103600083015261407f81614043565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006140e26035836133be565b91506140ed82614086565b604082019050919050565b60006020820190508181036000830152614111816140d5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061414e6013836133be565b915061415982614118565b602082019050919050565b6000602082019050818103600083015261417d81614141565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006141e06036836133be565b91506141eb82614184565b604082019050919050565b6000602082019050818103600083015261420f816141d3565b9050919050565b60006142218261352b565b915061422c8361352b565b9250828203905081811115614244576142436139c4565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142a66026836133be565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b600081905092915050565b50565b60006142f76000836142dc565b9150614302826142e7565b600082019050919050565b6000614318826142ea565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506143608161349c565b92915050565b60006020828403121561437c5761437b613465565b5b600061438a84828501614351565b91505092915050565b6000819050919050565b60006143b86143b36143ae84614393565b6135a1565b61352b565b9050919050565b6143c88161439d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144038161348a565b82525050565b600061441583836143fa565b60208301905092915050565b6000602082019050919050565b6000614439826143ce565b61444381856143d9565b935061444e836143ea565b8060005b8381101561447f5781516144668882614409565b975061447183614421565b925050600181019050614452565b5085935050505092915050565b600060a0820190506144a1600083018861361b565b6144ae60208301876143bf565b81810360408301526144c0818661442e565b90506144cf60608301856136fc565b6144dc608083018461361b565b969550505050505056fea2646970667358221220d8d1a7a201996436bb0f2a1f1f7073cde39827b0f9bc24c0262311630f07c9da64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102b15760003560e01c80637bce5a0411610175578063c0246668116100dc578063e2f4560511610095578063f30678ba1161006f578063f30678ba14610aec578063f637434214610b29578063f70d936214610b54578063f8b45b0514610b7f576102b8565b8063e2f4560514610a6d578063f11a24d314610a98578063f2fde38b14610ac3576102b8565b8063c02466681461094b578063c6616ba114610974578063c8c8ebe41461099d578063d257b34f146109c8578063d85ba06314610a05578063dd62ed3e14610a30576102b8565b80639a7a23d61161012e5780639a7a23d614610815578063a457c2d71461083e578063a9059cbb1461087b578063b62496f5146108b8578063bbc0c742146108f5578063bd55022a14610920576102b8565b80637bce5a04146107155780638da5cb5b146107405780638ea5220f1461076b5780639213691314610796578063924de9b7146107c157806395d89b41146107ea576102b8565b8063313ce567116102195780636a486a8e116101d25780636a486a8e146106175780636ddd17131461064257806370a082311461066d578063715018a6146106aa578063751039fc146106c15780637571336a146106ec576102b8565b8063313ce567146104f1578063395093511461051c57806349bd5a5e146105595780634a62bb65146105845780634fbee193146105af57806359927044146105ec576102b8565b806318160ddd1161026b57806318160ddd146103cd5780631a8145bb146103f85780631f3fed8f146104235780631f53ac021461044e57806323b872dd1461047757806326a2a72d146104b4576102b8565b806299d386146102bd57806306fdde03146102d457806307866291146102ff578063095ea7b31461033c5780631525ff7d146103795780631694505e146103a2576102b8565b366102b857005b600080fd5b3480156102c957600080fd5b506102d2610baa565b005b3480156102e057600080fd5b506102e9610c5e565b6040516102f69190613443565b60405180910390f35b34801561030b57600080fd5b50610326600480360381019061032191906134c8565b610cf0565b6040516103339190613510565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190613561565b610d10565b6040516103709190613510565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b91906134c8565b610d2e565b005b3480156103ae57600080fd5b506103b7610dee565b6040516103c49190613600565b60405180910390f35b3480156103d957600080fd5b506103e2610e12565b6040516103ef919061362a565b60405180910390f35b34801561040457600080fd5b5061040d610e1c565b60405161041a919061362a565b60405180910390f35b34801561042f57600080fd5b50610438610e22565b604051610445919061362a565b60405180910390f35b34801561045a57600080fd5b50610475600480360381019061047091906134c8565b610e28565b005b34801561048357600080fd5b5061049e60048036038101906104999190613645565b610ee8565b6040516104ab9190613510565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613698565b610fe0565b6040516104e8919061362a565b60405180910390f35b3480156104fd57600080fd5b50610506611004565b60405161051391906136e1565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190613561565b61100d565b6040516105509190613510565b60405180910390f35b34801561056557600080fd5b5061056e6110b9565b60405161057b919061370b565b60405180910390f35b34801561059057600080fd5b506105996110dd565b6040516105a69190613510565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d191906134c8565b6110f0565b6040516105e39190613510565b60405180910390f35b3480156105f857600080fd5b50610601611146565b60405161060e919061370b565b60405180910390f35b34801561062357600080fd5b5061062c61116c565b604051610639919061362a565b60405180910390f35b34801561064e57600080fd5b50610657611172565b6040516106649190613510565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f91906134c8565b611185565b6040516106a1919061362a565b60405180910390f35b3480156106b657600080fd5b506106bf6111cd565b005b3480156106cd57600080fd5b506106d6611255565b6040516106e39190613510565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190613752565b6112f5565b005b34801561072157600080fd5b5061072a6113cc565b604051610737919061362a565b60405180910390f35b34801561074c57600080fd5b506107556113d2565b604051610762919061370b565b60405180910390f35b34801561077757600080fd5b506107806113fc565b60405161078d919061370b565b60405180910390f35b3480156107a257600080fd5b506107ab611422565b6040516107b8919061362a565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190613792565b611428565b005b3480156107f657600080fd5b506107ff6114c1565b60405161080c9190613443565b60405180910390f35b34801561082157600080fd5b5061083c60048036038101906108379190613752565b611553565b005b34801561084a57600080fd5b5061086560048036038101906108609190613561565b61166b565b6040516108729190613510565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d9190613561565b611756565b6040516108af9190613510565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da91906134c8565b611774565b6040516108ec9190613510565b60405180910390f35b34801561090157600080fd5b5061090a611794565b6040516109179190613510565b60405180910390f35b34801561092c57600080fd5b506109356117a7565b604051610942919061362a565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613752565b6117ad565b005b34801561098057600080fd5b5061099b600480360381019061099691906137bf565b6118d2565b005b3480156109a957600080fd5b506109b261199c565b6040516109bf919061362a565b60405180910390f35b3480156109d457600080fd5b506109ef60048036038101906109ea9190613698565b6119a2565b6040516109fc9190613510565b60405180910390f35b348015610a1157600080fd5b50610a1a611af7565b604051610a27919061362a565b60405180910390f35b348015610a3c57600080fd5b50610a576004803603810190610a529190613826565b611afd565b604051610a64919061362a565b60405180910390f35b348015610a7957600080fd5b50610a82611b84565b604051610a8f919061362a565b60405180910390f35b348015610aa457600080fd5b50610aad611b8a565b604051610aba919061362a565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae591906134c8565b611b90565b005b348015610af857600080fd5b50610b136004803603810190610b0e9190613698565b611c87565b604051610b20919061362a565b60405180910390f35b348015610b3557600080fd5b50610b3e611cab565b604051610b4b919061362a565b60405180910390f35b348015610b6057600080fd5b50610b69611cb1565b604051610b76919061362a565b60405180910390f35b348015610b8b57600080fd5b50610b94611eb9565b604051610ba1919061362a565b60405180910390f35b610bb2611ebf565b73ffffffffffffffffffffffffffffffffffffffff16610bd06113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906138b2565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b606060038054610c6d90613901565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9990613901565b8015610ce65780601f10610cbb57610100808354040283529160200191610ce6565b820191906000526020600020905b815481529060010190602001808311610cc957829003601f168201915b5050505050905090565b60186020528060005260406000206000915054906101000a900460ff1681565b6000610d24610d1d611ebf565b8484611ec7565b6001905092915050565b610d36611ebf565b73ffffffffffffffffffffffffffffffffffffffff16610d546113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da1906138b2565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000591cf6942c422fa53e8d81c62a9692d7bea72f6181565b6000600254905090565b60125481565b60135481565b610e30611ebf565b73ffffffffffffffffffffffffffffffffffffffff16610e4e6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b906138b2565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610ef5848484612090565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f40611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb7906139a4565b60405180910390fd5b610fd485610fcc611ebf565b858403611ec7565b60019150509392505050565b60158181548110610ff057600080fd5b906000526020600020016000915090505481565b60006012905090565b60006110af61101a611ebf565b848460016000611028611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa91906139f3565b611ec7565b6001905092915050565b7f0000000000000000000000007f0f8bf776dc8ec824053ab9d366029e40d6190c81565b600b60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111d5611ebf565b73ffffffffffffffffffffffffffffffffffffffff166111f36113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611240906138b2565b60405180910390fd5b6112536000612af7565b565b600061125f611ebf565b73ffffffffffffffffffffffffffffffffffffffff1661127d6113d2565b73ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca906138b2565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6112fd611ebf565b73ffffffffffffffffffffffffffffffffffffffff1661131b6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611371576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611368906138b2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b611430611ebf565b73ffffffffffffffffffffffffffffffffffffffff1661144e6113d2565b73ffffffffffffffffffffffffffffffffffffffff16146114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b906138b2565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546114d090613901565b80601f01602080910402602001604051908101604052809291908181526020018280546114fc90613901565b80156115495780601f1061151e57610100808354040283529160200191611549565b820191906000526020600020905b81548152906001019060200180831161152c57829003601f168201915b5050505050905090565b61155b611ebf565b73ffffffffffffffffffffffffffffffffffffffff166115796113d2565b73ffffffffffffffffffffffffffffffffffffffff16146115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c6906138b2565b60405180910390fd5b7f0000000000000000000000007f0f8bf776dc8ec824053ab9d366029e40d6190c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613a99565b60405180910390fd5b6116678282612bbd565b5050565b6000806001600061167a611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90613b2b565b60405180910390fd5b61174b611742611ebf565b85858403611ec7565b600191505092915050565b600061176a611763611ebf565b8484612090565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b60145481565b6117b5611ebf565b73ffffffffffffffffffffffffffffffffffffffff166117d36113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906138b2565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118c69190613510565b60405180910390a25050565b6118da611ebf565b73ffffffffffffffffffffffffffffffffffffffff166118f86113d2565b73ffffffffffffffffffffffffffffffffffffffff161461194e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611945906138b2565b60405180910390fd5b83600d8190555082600e81905550600e54600d5461196c91906139f3565b600c81905550816010819055508060118190555060115460105461199091906139f3565b600f8190555050505050565b60085481565b60006119ac611ebf565b73ffffffffffffffffffffffffffffffffffffffff166119ca6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a17906138b2565b60405180910390fd5b620186a06001611a2e610e12565b611a389190613b4b565b611a429190613bbc565b821015611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90613c5f565b60405180910390fd5b6103e86005611a91610e12565b611a9b9190613b4b565b611aa59190613bbc565b821115611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613cf1565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600d5481565b611b98611ebf565b73ffffffffffffffffffffffffffffffffffffffff16611bb66113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c03906138b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290613d83565b60405180910390fd5b611c8481612af7565b50565b60168181548110611c9757600080fd5b906000526020600020016000915090505481565b60105481565b60006016600081548110611cc857611cc7613da3565b5b90600052602060002001546014541015611d03576015600081548110611cf157611cf0613da3565b5b90600052602060002001549050611eb6565b6016600181548110611d1857611d17613da3565b5b90600052602060002001546014541015611d53576015600181548110611d4157611d40613da3565b5b90600052602060002001549050611eb6565b6016600281548110611d6857611d67613da3565b5b90600052602060002001546014541015611da3576015600281548110611d9157611d90613da3565b5b90600052602060002001549050611eb6565b6016600381548110611db857611db7613da3565b5b90600052602060002001546014541015611df3576015600381548110611de157611de0613da3565b5b90600052602060002001549050611eb6565b6016600481548110611e0857611e07613da3565b5b90600052602060002001546014541015611e43576015600481548110611e3157611e30613da3565b5b90600052602060002001549050611eb6565b6016600581548110611e5857611e57613da3565b5b90600052602060002001546014541015611e93576015600581548110611e8157611e80613da3565b5b90600052602060002001549050611eb6565b6015600581548110611ea857611ea7613da3565b5b906000526020600020015490505b90565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90613e44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613ed6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612083919061362a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613f68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590613ffa565b60405180910390fd5b600081036121875761218283836000612c5e565b612af2565b600b60009054906101000a900460ff1615612682576121a46113d2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561221257506121e26113d2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561224b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612285575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561229e5750600560149054906101000a900460ff16155b1561268157600b60019054906101000a900460ff1661239857601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123585750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238e90614066565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561243b5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e257600854811115612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c906140f8565b60405180910390fd5b600a5461249183611185565b8261249c91906139f3565b11156124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490614164565b60405180910390fd5b612680565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125855750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125d4576008548111156125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c6906141f6565b60405180910390fd5b61267f565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661267e57600a5461263183611185565b8261263c91906139f3565b111561267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267490614164565b60405180910390fd5b5b5b5b5b5b600061268d30611185565b9050600060095482101590508080156126b25750600b60029054906101000a900460ff165b80156126cb5750600560149054906101000a900460ff16155b80156127215750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127775750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127cd5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612811576001600560146101000a81548160ff0219169083151502179055506127f5612edd565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128c75750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d157600090505b60008115612ae257601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561293457506000600f54115b156129c0576064600f54866129499190613b4b565b6129539190613bbc565b9050600f54601054826129669190613b4b565b6129709190613bbc565b6012600082825461298191906139f3565b92505081905550600f54601154826129999190613b4b565b6129a39190613bbc565b601360008282546129b491906139f3565b92505081905550612aa4565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a1b57506000600c54115b15612aa3576064600c5486612a309190613b4b565b612a3a9190613bbc565b9050600c54600d5482612a4d9190613b4b565b612a579190613bbc565b60126000828254612a6891906139f3565b92505081905550600c54600e5482612a809190613b4b565b612a8a9190613bbc565b60136000828254612a9b91906139f3565b925050819055505b5b6000811115612ab957612ab8873083612c5e565b5b8085612ac59190614216565b9450600160146000828254612ada91906139f3565b925050819055505b612aed878787612c5e565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc490613f68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3390613ffa565b60405180910390fd5b612d4783838361316c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc4906142bc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e6091906139f3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ec4919061362a565b60405180910390a3612ed7848484613171565b50505050565b6000612ee830611185565b90506000601354601254612efc91906139f3565b9050600080831480612f0e5750600082145b15612f1b5750505061316a565b6014600954612f2a9190613b4b565b831115612f43576014600954612f409190613b4b565b92505b60008390506000479050612f5682613176565b60008147612f649190614216565b905060008560135483612f779190613b4b565b612f819190613bbc565b905060008183612f919190614216565b905060006012819055506000601381905550600081111561303b57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612ff29061430d565b60006040518083038185875af1925050503d806000811461302f576040519150601f19603f3d011682016040523d82523d6000602084013e613034565b606091505b5050809650505b60008211156130d357600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161308a9061430d565b60006040518083038185875af1925050503d80600081146130c7576040519150601f19603f3d011682016040523d82523d6000602084013e6130cc565b606091505b5050809650505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516131199061430d565b60006040518083038185875af1925050503d8060008114613156576040519150601f19603f3d011682016040523d82523d6000602084013e61315b565b606091505b50508096505050505050505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561319357613192614322565b5b6040519080825280602002602001820160405280156131c15781602001602082028036833780820191505090505b50905030816000815181106131d9576131d8613da3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000591cf6942c422fa53e8d81c62a9692d7bea72f6173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a29190614366565b816001815181106132b6576132b5613da3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061331b307f000000000000000000000000591cf6942c422fa53e8d81c62a9692d7bea72f6184611ec7565b7f000000000000000000000000591cf6942c422fa53e8d81c62a9692d7bea72f6173ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161337d95949392919061448c565b600060405180830381600087803b15801561339757600080fd5b505af11580156133ab573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133ed5780820151818401526020810190506133d2565b60008484015250505050565b6000601f19601f8301169050919050565b6000613415826133b3565b61341f81856133be565b935061342f8185602086016133cf565b613438816133f9565b840191505092915050565b6000602082019050818103600083015261345d818461340a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134958261346a565b9050919050565b6134a58161348a565b81146134b057600080fd5b50565b6000813590506134c28161349c565b92915050565b6000602082840312156134de576134dd613465565b5b60006134ec848285016134b3565b91505092915050565b60008115159050919050565b61350a816134f5565b82525050565b60006020820190506135256000830184613501565b92915050565b6000819050919050565b61353e8161352b565b811461354957600080fd5b50565b60008135905061355b81613535565b92915050565b6000806040838503121561357857613577613465565b5b6000613586858286016134b3565b92505060206135978582860161354c565b9150509250929050565b6000819050919050565b60006135c66135c16135bc8461346a565b6135a1565b61346a565b9050919050565b60006135d8826135ab565b9050919050565b60006135ea826135cd565b9050919050565b6135fa816135df565b82525050565b600060208201905061361560008301846135f1565b92915050565b6136248161352b565b82525050565b600060208201905061363f600083018461361b565b92915050565b60008060006060848603121561365e5761365d613465565b5b600061366c868287016134b3565b935050602061367d868287016134b3565b925050604061368e8682870161354c565b9150509250925092565b6000602082840312156136ae576136ad613465565b5b60006136bc8482850161354c565b91505092915050565b600060ff82169050919050565b6136db816136c5565b82525050565b60006020820190506136f660008301846136d2565b92915050565b6137058161348a565b82525050565b600060208201905061372060008301846136fc565b92915050565b61372f816134f5565b811461373a57600080fd5b50565b60008135905061374c81613726565b92915050565b6000806040838503121561376957613768613465565b5b6000613777858286016134b3565b92505060206137888582860161373d565b9150509250929050565b6000602082840312156137a8576137a7613465565b5b60006137b68482850161373d565b91505092915050565b600080600080608085870312156137d9576137d8613465565b5b60006137e78782880161354c565b94505060206137f88782880161354c565b93505060406138098782880161354c565b925050606061381a8782880161354c565b91505092959194509250565b6000806040838503121561383d5761383c613465565b5b600061384b858286016134b3565b925050602061385c858286016134b3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061389c6020836133be565b91506138a782613866565b602082019050919050565b600060208201905081810360008301526138cb8161388f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061391957607f821691505b60208210810361392c5761392b6138d2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061398e6028836133be565b915061399982613932565b604082019050919050565b600060208201905081810360008301526139bd81613981565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139fe8261352b565b9150613a098361352b565b9250828201905080821115613a2157613a206139c4565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613a836039836133be565b9150613a8e82613a27565b604082019050919050565b60006020820190508181036000830152613ab281613a76565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613b156025836133be565b9150613b2082613ab9565b604082019050919050565b60006020820190508181036000830152613b4481613b08565b9050919050565b6000613b568261352b565b9150613b618361352b565b9250828202613b6f8161352b565b91508282048414831517613b8657613b856139c4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bc78261352b565b9150613bd28361352b565b925082613be257613be1613b8d565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613c496035836133be565b9150613c5482613bed565b604082019050919050565b60006020820190508181036000830152613c7881613c3c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613cdb6034836133be565b9150613ce682613c7f565b604082019050919050565b60006020820190508181036000830152613d0a81613cce565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d6d6026836133be565b9150613d7882613d11565b604082019050919050565b60006020820190508181036000830152613d9c81613d60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e2e6024836133be565b9150613e3982613dd2565b604082019050919050565b60006020820190508181036000830152613e5d81613e21565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ec06022836133be565b9150613ecb82613e64565b604082019050919050565b60006020820190508181036000830152613eef81613eb3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f526025836133be565b9150613f5d82613ef6565b604082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fe46023836133be565b9150613fef82613f88565b604082019050919050565b6000602082019050818103600083015261401381613fd7565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140506016836133be565b915061405b8261401a565b602082019050919050565b6000602082019050818103600083015261407f81614043565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006140e26035836133be565b91506140ed82614086565b604082019050919050565b60006020820190508181036000830152614111816140d5565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061414e6013836133be565b915061415982614118565b602082019050919050565b6000602082019050818103600083015261417d81614141565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006141e06036836133be565b91506141eb82614184565b604082019050919050565b6000602082019050818103600083015261420f816141d3565b9050919050565b60006142218261352b565b915061422c8361352b565b9250828203905081811115614244576142436139c4565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142a66026836133be565b91506142b18261424a565b604082019050919050565b600060208201905081810360008301526142d581614299565b9050919050565b600081905092915050565b50565b60006142f76000836142dc565b9150614302826142e7565b600082019050919050565b6000614318826142ea565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506143608161349c565b92915050565b60006020828403121561437c5761437b613465565b5b600061438a84828501614351565b91505092915050565b6000819050919050565b60006143b86143b36143ae84614393565b6135a1565b61352b565b9050919050565b6143c88161439d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144038161348a565b82525050565b600061441583836143fa565b60208301905092915050565b6000602082019050919050565b6000614439826143ce565b61444381856143d9565b935061444e836143ea565b8060005b8381101561447f5781516144668882614409565b975061447183614421565b925050600181019050614452565b5085935050505092915050565b600060a0820190506144a1600083018861361b565b6144ae60208301876143bf565b81810360408301526144c0818661442e565b90506144cf60608301856136fc565b6144dc608083018461361b565b969550505050505056fea2646970667358221220d8d1a7a201996436bb0f2a1f1f7073cde39827b0f9bc24c0262311630f07c9da64736f6c63430008120033

Deployed Bytecode Sourcemap

8151:13200:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11752:110;;;;;;;;;;;;;:::i;:::-;;2624:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9205:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3538:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19860:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8197:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2945:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8852:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8892;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19757:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3715:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8966:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2844:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4215:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8255:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8512:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14136:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8363:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8742:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8592:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3061:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;772:103;;;;;;;;;;;;;:::i;:::-;;12379:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13076:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8703:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;549:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8332:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8815:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13330:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2732:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13628:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4438:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3196:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9415:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8552:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8934:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13438:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11870:457;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8397:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12570:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8632:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3379:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8439:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8666:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;883:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9026:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8777:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18073:556;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8479:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11752:110;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11821:4:::1;11805:13;;:20;;;;;;;;;;;;;;;;;;11850:4;11836:11;;:18;;;;;;;;;;;;;;;;;;11752:110::o:0;2624:100::-;2678:13;2711:5;2704:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2624:100;:::o;9205:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;3538:169::-;3621:4;3638:39;3647:12;:10;:12::i;:::-;3661:7;3670:6;3638:8;:39::i;:::-;3695:4;3688:11;;3538:169;;;;:::o;19860:97::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19942:6:::1;19929:10;;:19;;;;;;;;;;;;;;;;;;19860:97:::0;:::o;8197:51::-;;;:::o;2945:108::-;3006:7;3033:12;;3026:19;;2945:108;:::o;8852:33::-;;;;:::o;8892:::-;;;;:::o;19757:95::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19837:6:::1;19825:9;;:18;;;;;;;;;;;;;;;;;;19757:95:::0;:::o;3715:492::-;3855:4;3872:36;3882:6;3890:9;3901:6;3872:9;:36::i;:::-;3921:24;3948:11;:19;3960:6;3948:19;;;;;;;;;;;;;;;:33;3968:12;:10;:12::i;:::-;3948:33;;;;;;;;;;;;;;;;3921:60;;4020:6;4000:16;:26;;3992:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4107:57;4116:6;4124:12;:10;:12::i;:::-;4157:6;4138:16;:25;4107:8;:57::i;:::-;4195:4;4188:11;;;3715:492;;;;;:::o;8966:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2844:93::-;2902:5;2927:2;2920:9;;2844:93;:::o;4215:215::-;4303:4;4320:80;4329:12;:10;:12::i;:::-;4343:7;4389:10;4352:11;:25;4364:12;:10;:12::i;:::-;4352:25;;;;;;;;;;;;;;;:34;4378:7;4352:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4320:8;:80::i;:::-;4418:4;4411:11;;4215:215;;;;:::o;8255:38::-;;;:::o;8512:33::-;;;;;;;;;;;;;:::o;14136:126::-;14202:4;14226:19;:28;14246:7;14226:28;;;;;;;;;;;;;;;;;;;;;;;;;14219:35;;14136:126;;;:::o;8363:25::-;;;;;;;;;;;;;:::o;8742:28::-;;;;:::o;8592:31::-;;;;;;;;;;;;;:::o;3061:127::-;3135:7;3162:9;:18;3172:7;3162:18;;;;;;;;;;;;;;;;3155:25;;3061:127;;;:::o;772:103::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;837:30:::1;864:1;837:18;:30::i;:::-;772:103::o:0;12379:121::-;12431:4;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12465:5:::1;12448:14;;:22;;;;;;;;;;;;;;;;;;12488:4;12481:11;;12379:121:::0;:::o;13076:158::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13222:4:::1;13191:20;:28;13212:6;13191:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;13076:158:::0;;:::o;8703:30::-;;;;:::o;549:87::-;595:7;622:6;;;;;;;;;;;615:13;;549:87;:::o;8332:24::-;;;;;;;;;;;;;:::o;8815:31::-;;;;:::o;13330:100::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13415:7:::1;13401:11;;:21;;;;;;;;;;;;;;;;;;13330:100:::0;:::o;2732:104::-;2788:13;2821:7;2814:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2732:104;:::o;13628:304::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13772:13:::1;13764:21;;:4;:21;;::::0;13742:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13883:41;13912:4;13918:5;13883:28;:41::i;:::-;13628:304:::0;;:::o;4438:413::-;4531:4;4548:24;4575:11;:25;4587:12;:10;:12::i;:::-;4575:25;;;;;;;;;;;;;;;:34;4601:7;4575:34;;;;;;;;;;;;;;;;4548:61;;4648:15;4628:16;:35;;4620:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4741:67;4750:12;:10;:12::i;:::-;4764:7;4792:15;4773:16;:34;4741:8;:67::i;:::-;4839:4;4832:11;;;4438:413;;;;:::o;3196:175::-;3282:4;3299:42;3309:12;:10;:12::i;:::-;3323:9;3334:6;3299:9;:42::i;:::-;3359:4;3352:11;;3196:175;;;;:::o;9415:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;8552:33::-;;;;;;;;;;;;;:::o;8934:25::-;;;;:::o;13438:182::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13554:8:::1;13523:19;:28;13543:7;13523:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13594:7;13578:34;;;13603:8;13578:34;;;;;;:::i;:::-;;;;;;;;13438:182:::0;;:::o;11870:457::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12041:16:::1;12023:15;:34;;;;12086:16;12068:15;:34;;;;12146:15;;12128;;:33;;;;:::i;:::-;12113:12;:48;;;;12193:17;12174:16;:36;;;;12240:17;12221:16;:36;;;;12303:16;;12284;;:35;;;;:::i;:::-;12268:13;:51;;;;11870:457:::0;;;;:::o;8397:35::-;;;;:::o;12570:497::-;12678:4;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12757:6:::1;12752:1;12736:13;:11;:13::i;:::-;:17;;;;:::i;:::-;12735:28;;;;:::i;:::-;12722:9;:41;;12700:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;12912:4;12907:1;12891:13;:11;:13::i;:::-;:17;;;;:::i;:::-;12890:26;;;;:::i;:::-;12877:9;:39;;12855:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;13028:9;13007:18;:30;;;;13055:4;13048:11;;12570:497:::0;;;:::o;8632:27::-;;;;:::o;3379:151::-;3468:7;3495:11;:18;3507:5;3495:18;;;;;;;;;;;;;;;:27;3514:7;3495:27;;;;;;;;;;;;;;;;3488:34;;3379:151;;;;:::o;8439:33::-;;;;:::o;8666:30::-;;;;:::o;883:201::-;695:12;:10;:12::i;:::-;684:23;;:7;:5;:7::i;:::-;:23;;;676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;992:1:::1;972:22;;:8;:22;;::::0;964:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1048:28;1067:8;1048:18;:28::i;:::-;883:201:::0;:::o;9026:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8777:31::-;;;;:::o;18073:556::-;18119:7;18156:11;18168:1;18156:14;;;;;;;;:::i;:::-;;;;;;;;;;18143:10;;:27;18139:57;;;18179:14;18194:1;18179:17;;;;;;;;:::i;:::-;;;;;;;;;;18172:24;;;;18139:57;18225:11;18237:1;18225:14;;;;;;;;:::i;:::-;;;;;;;;;;18212:10;;:27;18208:57;;;18248:14;18263:1;18248:17;;;;;;;;:::i;:::-;;;;;;;;;;18241:24;;;;18208:57;18294:11;18306:1;18294:14;;;;;;;;:::i;:::-;;;;;;;;;;18281:10;;:27;18277:57;;;18317:14;18332:1;18317:17;;;;;;;;:::i;:::-;;;;;;;;;;18310:24;;;;18277:57;18363:11;18375:1;18363:14;;;;;;;;:::i;:::-;;;;;;;;;;18350:10;;:27;18346:57;;;18386:14;18401:1;18386:17;;;;;;;;:::i;:::-;;;;;;;;;;18379:24;;;;18346:57;18432:11;18444:1;18432:14;;;;;;;;:::i;:::-;;;;;;;;;;18419:10;;:27;18415:57;;;18455:14;18470:1;18455:17;;;;;;;;:::i;:::-;;;;;;;;;;18448:24;;;;18415:57;18501:11;18513:1;18501:14;;;;;;;;:::i;:::-;;;;;;;;;;18488:10;;:27;18484:57;;;18524:14;18539:1;18524:17;;;;;;;;:::i;:::-;;;;;;;;;;18517:24;;;;18484:57;18562:14;18577:1;18562:17;;;;;;;;:::i;:::-;;;;;;;;;;18555:24;;18073:556;;:::o;8479:24::-;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;6606:380::-;6759:1;6742:19;;:5;:19;;;6734:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6840:1;6821:21;;:7;:21;;;6813:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6924:6;6894:11;:18;6906:5;6894:18;;;;;;;;;;;;;;;:27;6913:7;6894:27;;;;;;;;;;;;;;;:36;;;;6962:7;6946:32;;6955:5;6946:32;;;6971:6;6946:32;;;;;;:::i;:::-;;;;;;;;6606:380;;;:::o;14270:3793::-;14418:1;14402:18;;:4;:18;;;14394:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14495:1;14481:16;;:2;:16;;;14473:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14564:1;14554:6;:11;14550:93;;14582:28;14598:4;14604:2;14608:1;14582:15;:28::i;:::-;14625:7;;14550:93;14659:14;;;;;;;;;;;14655:1661;;;14720:7;:5;:7::i;:::-;14712:15;;:4;:15;;;;:49;;;;;14754:7;:5;:7::i;:::-;14748:13;;:2;:13;;;;14712:49;:86;;;;;14796:1;14782:16;;:2;:16;;;;14712:86;:128;;;;;14833:6;14819:21;;:2;:21;;;;14712:128;:158;;;;;14862:8;;;;;;;;;;;14861:9;14712:158;14690:1615;;;14910:13;;;;;;;;;;;14905:223;;14982:19;:25;15002:4;14982:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15011:19;:23;15031:2;15011:23;;;;;;;;;;;;;;;;;;;;;;;;;14982:52;14948:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;14905:223;15202:25;:31;15228:4;15202:31;;;;;;;;;;;;;;;;;;;;;;;;;:81;;;;;15259:20;:24;15280:2;15259:24;;;;;;;;;;;;;;;;;;;;;;;;;15258:25;15202:81;15176:1114;;;15370:20;;15360:6;:30;;15326:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;15578:9;;15561:13;15571:2;15561:9;:13::i;:::-;15552:6;:22;;;;:::i;:::-;:35;;15518:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;15176:1114;;;15756:25;:29;15782:2;15756:29;;;;;;;;;;;;;;;;;;;;;;;;;:81;;;;;15811:20;:26;15832:4;15811:26;;;;;;;;;;;;;;;;;;;;;;;;;15810:27;15756:81;15730:560;;;15924:20;;15914:6;:30;;15880:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;15730:560;;;16081:20;:24;16102:2;16081:24;;;;;;;;;;;;;;;;;;;;;;;;;16076:214;;16190:9;;16173:13;16183:2;16173:9;:13::i;:::-;16164:6;:22;;;;:::i;:::-;:35;;16130:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16076:214;15730:560;15176:1114;14690:1615;14655:1661;16328:28;16359:24;16377:4;16359:9;:24::i;:::-;16328:55;;16396:12;16435:18;;16411:20;:42;;16396:57;;16484:7;:35;;;;;16508:11;;;;;;;;;;;16484:35;:61;;;;;16537:8;;;;;;;;;;;16536:9;16484:61;:110;;;;;16563:25;:31;16589:4;16563:31;;;;;;;;;;;;;;;;;;;;;;;;;16562:32;16484:110;:153;;;;;16612:19;:25;16632:4;16612:25;;;;;;;;;;;;;;;;;;;;;;;;;16611:26;16484:153;:194;;;;;16655:19;:23;16675:2;16655:23;;;;;;;;;;;;;;;;;;;;;;;;;16654:24;16484:194;16466:326;;;16716:4;16705:8;;:15;;;;;;;;;;;;;;;;;;16737:10;:8;:10::i;:::-;16775:5;16764:8;;:16;;;;;;;;;;;;;;;;;;16466:326;16804:12;16820:8;;;;;;;;;;;16819:9;16804:24;;16930:19;:25;16950:4;16930:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16959:19;:23;16979:2;16959:23;;;;;;;;;;;;;;;;;;;;;;;;;16930:52;16926:100;;;17009:5;16999:15;;16926:100;17038:12;17143:7;17139:871;;;17199:25;:29;17225:2;17199:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17248:1;17232:13;;:17;17199:50;17195:634;;;17302:3;17286:13;;17277:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;17270:35;;17374:13;;17354:16;;17347:4;:23;;;;:::i;:::-;17346:41;;;;:::i;:::-;17324:18;;:63;;;;;;;:::i;:::-;;;;;;;;17456:13;;17436:16;;17429:4;:23;;;;:::i;:::-;17428:41;;;;:::i;:::-;17406:18;;:63;;;;;;;:::i;:::-;;;;;;;;17195:634;;;17547:25;:31;17573:4;17547:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17597:1;17582:12;;:16;17547:51;17543:286;;;17650:3;17635:12;;17626:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17619:34;;17721:12;;17702:15;;17695:4;:22;;;;:::i;:::-;17694:39;;;;:::i;:::-;17672:18;;:61;;;;;;;:::i;:::-;;;;;;;;17801:12;;17782:15;;17775:4;:22;;;;:::i;:::-;17774:39;;;;:::i;:::-;17752:18;;:61;;;;;;;:::i;:::-;;;;;;;;17543:286;17195:634;17856:1;17849:4;:8;17845:91;;;17878:42;17894:4;17908;17915;17878:15;:42::i;:::-;17845:91;17962:4;17952:14;;;;;:::i;:::-;;;17997:1;17983:10;;:15;;;;;;;:::i;:::-;;;;;;;;17139:871;18022:33;18038:4;18044:2;18048:6;18022:15;:33::i;:::-;14383:3680;;;;14270:3793;;;;:::o;1090:191::-;1164:16;1183:6;;;;;;;;;;;1164:25;;1209:8;1200:6;;:17;;;;;;;;;;;;;;;;;;1264:8;1233:40;;1254:8;1233:40;;;;;;;;;;;;1153:128;1090:191;:::o;13940:188::-;14057:5;14023:25;:31;14049:4;14023:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14114:5;14080:40;;14108:4;14080:40;;;;;;;;;;;;13940:188;;:::o;4859:733::-;5017:1;4999:20;;:6;:20;;;4991:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5101:1;5080:23;;:9;:23;;;5072:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5156:47;5177:6;5185:9;5196:6;5156:20;:47::i;:::-;5216:21;5240:9;:17;5250:6;5240:17;;;;;;;;;;;;;;;;5216:41;;5293:6;5276:13;:23;;5268:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5414:6;5398:13;:22;5378:9;:17;5388:6;5378:17;;;;;;;;;;;;;;;:42;;;;5466:6;5442:9;:20;5452:9;5442:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5507:9;5490:35;;5499:6;5490:35;;;5518:6;5490:35;;;;;;:::i;:::-;;;;;;;;5538:46;5558:6;5566:9;5577:6;5538:19;:46::i;:::-;4980:612;4859:733;;;:::o;19965:1381::-;20004:23;20030:24;20048:4;20030:9;:24::i;:::-;20004:50;;20065:25;20114:18;;20093;;:39;;;;:::i;:::-;20065:67;;20143:12;20191:1;20172:15;:20;:46;;;;20217:1;20196:17;:22;20172:46;20168:85;;;20235:7;;;;;20168:85;20308:2;20287:18;;:23;;;;:::i;:::-;20269:15;:41;20265:115;;;20366:2;20345:18;;:23;;;;:::i;:::-;20327:41;;20265:115;20450:26;20479:15;20450:44;;20507:25;20535:21;20507:49;;20569:36;20586:18;20569:16;:36::i;:::-;20618:18;20663:17;20639:21;:41;;;;:::i;:::-;20618:62;;20694:23;20754:17;20733:18;;20720:10;:31;;;;:::i;:::-;:51;;;;:::i;:::-;20694:77;;20784:23;20823:15;20810:10;:28;;;;:::i;:::-;20784:54;;20872:1;20851:18;:22;;;;20905:1;20884:18;:22;;;;20941:1;20923:15;:19;20919:133;;;20983:10;;;;;;;;;;;20975:24;;21007:15;20975:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20961:66;;;;;20919:133;21089:1;21071:15;:19;21067:132;;;21131:9;;;;;;;;;;;21123:23;;21154:15;21123:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21109:65;;;;;21067:132;21289:9;;;;;;;;;;;21281:23;;21312:21;21281:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21267:71;;;;;19993:1353;;;;;;;;19965:1381;:::o;6994:125::-;;;;:::o;7127:124::-;;;;:::o;18637:589::-;18763:21;18801:1;18787:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18763:40;;18832:4;18814;18819:1;18814:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18858:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18848:4;18853:1;18848:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18893:62;18910:4;18925:15;18943:11;18893:8;:62::i;:::-;18994:15;:66;;;19075:11;19101:1;19145:4;19172;19192:15;18994:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18692:534;18637:589;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:329::-;2242:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2183:329;;;;:::o;2518:90::-;2552:7;2595:5;2588:13;2581:21;2570:32;;2518:90;;;:::o;2614:109::-;2695:21;2710:5;2695:21;:::i;:::-;2690:3;2683:34;2614:109;;:::o;2729:210::-;2816:4;2854:2;2843:9;2839:18;2831:26;;2867:65;2929:1;2918:9;2914:17;2905:6;2867:65;:::i;:::-;2729:210;;;;:::o;2945:77::-;2982:7;3011:5;3000:16;;2945:77;;;:::o;3028:122::-;3101:24;3119:5;3101:24;:::i;:::-;3094:5;3091:35;3081:63;;3140:1;3137;3130:12;3081:63;3028:122;:::o;3156:139::-;3202:5;3240:6;3227:20;3218:29;;3256:33;3283:5;3256:33;:::i;:::-;3156:139;;;;:::o;3301:474::-;3369:6;3377;3426:2;3414:9;3405:7;3401:23;3397:32;3394:119;;;3432:79;;:::i;:::-;3394:119;3552:1;3577:53;3622:7;3613:6;3602:9;3598:22;3577:53;:::i;:::-;3567:63;;3523:117;3679:2;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3650:118;3301:474;;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:86::-;6101:7;6141:4;6134:5;6130:16;6119:27;;6066:86;;;:::o;6158:112::-;6241:22;6257:5;6241:22;:::i;:::-;6236:3;6229:35;6158:112;;:::o;6276:214::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:67;6480:1;6469:9;6465:17;6456:6;6416:67;:::i;:::-;6276:214;;;;:::o;6496:118::-;6583:24;6601:5;6583:24;:::i;:::-;6578:3;6571:37;6496:118;;:::o;6620:222::-;6713:4;6751:2;6740:9;6736:18;6728:26;;6764:71;6832:1;6821:9;6817:17;6808:6;6764:71;:::i;:::-;6620:222;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:323::-;7639:6;7688:2;7676:9;7667:7;7663:23;7659:32;7656:119;;;7694:79;;:::i;:::-;7656:119;7814:1;7839:50;7881:7;7872:6;7861:9;7857:22;7839:50;:::i;:::-;7829:60;;7785:114;7583:323;;;;:::o;7912:765::-;7998:6;8006;8014;8022;8071:3;8059:9;8050:7;8046:23;8042:33;8039:120;;;8078:79;;:::i;:::-;8039:120;8198:1;8223:53;8268:7;8259:6;8248:9;8244:22;8223:53;:::i;:::-;8213:63;;8169:117;8325:2;8351:53;8396:7;8387:6;8376:9;8372:22;8351:53;:::i;:::-;8341:63;;8296:118;8453:2;8479:53;8524:7;8515:6;8504:9;8500:22;8479:53;:::i;:::-;8469:63;;8424:118;8581:2;8607:53;8652:7;8643:6;8632:9;8628:22;8607:53;:::i;:::-;8597:63;;8552:118;7912:765;;;;;;;:::o;8683:474::-;8751:6;8759;8808:2;8796:9;8787:7;8783:23;8779:32;8776:119;;;8814:79;;:::i;:::-;8776:119;8934:1;8959:53;9004:7;8995:6;8984:9;8980:22;8959:53;:::i;:::-;8949:63;;8905:117;9061:2;9087:53;9132:7;9123:6;9112:9;9108:22;9087:53;:::i;:::-;9077:63;;9032:118;8683:474;;;;;:::o;9163:182::-;9303:34;9299:1;9291:6;9287:14;9280:58;9163:182;:::o;9351:366::-;9493:3;9514:67;9578:2;9573:3;9514:67;:::i;:::-;9507:74;;9590:93;9679:3;9590:93;:::i;:::-;9708:2;9703:3;9699:12;9692:19;;9351:366;;;:::o;9723:419::-;9889:4;9927:2;9916:9;9912:18;9904:26;;9976:9;9970:4;9966:20;9962:1;9951:9;9947:17;9940:47;10004:131;10130:4;10004:131;:::i;:::-;9996:139;;9723:419;;;:::o;10148:180::-;10196:77;10193:1;10186:88;10293:4;10290:1;10283:15;10317:4;10314:1;10307:15;10334:320;10378:6;10415:1;10409:4;10405:12;10395:22;;10462:1;10456:4;10452:12;10483:18;10473:81;;10539:4;10531:6;10527:17;10517:27;;10473:81;10601:2;10593:6;10590:14;10570:18;10567:38;10564:84;;10620:18;;:::i;:::-;10564:84;10385:269;10334:320;;;:::o;10660:227::-;10800:34;10796:1;10788:6;10784:14;10777:58;10869:10;10864:2;10856:6;10852:15;10845:35;10660:227;:::o;10893:366::-;11035:3;11056:67;11120:2;11115:3;11056:67;:::i;:::-;11049:74;;11132:93;11221:3;11132:93;:::i;:::-;11250:2;11245:3;11241:12;11234:19;;10893:366;;;:::o;11265:419::-;11431:4;11469:2;11458:9;11454:18;11446:26;;11518:9;11512:4;11508:20;11504:1;11493:9;11489:17;11482:47;11546:131;11672:4;11546:131;:::i;:::-;11538:139;;11265:419;;;:::o;11690:180::-;11738:77;11735:1;11728:88;11835:4;11832:1;11825:15;11859:4;11856:1;11849:15;11876:191;11916:3;11935:20;11953:1;11935:20;:::i;:::-;11930:25;;11969:20;11987:1;11969:20;:::i;:::-;11964:25;;12012:1;12009;12005:9;11998:16;;12033:3;12030:1;12027:10;12024:36;;;12040:18;;:::i;:::-;12024:36;11876:191;;;;:::o;12073:244::-;12213:34;12209:1;12201:6;12197:14;12190:58;12282:27;12277:2;12269:6;12265:15;12258:52;12073:244;:::o;12323:366::-;12465:3;12486:67;12550:2;12545:3;12486:67;:::i;:::-;12479:74;;12562:93;12651:3;12562:93;:::i;:::-;12680:2;12675:3;12671:12;12664:19;;12323:366;;;:::o;12695:419::-;12861:4;12899:2;12888:9;12884:18;12876:26;;12948:9;12942:4;12938:20;12934:1;12923:9;12919:17;12912:47;12976:131;13102:4;12976:131;:::i;:::-;12968:139;;12695:419;;;:::o;13120:224::-;13260:34;13256:1;13248:6;13244:14;13237:58;13329:7;13324:2;13316:6;13312:15;13305:32;13120:224;:::o;13350:366::-;13492:3;13513:67;13577:2;13572:3;13513:67;:::i;:::-;13506:74;;13589:93;13678:3;13589:93;:::i;:::-;13707:2;13702:3;13698:12;13691:19;;13350:366;;;:::o;13722:419::-;13888:4;13926:2;13915:9;13911:18;13903:26;;13975:9;13969:4;13965:20;13961:1;13950:9;13946:17;13939:47;14003:131;14129:4;14003:131;:::i;:::-;13995:139;;13722:419;;;:::o;14147:410::-;14187:7;14210:20;14228:1;14210:20;:::i;:::-;14205:25;;14244:20;14262:1;14244:20;:::i;:::-;14239:25;;14299:1;14296;14292:9;14321:30;14339:11;14321:30;:::i;:::-;14310:41;;14500:1;14491:7;14487:15;14484:1;14481:22;14461:1;14454:9;14434:83;14411:139;;14530:18;;:::i;:::-;14411:139;14195:362;14147:410;;;;:::o;14563:180::-;14611:77;14608:1;14601:88;14708:4;14705:1;14698:15;14732:4;14729:1;14722:15;14749:185;14789:1;14806:20;14824:1;14806:20;:::i;:::-;14801:25;;14840:20;14858:1;14840:20;:::i;:::-;14835:25;;14879:1;14869:35;;14884:18;;:::i;:::-;14869:35;14926:1;14923;14919:9;14914:14;;14749:185;;;;:::o;14940:240::-;15080:34;15076:1;15068:6;15064:14;15057:58;15149:23;15144:2;15136:6;15132:15;15125:48;14940:240;:::o;15186:366::-;15328:3;15349:67;15413:2;15408:3;15349:67;:::i;:::-;15342:74;;15425:93;15514:3;15425:93;:::i;:::-;15543:2;15538:3;15534:12;15527:19;;15186:366;;;:::o;15558:419::-;15724:4;15762:2;15751:9;15747:18;15739:26;;15811:9;15805:4;15801:20;15797:1;15786:9;15782:17;15775:47;15839:131;15965:4;15839:131;:::i;:::-;15831:139;;15558:419;;;:::o;15983:239::-;16123:34;16119:1;16111:6;16107:14;16100:58;16192:22;16187:2;16179:6;16175:15;16168:47;15983:239;:::o;16228:366::-;16370:3;16391:67;16455:2;16450:3;16391:67;:::i;:::-;16384:74;;16467:93;16556:3;16467:93;:::i;:::-;16585:2;16580:3;16576:12;16569:19;;16228:366;;;:::o;16600:419::-;16766:4;16804:2;16793:9;16789:18;16781:26;;16853:9;16847:4;16843:20;16839:1;16828:9;16824:17;16817:47;16881:131;17007:4;16881:131;:::i;:::-;16873:139;;16600:419;;;:::o;17025:225::-;17165:34;17161:1;17153:6;17149:14;17142:58;17234:8;17229:2;17221:6;17217:15;17210:33;17025:225;:::o;17256:366::-;17398:3;17419:67;17483:2;17478:3;17419:67;:::i;:::-;17412:74;;17495:93;17584:3;17495:93;:::i;:::-;17613:2;17608:3;17604:12;17597:19;;17256:366;;;:::o;17628:419::-;17794:4;17832:2;17821:9;17817:18;17809:26;;17881:9;17875:4;17871:20;17867:1;17856:9;17852:17;17845:47;17909:131;18035:4;17909:131;:::i;:::-;17901:139;;17628:419;;;:::o;18053:180::-;18101:77;18098:1;18091:88;18198:4;18195:1;18188:15;18222:4;18219:1;18212:15;18239:223;18379:34;18375:1;18367:6;18363:14;18356:58;18448:6;18443:2;18435:6;18431:15;18424:31;18239:223;:::o;18468:366::-;18610:3;18631:67;18695:2;18690:3;18631:67;:::i;:::-;18624:74;;18707:93;18796:3;18707:93;:::i;:::-;18825:2;18820:3;18816:12;18809:19;;18468:366;;;:::o;18840:419::-;19006:4;19044:2;19033:9;19029:18;19021:26;;19093:9;19087:4;19083:20;19079:1;19068:9;19064:17;19057:47;19121:131;19247:4;19121:131;:::i;:::-;19113:139;;18840:419;;;:::o;19265:221::-;19405:34;19401:1;19393:6;19389:14;19382:58;19474:4;19469:2;19461:6;19457:15;19450:29;19265:221;:::o;19492:366::-;19634:3;19655:67;19719:2;19714:3;19655:67;:::i;:::-;19648:74;;19731:93;19820:3;19731:93;:::i;:::-;19849:2;19844:3;19840:12;19833:19;;19492:366;;;:::o;19864:419::-;20030:4;20068:2;20057:9;20053:18;20045:26;;20117:9;20111:4;20107:20;20103:1;20092:9;20088:17;20081:47;20145:131;20271:4;20145:131;:::i;:::-;20137:139;;19864:419;;;:::o;20289:224::-;20429:34;20425:1;20417:6;20413:14;20406:58;20498:7;20493:2;20485:6;20481:15;20474:32;20289:224;:::o;20519:366::-;20661:3;20682:67;20746:2;20741:3;20682:67;:::i;:::-;20675:74;;20758:93;20847:3;20758:93;:::i;:::-;20876:2;20871:3;20867:12;20860:19;;20519:366;;;:::o;20891:419::-;21057:4;21095:2;21084:9;21080:18;21072:26;;21144:9;21138:4;21134:20;21130:1;21119:9;21115:17;21108:47;21172:131;21298:4;21172:131;:::i;:::-;21164:139;;20891:419;;;:::o;21316:222::-;21456:34;21452:1;21444:6;21440:14;21433:58;21525:5;21520:2;21512:6;21508:15;21501:30;21316:222;:::o;21544:366::-;21686:3;21707:67;21771:2;21766:3;21707:67;:::i;:::-;21700:74;;21783:93;21872:3;21783:93;:::i;:::-;21901:2;21896:3;21892:12;21885:19;;21544:366;;;:::o;21916:419::-;22082:4;22120:2;22109:9;22105:18;22097:26;;22169:9;22163:4;22159:20;22155:1;22144:9;22140:17;22133:47;22197:131;22323:4;22197:131;:::i;:::-;22189:139;;21916:419;;;:::o;22341:172::-;22481:24;22477:1;22469:6;22465:14;22458:48;22341:172;:::o;22519:366::-;22661:3;22682:67;22746:2;22741:3;22682:67;:::i;:::-;22675:74;;22758:93;22847:3;22758:93;:::i;:::-;22876:2;22871:3;22867:12;22860:19;;22519:366;;;:::o;22891:419::-;23057:4;23095:2;23084:9;23080:18;23072:26;;23144:9;23138:4;23134:20;23130:1;23119:9;23115:17;23108:47;23172:131;23298:4;23172:131;:::i;:::-;23164:139;;22891:419;;;:::o;23316:240::-;23456:34;23452:1;23444:6;23440:14;23433:58;23525:23;23520:2;23512:6;23508:15;23501:48;23316:240;:::o;23562:366::-;23704:3;23725:67;23789:2;23784:3;23725:67;:::i;:::-;23718:74;;23801:93;23890:3;23801:93;:::i;:::-;23919:2;23914:3;23910:12;23903:19;;23562:366;;;:::o;23934:419::-;24100:4;24138:2;24127:9;24123:18;24115:26;;24187:9;24181:4;24177:20;24173:1;24162:9;24158:17;24151:47;24215:131;24341:4;24215:131;:::i;:::-;24207:139;;23934:419;;;:::o;24359:169::-;24499:21;24495:1;24487:6;24483:14;24476:45;24359:169;:::o;24534:366::-;24676:3;24697:67;24761:2;24756:3;24697:67;:::i;:::-;24690:74;;24773:93;24862:3;24773:93;:::i;:::-;24891:2;24886:3;24882:12;24875:19;;24534:366;;;:::o;24906:419::-;25072:4;25110:2;25099:9;25095:18;25087:26;;25159:9;25153:4;25149:20;25145:1;25134:9;25130:17;25123:47;25187:131;25313:4;25187:131;:::i;:::-;25179:139;;24906:419;;;:::o;25331:241::-;25471:34;25467:1;25459:6;25455:14;25448:58;25540:24;25535:2;25527:6;25523:15;25516:49;25331:241;:::o;25578:366::-;25720:3;25741:67;25805:2;25800:3;25741:67;:::i;:::-;25734:74;;25817:93;25906:3;25817:93;:::i;:::-;25935:2;25930:3;25926:12;25919:19;;25578:366;;;:::o;25950:419::-;26116:4;26154:2;26143:9;26139:18;26131:26;;26203:9;26197:4;26193:20;26189:1;26178:9;26174:17;26167:47;26231:131;26357:4;26231:131;:::i;:::-;26223:139;;25950:419;;;:::o;26375:194::-;26415:4;26435:20;26453:1;26435:20;:::i;:::-;26430:25;;26469:20;26487:1;26469:20;:::i;:::-;26464:25;;26513:1;26510;26506:9;26498:17;;26537:1;26531:4;26528:11;26525:37;;;26542:18;;:::i;:::-;26525:37;26375:194;;;;:::o;26575:225::-;26715:34;26711:1;26703:6;26699:14;26692:58;26784:8;26779:2;26771:6;26767:15;26760:33;26575:225;:::o;26806:366::-;26948:3;26969:67;27033:2;27028:3;26969:67;:::i;:::-;26962:74;;27045:93;27134:3;27045:93;:::i;:::-;27163:2;27158:3;27154:12;27147:19;;26806:366;;;:::o;27178:419::-;27344:4;27382:2;27371:9;27367:18;27359:26;;27431:9;27425:4;27421:20;27417:1;27406:9;27402:17;27395:47;27459:131;27585:4;27459:131;:::i;:::-;27451:139;;27178:419;;;:::o;27603:147::-;27704:11;27741:3;27726:18;;27603:147;;;;:::o;27756:114::-;;:::o;27876:398::-;28035:3;28056:83;28137:1;28132:3;28056:83;:::i;:::-;28049:90;;28148:93;28237:3;28148:93;:::i;:::-;28266:1;28261:3;28257:11;28250:18;;27876:398;;;:::o;28280:379::-;28464:3;28486:147;28629:3;28486:147;:::i;:::-;28479:154;;28650:3;28643:10;;28280:379;;;:::o;28665:180::-;28713:77;28710:1;28703:88;28810:4;28807:1;28800:15;28834:4;28831:1;28824:15;28851:143;28908:5;28939:6;28933:13;28924:22;;28955:33;28982:5;28955:33;:::i;:::-;28851:143;;;;:::o;29000:351::-;29070:6;29119:2;29107:9;29098:7;29094:23;29090:32;29087:119;;;29125:79;;:::i;:::-;29087:119;29245:1;29270:64;29326:7;29317:6;29306:9;29302:22;29270:64;:::i;:::-;29260:74;;29216:128;29000:351;;;;:::o;29357:85::-;29402:7;29431:5;29420:16;;29357:85;;;:::o;29448:158::-;29506:9;29539:61;29557:42;29566:32;29592:5;29566:32;:::i;:::-;29557:42;:::i;:::-;29539:61;:::i;:::-;29526:74;;29448:158;;;:::o;29612:147::-;29707:45;29746:5;29707:45;:::i;:::-;29702:3;29695:58;29612:147;;:::o;29765:114::-;29832:6;29866:5;29860:12;29850:22;;29765:114;;;:::o;29885:184::-;29984:11;30018:6;30013:3;30006:19;30058:4;30053:3;30049:14;30034:29;;29885:184;;;;:::o;30075:132::-;30142:4;30165:3;30157:11;;30195:4;30190:3;30186:14;30178:22;;30075:132;;;:::o;30213:108::-;30290:24;30308:5;30290:24;:::i;:::-;30285:3;30278:37;30213:108;;:::o;30327:179::-;30396:10;30417:46;30459:3;30451:6;30417:46;:::i;:::-;30495:4;30490:3;30486:14;30472:28;;30327:179;;;;:::o;30512:113::-;30582:4;30614;30609:3;30605:14;30597:22;;30512:113;;;:::o;30661:732::-;30780:3;30809:54;30857:5;30809:54;:::i;:::-;30879:86;30958:6;30953:3;30879:86;:::i;:::-;30872:93;;30989:56;31039:5;30989:56;:::i;:::-;31068:7;31099:1;31084:284;31109:6;31106:1;31103:13;31084:284;;;31185:6;31179:13;31212:63;31271:3;31256:13;31212:63;:::i;:::-;31205:70;;31298:60;31351:6;31298:60;:::i;:::-;31288:70;;31144:224;31131:1;31128;31124:9;31119:14;;31084:284;;;31088:14;31384:3;31377:10;;30785:608;;;30661:732;;;;:::o;31399:831::-;31662:4;31700:3;31689:9;31685:19;31677:27;;31714:71;31782:1;31771:9;31767:17;31758:6;31714:71;:::i;:::-;31795:80;31871:2;31860:9;31856:18;31847:6;31795:80;:::i;:::-;31922:9;31916:4;31912:20;31907:2;31896:9;31892:18;31885:48;31950:108;32053:4;32044:6;31950:108;:::i;:::-;31942:116;;32068:72;32136:2;32125:9;32121:18;32112:6;32068:72;:::i;:::-;32150:73;32218:3;32207:9;32203:19;32194:6;32150:73;:::i;:::-;31399:831;;;;;;;;:::o

Swarm Source

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