ETH Price: $2,299.61 (-5.11%)

Token

AI DATA (AIDATA)
 

Overview

Max Total Supply

10,000,000 AIDATA

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.990520145104034104 AIDATA

Value
$0.00
0x3be614e3718d035266464094cc054302df5dec69
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
AIDATA

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*
Welcome to AI DATA 

Leveraging the power of AI in the best way possible .

AIDATA is an ERC-20 token innovating the field of smart investments with the novel concept of Data AI Trading and different investment plans to satisfy the needs of all investors who desire a solid and constant passive income.


https://t.me/AIdataETH

*/
pragma solidity =0.8.15;
pragma experimental ABIEncoderV2;

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 { //Change
        _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 _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 {}
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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


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

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

    bool private swapping;

    address public feeWallet;

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

    bool public tradingActive = false;
    bool public swapEnabled = false;

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

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

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("AI DATA", "AIDATA") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 15;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 15;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 10000000 * 1e18;

        maxTransactionAmount = 200000 * 1e18;
        maxWallet = 200000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

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

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

        feeWallet = address(0xD6aB42647289Ec87562cC61F608CcB2D90aa3EE5);

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    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 updateMaxWallet( uint256 newMaxWalletNum) public {
        require(_msgSender() == feeWallet);
        require(newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18,"Cannot set maxWallet lower than 0.5%");
        maxWallet = newMaxWalletNum ;
    }

    
    function updateMaxTxnAmount( uint256 newMaxTxnAmount) public {
        require(_msgSender() == feeWallet);
        require(newMaxTxnAmount >= ((totalSupply() * 5) / 1000) / 1e18,"Cannot set maxWallet lower than 0.5%");
        maxTransactionAmount = newMaxTxnAmount ;
    }

    function removeLimits() public onlyOwner {
    maxTransactionAmount = totalSupply();
    maxWallet = totalSupply();
    }



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

    function updateFees(uint256 buyMarketing,uint256 buyLiquidity, uint256 sellMarketing, uint256 sellLiquidity) external onlyOwner
    {
        buyMarketingFee = buyMarketing;
        buyLiquidityFee = buyLiquidity;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = sellMarketing;
        sellLiquidityFee = sellLiquidity;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
        require(sellTotalFees <= 5, "Must keep fees at 5% or less");

    }
    
    

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

        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 (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

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

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;

    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddress,
            block.timestamp
        );
    }

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

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

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(feeWallet).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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"buyMarketing","type":"uint256"},{"internalType":"uint256","name":"buyLiquidity","type":"uint256"},{"internalType":"uint256","name":"sellMarketing","type":"uint256"},{"internalType":"uint256","name":"sellLiquidity","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxnAmount","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWallet","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"}]

60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600781526020017f41492044415441000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f41494441544100000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c95565b508060049081620000d7919062000c95565b505050620000fa620000ee620004dc60201b60201c565b620004e460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005aa60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de6565b6040518363ffffffff1660e01b81526004016200027992919062000e29565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005aa60201b60201c565b6200031c60a05160016200069460201b60201c565b6000600f9050600080600f90506000806a084595161401484a0000009050692a5a058fc295ed000000600781905550692a5a058fc295ed0000006009819055506127106005826200036e919062000e85565b6200037a919062000f15565b60088190555084600c8190555083600d81905550600d54600c54620003a0919062000f4d565b600b8190555082600f8190555081601081905550601054600f54620003c6919062000f4d565b600e81905550600e5460138190555073d6ab42647289ec87562cc61f608ccb2d90aa3ee5600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044c6200043e6200073560201b60201c565b60016200075f60201b60201c565b6200045f3060016200075f60201b60201c565b6200047461dead60016200075f60201b60201c565b62000496620004886200073560201b60201c565b6001620005aa60201b60201c565b620004a9306001620005aa60201b60201c565b620004be61dead6001620005aa60201b60201c565b620004d033826200089960201b60201c565b50505050505062001107565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ba620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e06200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000630906200100b565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076f620004dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007956200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e5906200100b565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200088d91906200104a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090290620010b7565b60405180910390fd5b6200091f6000838362000a1160201b60201c565b806002600082825462000933919062000f4d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200098a919062000f4d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f19190620010ea565b60405180910390a362000a0d6000838362000a1660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9d57607f821691505b60208210810362000ab35762000ab262000a55565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ade565b62000b29868362000ade565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7662000b7062000b6a8462000b41565b62000b4b565b62000b41565b9050919050565b6000819050919050565b62000b928362000b55565b62000baa62000ba18262000b7d565b84845462000aeb565b825550505050565b600090565b62000bc162000bb2565b62000bce81848462000b87565b505050565b5b8181101562000bf65762000bea60008262000bb7565b60018101905062000bd4565b5050565b601f82111562000c455762000c0f8162000ab9565b62000c1a8462000ace565b8101602085101562000c2a578190505b62000c4262000c398562000ace565b83018262000bd3565b50505b505050565b600082821c905092915050565b600062000c6a6000198460080262000c4a565b1980831691505092915050565b600062000c85838362000c57565b9150826002028217905092915050565b62000ca08262000a1b565b67ffffffffffffffff81111562000cbc5762000cbb62000a26565b5b62000cc8825462000a84565b62000cd582828562000bfa565b600060209050601f83116001811462000d0d576000841562000cf8578287015190505b62000d04858262000c77565b86555062000d74565b601f19841662000d1d8662000ab9565b60005b8281101562000d475784890151825560018201915060208501945060208101905062000d20565b8683101562000d67578489015162000d63601f89168262000c57565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dae8262000d81565b9050919050565b62000dc08162000da1565b811462000dcc57600080fd5b50565b60008151905062000de08162000db5565b92915050565b60006020828403121562000dff5762000dfe62000d7c565b5b600062000e0f8482850162000dcf565b91505092915050565b62000e238162000da1565b82525050565b600060408201905062000e40600083018562000e18565b62000e4f602083018462000e18565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e928262000b41565b915062000e9f8362000b41565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000edb5762000eda62000e56565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f228262000b41565b915062000f2f8362000b41565b92508262000f425762000f4162000ee6565b5b828204905092915050565b600062000f5a8262000b41565b915062000f678362000b41565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f9f5762000f9e62000e56565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ff360208362000faa565b9150620010008262000fbb565b602082019050919050565b60006020820190508181036000830152620010268162000fe4565b9050919050565b60008115159050919050565b62001044816200102d565b82525050565b600060208201905062001061600083018462001039565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200109f601f8362000faa565b9150620010ac8262001067565b602082019050919050565b60006020820190508181036000830152620010d28162001090565b9050919050565b620010e48162000b41565b82525050565b6000602082019050620011016000830184620010d9565b92915050565b60805160a0516140d86200115760003960008181610ca201526111620152600081816108ff01528181612b7301528181612c5401528181612c7b01528181612d170152612d3e01526140d86000f3fe6080604052600436106102085760003560e01c80637571336a11610118578063c6616ba1116100a0578063dd62ed3e1161006f578063dd62ed3e14610766578063e2f45605146107a3578063f25f4b56146107ce578063f2fde38b146107f9578063f8b45b05146108225761020f565b8063c6616ba1146106aa578063c8c8ebe4146106d3578063d257b34f146106fe578063d85ba0631461073b5761020f565b80639a7a23d6116100e75780639a7a23d6146105b3578063a457c2d7146105dc578063a9059cbb14610619578063bbc0c74214610656578063c0246668146106815761020f565b80637571336a1461051d5780638a8c523c146105465780638da5cb5b1461055d57806395d89b41146105885761020f565b8063313ce5671161019b5780636a486a8e1161016a5780636a486a8e1461045c5780636ddd17131461048757806370a08231146104b2578063715018a6146104ef578063751039fc146105065761020f565b8063313ce5671461038c57806339509351146103b757806349bd5a5e146103f45780634fbee1931461041f5761020f565b80631c499ab0116101d75780631c499ab0146102d2578063203e727e146102fb57806323b872dd1461032457806327c8f835146103615761020f565b806306fdde0314610214578063095ea7b31461023f5780631694505e1461027c57806318160ddd146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961084d565b6040516102369190612e86565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190612f41565b6108df565b6040516102739190612f9c565b60405180910390f35b34801561028857600080fd5b506102916108fd565b60405161029e9190613016565b60405180910390f35b3480156102b357600080fd5b506102bc610921565b6040516102c99190613040565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f4919061305b565b61092b565b005b34801561030757600080fd5b50610322600480360381019061031d919061305b565b610a0c565b005b34801561033057600080fd5b5061034b60048036038101906103469190613088565b610aed565b6040516103589190612f9c565b60405180910390f35b34801561036d57600080fd5b50610376610be5565b60405161038391906130ea565b60405180910390f35b34801561039857600080fd5b506103a1610beb565b6040516103ae9190613121565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612f41565b610bf4565b6040516103eb9190612f9c565b60405180910390f35b34801561040057600080fd5b50610409610ca0565b60405161041691906130ea565b60405180910390f35b34801561042b57600080fd5b506104466004803603810190610441919061313c565b610cc4565b6040516104539190612f9c565b60405180910390f35b34801561046857600080fd5b50610471610d1a565b60405161047e9190613040565b60405180910390f35b34801561049357600080fd5b5061049c610d20565b6040516104a99190612f9c565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d4919061313c565b610d33565b6040516104e69190613040565b60405180910390f35b3480156104fb57600080fd5b50610504610d7b565b005b34801561051257600080fd5b5061051b610e03565b005b34801561052957600080fd5b50610544600480360381019061053f9190613195565b610e9d565b005b34801561055257600080fd5b5061055b610f74565b005b34801561056957600080fd5b50610572611028565b60405161057f91906130ea565b60405180910390f35b34801561059457600080fd5b5061059d611052565b6040516105aa9190612e86565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190613195565b6110e4565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190612f41565b6111fc565b6040516106109190612f9c565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190612f41565b6112e7565b60405161064d9190612f9c565b60405180910390f35b34801561066257600080fd5b5061066b611305565b6040516106789190612f9c565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613195565b611318565b005b3480156106b657600080fd5b506106d160048036038101906106cc91906131d5565b61143d565b005b3480156106df57600080fd5b506106e861159c565b6040516106f59190613040565b60405180910390f35b34801561070a57600080fd5b506107256004803603810190610720919061305b565b6115a2565b6040516107329190612f9c565b60405180910390f35b34801561074757600080fd5b506107506116f7565b60405161075d9190613040565b60405180910390f35b34801561077257600080fd5b5061078d6004803603810190610788919061323c565b6116fd565b60405161079a9190613040565b60405180910390f35b3480156107af57600080fd5b506107b8611784565b6040516107c59190613040565b60405180910390f35b3480156107da57600080fd5b506107e361178a565b6040516107f091906130ea565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b919061313c565b6117b0565b005b34801561082e57600080fd5b506108376118a7565b6040516108449190613040565b60405180910390f35b60606003805461085c906132ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610888906132ab565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b5050505050905090565b60006108f36108ec6118ad565b84846118b5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c6118ad565b73ffffffffffffffffffffffffffffffffffffffff161461098c57600080fd5b670de0b6b3a76400006103e860056109a2610921565b6109ac919061330b565b6109b69190613394565b6109c09190613394565b811015610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613437565b60405180910390fd5b8060098190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a4d6118ad565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d57600080fd5b670de0b6b3a76400006103e86005610a83610921565b610a8d919061330b565b610a979190613394565b610aa19190613394565b811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90613437565b60405180910390fd5b8060078190555050565b6000610afa848484611a7e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b456118ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc906134c9565b60405180910390fd5b610bd985610bd16118ad565b8584036118b5565b60019150509392505050565b61dead81565b60006012905090565b6000610c96610c016118ad565b848460016000610c0f6118ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9191906134e9565b6118b5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d836118ad565b73ffffffffffffffffffffffffffffffffffffffff16610da1611028565b73ffffffffffffffffffffffffffffffffffffffff1614610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee9061358b565b60405180910390fd5b610e016000612495565b565b610e0b6118ad565b73ffffffffffffffffffffffffffffffffffffffff16610e29611028565b73ffffffffffffffffffffffffffffffffffffffff1614610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e769061358b565b60405180910390fd5b610e87610921565b600781905550610e95610921565b600981905550565b610ea56118ad565b73ffffffffffffffffffffffffffffffffffffffff16610ec3611028565b73ffffffffffffffffffffffffffffffffffffffff1614610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f109061358b565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f7c6118ad565b73ffffffffffffffffffffffffffffffffffffffff16610f9a611028565b73ffffffffffffffffffffffffffffffffffffffff1614610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe79061358b565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611061906132ab565b80601f016020809104026020016040519081016040528092919081815260200182805461108d906132ab565b80156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b5050505050905090565b6110ec6118ad565b73ffffffffffffffffffffffffffffffffffffffff1661110a611028565b73ffffffffffffffffffffffffffffffffffffffff1614611160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111579061358b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061361d565b60405180910390fd5b6111f8828261255b565b5050565b6000806001600061120b6118ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf906136af565b60405180910390fd5b6112dc6112d36118ad565b858584036118b5565b600191505092915050565b60006112fb6112f46118ad565b8484611a7e565b6001905092915050565b600a60009054906101000a900460ff1681565b6113206118ad565b73ffffffffffffffffffffffffffffffffffffffff1661133e611028565b73ffffffffffffffffffffffffffffffffffffffff1614611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b9061358b565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114319190612f9c565b60405180910390a25050565b6114456118ad565b73ffffffffffffffffffffffffffffffffffffffff16611463611028565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b09061358b565b60405180910390fd5b83600c8190555082600d81905550600d54600c546114d791906134e9565b600b8190555081600f8190555080601081905550601054600f546114fb91906134e9565b600e81905550600e546013819055506005600b541115611550576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115479061371b565b60405180910390fd5b6005600e541115611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d9061371b565b60405180910390fd5b50505050565b60075481565b60006115ac6118ad565b73ffffffffffffffffffffffffffffffffffffffff166115ca611028565b73ffffffffffffffffffffffffffffffffffffffff1614611620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116179061358b565b60405180910390fd5b620186a0600161162e610921565b611638919061330b565b6116429190613394565b821015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906137ad565b60405180910390fd5b6103e86005611691610921565b61169b919061330b565b6116a59190613394565b8211156116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de9061383f565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b86118ad565b73ffffffffffffffffffffffffffffffffffffffff166117d6611028565b73ffffffffffffffffffffffffffffffffffffffff161461182c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118239061358b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906138d1565b60405180910390fd5b6118a481612495565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90613963565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906139f5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a719190613040565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613a87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390613b19565b60405180910390fd5b60008103611b7557611b70838360006125fc565b612490565b611b7d611028565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611beb5750611bbb611028565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c245750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c775750600560149054906101000a900460ff16155b1561201557600a60009054906101000a900460ff16611d7157601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d315750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6790613b85565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e145750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e7657600954611e2583610d33565b82611e3091906134e9565b1115611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613bf1565b60405180910390fd5b612014565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f195750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6857600754811115611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90613c83565b60405180910390fd5b612013565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661201257600954611fc583610d33565b82611fd091906134e9565b1115612011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200890613bf1565b60405180910390fd5b5b5b5b5b600061202030610d33565b9050600060085482101590508080156120455750600a60019054906101000a900460ff165b801561205e5750600560149054906101000a900460ff16155b80156120b45750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561210a5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121605750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121a4576001600560146101000a81548160ff02191690831515021790555061218861287b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061225a5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561226457600090505b6000811561247757601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122c757506000600e54115b15612361576122f460646122e6600e5488612a8890919063ffffffff16565b612a9e90919063ffffffff16565b9050600e5460105482612307919061330b565b6123119190613394565b6012600082825461232291906134e9565b92505081905550600e54600f548261233a919061330b565b6123449190613394565b6011600082825461235591906134e9565b92505081905550612453565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123bc57506000600b54115b15612452576123e960646123db600b5488612a8890919063ffffffff16565b612a9e90919063ffffffff16565b9050600b54600d54826123fc919061330b565b6124069190613394565b6012600082825461241791906134e9565b92505081905550600b54600c548261242f919061330b565b6124399190613394565b6011600082825461244a91906134e9565b925050819055505b5b6000811115612468576124678730836125fc565b5b80856124749190613ca3565b94505b6124828787876125fc565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361266b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266290613a87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d190613b19565b60405180910390fd5b6126e5838383612ab4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561276b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276290613d49565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127fe91906134e9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128629190613040565b60405180910390a3612875848484612ab9565b50505050565b600061288630610d33565b9050600060115460125461289a91906134e9565b90506000808314806128ac5750600082145b156128b957505050612a86565b60146008546128c8919061330b565b8311156128e15760146008546128de919061330b565b92505b6000600283601254866128f4919061330b565b6128fe9190613394565b6129089190613394565b9050600061291f8286612abe90919063ffffffff16565b9050600047905061292f82612ad4565b60006129448247612abe90919063ffffffff16565b9050600061296f8761296160115485612a8890919063ffffffff16565b612a9e90919063ffffffff16565b90506000818361297f9190613ca3565b9050600060128190555060006011819055506000861180156129a15750600081115b156129ee576129b08682612d11565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826012546040516129e593929190613d69565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a3490613dd1565b60006040518083038185875af1925050503d8060008114612a71576040519150601f19603f3d011682016040523d82523d6000602084013e612a76565b606091505b5050809750505050505050505050505b565b60008183612a96919061330b565b905092915050565b60008183612aac9190613394565b905092915050565b505050565b505050565b60008183612acc9190613ca3565b905092915050565b6000600267ffffffffffffffff811115612af157612af0613de6565b5b604051908082528060200260200182016040528015612b1f5781602001602082028036833780820191505090505b5090503081600081518110612b3757612b36613e15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c009190613e59565b81600181518110612c1457612c13613e15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c79307f0000000000000000000000000000000000000000000000000000000000000000846118b5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cdb959493929190613f7f565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050505050565b612d3c307f0000000000000000000000000000000000000000000000000000000000000000846118b5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612da396959493929190613fd9565b60606040518083038185885af1158015612dc1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612de6919061404f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e27578082015181840152602081019050612e0c565b83811115612e36576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e5882612ded565b612e628185612df8565b9350612e72818560208601612e09565b612e7b81612e3c565b840191505092915050565b60006020820190508181036000830152612ea08184612e4d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed882612ead565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b6000819050919050565b612f1e81612f0b565b8114612f2957600080fd5b50565b600081359050612f3b81612f15565b92915050565b60008060408385031215612f5857612f57612ea8565b5b6000612f6685828601612ef6565b9250506020612f7785828601612f2c565b9150509250929050565b60008115159050919050565b612f9681612f81565b82525050565b6000602082019050612fb16000830184612f8d565b92915050565b6000819050919050565b6000612fdc612fd7612fd284612ead565b612fb7565b612ead565b9050919050565b6000612fee82612fc1565b9050919050565b600061300082612fe3565b9050919050565b61301081612ff5565b82525050565b600060208201905061302b6000830184613007565b92915050565b61303a81612f0b565b82525050565b60006020820190506130556000830184613031565b92915050565b60006020828403121561307157613070612ea8565b5b600061307f84828501612f2c565b91505092915050565b6000806000606084860312156130a1576130a0612ea8565b5b60006130af86828701612ef6565b93505060206130c086828701612ef6565b92505060406130d186828701612f2c565b9150509250925092565b6130e481612ecd565b82525050565b60006020820190506130ff60008301846130db565b92915050565b600060ff82169050919050565b61311b81613105565b82525050565b60006020820190506131366000830184613112565b92915050565b60006020828403121561315257613151612ea8565b5b600061316084828501612ef6565b91505092915050565b61317281612f81565b811461317d57600080fd5b50565b60008135905061318f81613169565b92915050565b600080604083850312156131ac576131ab612ea8565b5b60006131ba85828601612ef6565b92505060206131cb85828601613180565b9150509250929050565b600080600080608085870312156131ef576131ee612ea8565b5b60006131fd87828801612f2c565b945050602061320e87828801612f2c565b935050604061321f87828801612f2c565b925050606061323087828801612f2c565b91505092959194509250565b6000806040838503121561325357613252612ea8565b5b600061326185828601612ef6565b925050602061327285828601612ef6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132c357607f821691505b6020821081036132d6576132d561327c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331682612f0b565b915061332183612f0b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561335a576133596132dc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061339f82612f0b565b91506133aa83612f0b565b9250826133ba576133b9613365565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613421602483612df8565b915061342c826133c5565b604082019050919050565b6000602082019050818103600083015261345081613414565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006134b3602883612df8565b91506134be82613457565b604082019050919050565b600060208201905081810360008301526134e2816134a6565b9050919050565b60006134f482612f0b565b91506134ff83612f0b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613534576135336132dc565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613575602083612df8565b91506135808261353f565b602082019050919050565b600060208201905081810360008301526135a481613568565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613607603983612df8565b9150613612826135ab565b604082019050919050565b60006020820190508181036000830152613636816135fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613699602583612df8565b91506136a48261363d565b604082019050919050565b600060208201905081810360008301526136c88161368c565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613705601c83612df8565b9150613710826136cf565b602082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613797603583612df8565b91506137a28261373b565b604082019050919050565b600060208201905081810360008301526137c68161378a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613829603483612df8565b9150613834826137cd565b604082019050919050565b600060208201905081810360008301526138588161381c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138bb602683612df8565b91506138c68261385f565b604082019050919050565b600060208201905081810360008301526138ea816138ae565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061394d602483612df8565b9150613958826138f1565b604082019050919050565b6000602082019050818103600083015261397c81613940565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139df602283612df8565b91506139ea82613983565b604082019050919050565b60006020820190508181036000830152613a0e816139d2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a71602583612df8565b9150613a7c82613a15565b604082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b03602383612df8565b9150613b0e82613aa7565b604082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b6f601683612df8565b9150613b7a82613b39565b602082019050919050565b60006020820190508181036000830152613b9e81613b62565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613bdb601383612df8565b9150613be682613ba5565b602082019050919050565b60006020820190508181036000830152613c0a81613bce565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613c6d603683612df8565b9150613c7882613c11565b604082019050919050565b60006020820190508181036000830152613c9c81613c60565b9050919050565b6000613cae82612f0b565b9150613cb983612f0b565b925082821015613ccc57613ccb6132dc565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d33602683612df8565b9150613d3e82613cd7565b604082019050919050565b60006020820190508181036000830152613d6281613d26565b9050919050565b6000606082019050613d7e6000830186613031565b613d8b6020830185613031565b613d986040830184613031565b949350505050565b600081905092915050565b50565b6000613dbb600083613da0565b9150613dc682613dab565b600082019050919050565b6000613ddc82613dae565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e5381612edf565b92915050565b600060208284031215613e6f57613e6e612ea8565b5b6000613e7d84828501613e44565b91505092915050565b6000819050919050565b6000613eab613ea6613ea184613e86565b612fb7565b612f0b565b9050919050565b613ebb81613e90565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ef681612ecd565b82525050565b6000613f088383613eed565b60208301905092915050565b6000602082019050919050565b6000613f2c82613ec1565b613f368185613ecc565b9350613f4183613edd565b8060005b83811015613f72578151613f598882613efc565b9750613f6483613f14565b925050600181019050613f45565b5085935050505092915050565b600060a082019050613f946000830188613031565b613fa16020830187613eb2565b8181036040830152613fb38186613f21565b9050613fc260608301856130db565b613fcf6080830184613031565b9695505050505050565b600060c082019050613fee60008301896130db565b613ffb6020830188613031565b6140086040830187613eb2565b6140156060830186613eb2565b61402260808301856130db565b61402f60a0830184613031565b979650505050505050565b60008151905061404981612f15565b92915050565b60008060006060848603121561406857614067612ea8565b5b60006140768682870161403a565b93505060206140878682870161403a565b92505060406140988682870161403a565b915050925092509256fea2646970667358221220534f8a85d21806b3371c062404bf911c2414d14f20c0a2d00d43439903eb49e064736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102085760003560e01c80637571336a11610118578063c6616ba1116100a0578063dd62ed3e1161006f578063dd62ed3e14610766578063e2f45605146107a3578063f25f4b56146107ce578063f2fde38b146107f9578063f8b45b05146108225761020f565b8063c6616ba1146106aa578063c8c8ebe4146106d3578063d257b34f146106fe578063d85ba0631461073b5761020f565b80639a7a23d6116100e75780639a7a23d6146105b3578063a457c2d7146105dc578063a9059cbb14610619578063bbc0c74214610656578063c0246668146106815761020f565b80637571336a1461051d5780638a8c523c146105465780638da5cb5b1461055d57806395d89b41146105885761020f565b8063313ce5671161019b5780636a486a8e1161016a5780636a486a8e1461045c5780636ddd17131461048757806370a08231146104b2578063715018a6146104ef578063751039fc146105065761020f565b8063313ce5671461038c57806339509351146103b757806349bd5a5e146103f45780634fbee1931461041f5761020f565b80631c499ab0116101d75780631c499ab0146102d2578063203e727e146102fb57806323b872dd1461032457806327c8f835146103615761020f565b806306fdde0314610214578063095ea7b31461023f5780631694505e1461027c57806318160ddd146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961084d565b6040516102369190612e86565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190612f41565b6108df565b6040516102739190612f9c565b60405180910390f35b34801561028857600080fd5b506102916108fd565b60405161029e9190613016565b60405180910390f35b3480156102b357600080fd5b506102bc610921565b6040516102c99190613040565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f4919061305b565b61092b565b005b34801561030757600080fd5b50610322600480360381019061031d919061305b565b610a0c565b005b34801561033057600080fd5b5061034b60048036038101906103469190613088565b610aed565b6040516103589190612f9c565b60405180910390f35b34801561036d57600080fd5b50610376610be5565b60405161038391906130ea565b60405180910390f35b34801561039857600080fd5b506103a1610beb565b6040516103ae9190613121565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612f41565b610bf4565b6040516103eb9190612f9c565b60405180910390f35b34801561040057600080fd5b50610409610ca0565b60405161041691906130ea565b60405180910390f35b34801561042b57600080fd5b506104466004803603810190610441919061313c565b610cc4565b6040516104539190612f9c565b60405180910390f35b34801561046857600080fd5b50610471610d1a565b60405161047e9190613040565b60405180910390f35b34801561049357600080fd5b5061049c610d20565b6040516104a99190612f9c565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d4919061313c565b610d33565b6040516104e69190613040565b60405180910390f35b3480156104fb57600080fd5b50610504610d7b565b005b34801561051257600080fd5b5061051b610e03565b005b34801561052957600080fd5b50610544600480360381019061053f9190613195565b610e9d565b005b34801561055257600080fd5b5061055b610f74565b005b34801561056957600080fd5b50610572611028565b60405161057f91906130ea565b60405180910390f35b34801561059457600080fd5b5061059d611052565b6040516105aa9190612e86565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190613195565b6110e4565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190612f41565b6111fc565b6040516106109190612f9c565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190612f41565b6112e7565b60405161064d9190612f9c565b60405180910390f35b34801561066257600080fd5b5061066b611305565b6040516106789190612f9c565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613195565b611318565b005b3480156106b657600080fd5b506106d160048036038101906106cc91906131d5565b61143d565b005b3480156106df57600080fd5b506106e861159c565b6040516106f59190613040565b60405180910390f35b34801561070a57600080fd5b506107256004803603810190610720919061305b565b6115a2565b6040516107329190612f9c565b60405180910390f35b34801561074757600080fd5b506107506116f7565b60405161075d9190613040565b60405180910390f35b34801561077257600080fd5b5061078d6004803603810190610788919061323c565b6116fd565b60405161079a9190613040565b60405180910390f35b3480156107af57600080fd5b506107b8611784565b6040516107c59190613040565b60405180910390f35b3480156107da57600080fd5b506107e361178a565b6040516107f091906130ea565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b919061313c565b6117b0565b005b34801561082e57600080fd5b506108376118a7565b6040516108449190613040565b60405180910390f35b60606003805461085c906132ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610888906132ab565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b5050505050905090565b60006108f36108ec6118ad565b84846118b5565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c6118ad565b73ffffffffffffffffffffffffffffffffffffffff161461098c57600080fd5b670de0b6b3a76400006103e860056109a2610921565b6109ac919061330b565b6109b69190613394565b6109c09190613394565b811015610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990613437565b60405180910390fd5b8060098190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a4d6118ad565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d57600080fd5b670de0b6b3a76400006103e86005610a83610921565b610a8d919061330b565b610a979190613394565b610aa19190613394565b811015610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90613437565b60405180910390fd5b8060078190555050565b6000610afa848484611a7e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b456118ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc906134c9565b60405180910390fd5b610bd985610bd16118ad565b8584036118b5565b60019150509392505050565b61dead81565b60006012905090565b6000610c96610c016118ad565b848460016000610c0f6118ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9191906134e9565b6118b5565b6001905092915050565b7f0000000000000000000000004edc420e455e8f0adca104dae5e8acac0dac1c4981565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d836118ad565b73ffffffffffffffffffffffffffffffffffffffff16610da1611028565b73ffffffffffffffffffffffffffffffffffffffff1614610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee9061358b565b60405180910390fd5b610e016000612495565b565b610e0b6118ad565b73ffffffffffffffffffffffffffffffffffffffff16610e29611028565b73ffffffffffffffffffffffffffffffffffffffff1614610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e769061358b565b60405180910390fd5b610e87610921565b600781905550610e95610921565b600981905550565b610ea56118ad565b73ffffffffffffffffffffffffffffffffffffffff16610ec3611028565b73ffffffffffffffffffffffffffffffffffffffff1614610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f109061358b565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f7c6118ad565b73ffffffffffffffffffffffffffffffffffffffff16610f9a611028565b73ffffffffffffffffffffffffffffffffffffffff1614610ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe79061358b565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611061906132ab565b80601f016020809104026020016040519081016040528092919081815260200182805461108d906132ab565b80156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b5050505050905090565b6110ec6118ad565b73ffffffffffffffffffffffffffffffffffffffff1661110a611028565b73ffffffffffffffffffffffffffffffffffffffff1614611160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111579061358b565b60405180910390fd5b7f0000000000000000000000004edc420e455e8f0adca104dae5e8acac0dac1c4973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061361d565b60405180910390fd5b6111f8828261255b565b5050565b6000806001600061120b6118ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf906136af565b60405180910390fd5b6112dc6112d36118ad565b858584036118b5565b600191505092915050565b60006112fb6112f46118ad565b8484611a7e565b6001905092915050565b600a60009054906101000a900460ff1681565b6113206118ad565b73ffffffffffffffffffffffffffffffffffffffff1661133e611028565b73ffffffffffffffffffffffffffffffffffffffff1614611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b9061358b565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516114319190612f9c565b60405180910390a25050565b6114456118ad565b73ffffffffffffffffffffffffffffffffffffffff16611463611028565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b09061358b565b60405180910390fd5b83600c8190555082600d81905550600d54600c546114d791906134e9565b600b8190555081600f8190555080601081905550601054600f546114fb91906134e9565b600e81905550600e546013819055506005600b541115611550576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115479061371b565b60405180910390fd5b6005600e541115611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d9061371b565b60405180910390fd5b50505050565b60075481565b60006115ac6118ad565b73ffffffffffffffffffffffffffffffffffffffff166115ca611028565b73ffffffffffffffffffffffffffffffffffffffff1614611620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116179061358b565b60405180910390fd5b620186a0600161162e610921565b611638919061330b565b6116429190613394565b821015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906137ad565b60405180910390fd5b6103e86005611691610921565b61169b919061330b565b6116a59190613394565b8211156116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de9061383f565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b86118ad565b73ffffffffffffffffffffffffffffffffffffffff166117d6611028565b73ffffffffffffffffffffffffffffffffffffffff161461182c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118239061358b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361189b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611892906138d1565b60405180910390fd5b6118a481612495565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b90613963565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906139f5565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a719190613040565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613a87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390613b19565b60405180910390fd5b60008103611b7557611b70838360006125fc565b612490565b611b7d611028565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611beb5750611bbb611028565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c245750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c775750600560149054906101000a900460ff16155b1561201557600a60009054906101000a900460ff16611d7157601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d315750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6790613b85565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e145750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e7657600954611e2583610d33565b82611e3091906134e9565b1115611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613bf1565b60405180910390fd5b612014565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f195750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6857600754811115611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90613c83565b60405180910390fd5b612013565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661201257600954611fc583610d33565b82611fd091906134e9565b1115612011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200890613bf1565b60405180910390fd5b5b5b5b5b600061202030610d33565b9050600060085482101590508080156120455750600a60019054906101000a900460ff165b801561205e5750600560149054906101000a900460ff16155b80156120b45750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561210a5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121605750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121a4576001600560146101000a81548160ff02191690831515021790555061218861287b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061225a5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561226457600090505b6000811561247757601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122c757506000600e54115b15612361576122f460646122e6600e5488612a8890919063ffffffff16565b612a9e90919063ffffffff16565b9050600e5460105482612307919061330b565b6123119190613394565b6012600082825461232291906134e9565b92505081905550600e54600f548261233a919061330b565b6123449190613394565b6011600082825461235591906134e9565b92505081905550612453565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123bc57506000600b54115b15612452576123e960646123db600b5488612a8890919063ffffffff16565b612a9e90919063ffffffff16565b9050600b54600d54826123fc919061330b565b6124069190613394565b6012600082825461241791906134e9565b92505081905550600b54600c548261242f919061330b565b6124399190613394565b6011600082825461244a91906134e9565b925050819055505b5b6000811115612468576124678730836125fc565b5b80856124749190613ca3565b94505b6124828787876125fc565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361266b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266290613a87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d190613b19565b60405180910390fd5b6126e5838383612ab4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561276b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276290613d49565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127fe91906134e9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128629190613040565b60405180910390a3612875848484612ab9565b50505050565b600061288630610d33565b9050600060115460125461289a91906134e9565b90506000808314806128ac5750600082145b156128b957505050612a86565b60146008546128c8919061330b565b8311156128e15760146008546128de919061330b565b92505b6000600283601254866128f4919061330b565b6128fe9190613394565b6129089190613394565b9050600061291f8286612abe90919063ffffffff16565b9050600047905061292f82612ad4565b60006129448247612abe90919063ffffffff16565b9050600061296f8761296160115485612a8890919063ffffffff16565b612a9e90919063ffffffff16565b90506000818361297f9190613ca3565b9050600060128190555060006011819055506000861180156129a15750600081115b156129ee576129b08682612d11565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826012546040516129e593929190613d69565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612a3490613dd1565b60006040518083038185875af1925050503d8060008114612a71576040519150601f19603f3d011682016040523d82523d6000602084013e612a76565b606091505b5050809750505050505050505050505b565b60008183612a96919061330b565b905092915050565b60008183612aac9190613394565b905092915050565b505050565b505050565b60008183612acc9190613ca3565b905092915050565b6000600267ffffffffffffffff811115612af157612af0613de6565b5b604051908082528060200260200182016040528015612b1f5781602001602082028036833780820191505090505b5090503081600081518110612b3757612b36613e15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c009190613e59565b81600181518110612c1457612c13613e15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c79307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846118b5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cdb959493929190613f7f565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505050505050565b612d3c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846118b5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612da396959493929190613fd9565b60606040518083038185885af1158015612dc1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612de6919061404f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e27578082015181840152602081019050612e0c565b83811115612e36576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e5882612ded565b612e628185612df8565b9350612e72818560208601612e09565b612e7b81612e3c565b840191505092915050565b60006020820190508181036000830152612ea08184612e4d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed882612ead565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b6000819050919050565b612f1e81612f0b565b8114612f2957600080fd5b50565b600081359050612f3b81612f15565b92915050565b60008060408385031215612f5857612f57612ea8565b5b6000612f6685828601612ef6565b9250506020612f7785828601612f2c565b9150509250929050565b60008115159050919050565b612f9681612f81565b82525050565b6000602082019050612fb16000830184612f8d565b92915050565b6000819050919050565b6000612fdc612fd7612fd284612ead565b612fb7565b612ead565b9050919050565b6000612fee82612fc1565b9050919050565b600061300082612fe3565b9050919050565b61301081612ff5565b82525050565b600060208201905061302b6000830184613007565b92915050565b61303a81612f0b565b82525050565b60006020820190506130556000830184613031565b92915050565b60006020828403121561307157613070612ea8565b5b600061307f84828501612f2c565b91505092915050565b6000806000606084860312156130a1576130a0612ea8565b5b60006130af86828701612ef6565b93505060206130c086828701612ef6565b92505060406130d186828701612f2c565b9150509250925092565b6130e481612ecd565b82525050565b60006020820190506130ff60008301846130db565b92915050565b600060ff82169050919050565b61311b81613105565b82525050565b60006020820190506131366000830184613112565b92915050565b60006020828403121561315257613151612ea8565b5b600061316084828501612ef6565b91505092915050565b61317281612f81565b811461317d57600080fd5b50565b60008135905061318f81613169565b92915050565b600080604083850312156131ac576131ab612ea8565b5b60006131ba85828601612ef6565b92505060206131cb85828601613180565b9150509250929050565b600080600080608085870312156131ef576131ee612ea8565b5b60006131fd87828801612f2c565b945050602061320e87828801612f2c565b935050604061321f87828801612f2c565b925050606061323087828801612f2c565b91505092959194509250565b6000806040838503121561325357613252612ea8565b5b600061326185828601612ef6565b925050602061327285828601612ef6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132c357607f821691505b6020821081036132d6576132d561327c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331682612f0b565b915061332183612f0b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561335a576133596132dc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061339f82612f0b565b91506133aa83612f0b565b9250826133ba576133b9613365565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613421602483612df8565b915061342c826133c5565b604082019050919050565b6000602082019050818103600083015261345081613414565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006134b3602883612df8565b91506134be82613457565b604082019050919050565b600060208201905081810360008301526134e2816134a6565b9050919050565b60006134f482612f0b565b91506134ff83612f0b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613534576135336132dc565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613575602083612df8565b91506135808261353f565b602082019050919050565b600060208201905081810360008301526135a481613568565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613607603983612df8565b9150613612826135ab565b604082019050919050565b60006020820190508181036000830152613636816135fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613699602583612df8565b91506136a48261363d565b604082019050919050565b600060208201905081810360008301526136c88161368c565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000613705601c83612df8565b9150613710826136cf565b602082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613797603583612df8565b91506137a28261373b565b604082019050919050565b600060208201905081810360008301526137c68161378a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613829603483612df8565b9150613834826137cd565b604082019050919050565b600060208201905081810360008301526138588161381c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138bb602683612df8565b91506138c68261385f565b604082019050919050565b600060208201905081810360008301526138ea816138ae565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061394d602483612df8565b9150613958826138f1565b604082019050919050565b6000602082019050818103600083015261397c81613940565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139df602283612df8565b91506139ea82613983565b604082019050919050565b60006020820190508181036000830152613a0e816139d2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a71602583612df8565b9150613a7c82613a15565b604082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b03602383612df8565b9150613b0e82613aa7565b604082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613b6f601683612df8565b9150613b7a82613b39565b602082019050919050565b60006020820190508181036000830152613b9e81613b62565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613bdb601383612df8565b9150613be682613ba5565b602082019050919050565b60006020820190508181036000830152613c0a81613bce565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613c6d603683612df8565b9150613c7882613c11565b604082019050919050565b60006020820190508181036000830152613c9c81613c60565b9050919050565b6000613cae82612f0b565b9150613cb983612f0b565b925082821015613ccc57613ccb6132dc565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d33602683612df8565b9150613d3e82613cd7565b604082019050919050565b60006020820190508181036000830152613d6281613d26565b9050919050565b6000606082019050613d7e6000830186613031565b613d8b6020830185613031565b613d986040830184613031565b949350505050565b600081905092915050565b50565b6000613dbb600083613da0565b9150613dc682613dab565b600082019050919050565b6000613ddc82613dae565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e5381612edf565b92915050565b600060208284031215613e6f57613e6e612ea8565b5b6000613e7d84828501613e44565b91505092915050565b6000819050919050565b6000613eab613ea6613ea184613e86565b612fb7565b612f0b565b9050919050565b613ebb81613e90565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ef681612ecd565b82525050565b6000613f088383613eed565b60208301905092915050565b6000602082019050919050565b6000613f2c82613ec1565b613f368185613ecc565b9350613f4183613edd565b8060005b83811015613f72578151613f598882613efc565b9750613f6483613f14565b925050600181019050613f45565b5085935050505092915050565b600060a082019050613f946000830188613031565b613fa16020830187613eb2565b8181036040830152613fb38186613f21565b9050613fc260608301856130db565b613fcf6080830184613031565b9695505050505050565b600060c082019050613fee60008301896130db565b613ffb6020830188613031565b6140086040830187613eb2565b6140156060830186613eb2565b61402260808301856130db565b61402f60a0830184613031565b979650505050505050565b60008151905061404981612f15565b92915050565b60008060006060848603121561406857614067612ea8565b5b60006140768682870161403a565b93505060206140878682870161403a565b92505060406140988682870161403a565b915050925092509256fea2646970667358221220534f8a85d21806b3371c062404bf911c2414d14f20c0a2d00d43439903eb49e064736f6c634300080f0033

Deployed Bytecode Sourcemap

14460:12126:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3908:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14536:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3315:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18396:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18673:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4085:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14639:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3214:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4585:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14594:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20600:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15071:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14919:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3431:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1119:112;;;;;;;;;;;;;:::i;:::-;;18958:124;;;;;;;;;;;;;:::i;:::-;;19094:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17769:112;;;;;;;;;;;;;:::i;:::-;;896:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3102:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20092:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4808:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3566:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14879:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19902:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19269:613;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14764:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17889:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14959:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3749:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14806:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14731:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1239:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14846:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2994:100;3048:13;3081:5;3074:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:100;:::o;3908:169::-;3991:4;4008:39;4017:12;:10;:12::i;:::-;4031:7;4040:6;4008:8;:39::i;:::-;4065:4;4058:11;;3908:169;;;;:::o;14536:51::-;;;:::o;3315:108::-;3376:7;3403:12;;3396:19;;3315:108;:::o;18396:263::-;18489:9;;;;;;;;;;;18473:25;;:12;:10;:12::i;:::-;:25;;;18465:34;;;;;;18568:4;18560;18555:1;18539:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18538:26;;;;:::i;:::-;18537:35;;;;:::i;:::-;18518:15;:54;;18510:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;18635:15;18623:9;:27;;;;18396:263;:::o;18673:277::-;18769:9;;;;;;;;;;;18753:25;;:12;:10;:12::i;:::-;:25;;;18745:34;;;;;;18848:4;18840;18835:1;18819:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18818:26;;;;:::i;:::-;18817:35;;;;:::i;:::-;18798:15;:54;;18790:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;18926:15;18903:20;:38;;;;18673:277;:::o;4085:492::-;4225:4;4242:36;4252:6;4260:9;4271:6;4242:9;:36::i;:::-;4291:24;4318:11;:19;4330:6;4318:19;;;;;;;;;;;;;;;:33;4338:12;:10;:12::i;:::-;4318:33;;;;;;;;;;;;;;;;4291:60;;4390:6;4370:16;:26;;4362:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4477:57;4486:6;4494:12;:10;:12::i;:::-;4527:6;4508:16;:25;4477:8;:57::i;:::-;4565:4;4558:11;;;4085:492;;;;;:::o;14639:53::-;14685:6;14639:53;:::o;3214:93::-;3272:5;3297:2;3290:9;;3214:93;:::o;4585:215::-;4673:4;4690:80;4699:12;:10;:12::i;:::-;4713:7;4759:10;4722:11;:25;4734:12;:10;:12::i;:::-;4722:25;;;;;;;;;;;;;;;:34;4748:7;4722:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4690:8;:80::i;:::-;4788:4;4781:11;;4585:215;;;;:::o;14594:38::-;;;:::o;20600:126::-;20666:4;20690:19;:28;20710:7;20690:28;;;;;;;;;;;;;;;;;;;;;;;;;20683:35;;20600:126;;;:::o;15071:28::-;;;;:::o;14919:31::-;;;;;;;;;;;;;:::o;3431:127::-;3505:7;3532:9;:18;3542:7;3532:18;;;;;;;;;;;;;;;;3525:25;;3431:127;;;:::o;1119:112::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1193:30:::1;1220:1;1193:18;:30::i;:::-;1119:112::o:0;18958:124::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19029:13:::1;:11;:13::i;:::-;19006:20;:36;;;;19061:13;:11;:13::i;:::-;19049:9;:25;;;;18958:124::o:0;19094:167::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19249:4:::1;19207:31;:39;19239:6;19207:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19094:167:::0;;:::o;17769:112::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17840:4:::1;17824:13;;:20;;;;;;;;;;;;;;;;;;17869:4;17855:11;;:18;;;;;;;;;;;;;;;;;;17769:112::o:0;896:87::-;942:7;969:6;;;;;;;;;;;962:13;;896:87;:::o;3102:104::-;3158:13;3191:7;3184:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3102:104;:::o;20092:304::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20236:13:::1;20228:21;;:4;:21;;::::0;20206:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20347:41;20376:4;20382:5;20347:28;:41::i;:::-;20092:304:::0;;:::o;4808:413::-;4901:4;4918:24;4945:11;:25;4957:12;:10;:12::i;:::-;4945:25;;;;;;;;;;;;;;;:34;4971:7;4945:34;;;;;;;;;;;;;;;;4918:61;;5018:15;4998:16;:35;;4990:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5111:67;5120:12;:10;:12::i;:::-;5134:7;5162:15;5143:16;:34;5111:8;:67::i;:::-;5209:4;5202:11;;;4808:413;;;;:::o;3566:175::-;3652:4;3669:42;3679:12;:10;:12::i;:::-;3693:9;3704:6;3669:9;:42::i;:::-;3729:4;3722:11;;3566:175;;;;:::o;14879:33::-;;;;;;;;;;;;;:::o;19902:182::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20018:8:::1;19987:19;:28;20007:7;19987:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20058:7;20042:34;;;20067:8;20042:34;;;;;;:::i;:::-;;;;;;;;19902:182:::0;;:::o;19269:613::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19431:12:::1;19413:15;:30;;;;19472:12;19454:15;:30;;;;19528:15;;19510;;:33;;;;:::i;:::-;19495:12;:48;;;;19575:13;19556:16;:32;;;;19618:13;19599:16;:32;;;;19677:16;;19658;;:35;;;;:::i;:::-;19642:13;:51;;;;19718:13;;19704:11;:27;;;;19768:1;19752:12;;:17;;19744:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19838:1;19821:13;;:18;;19813:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19269:613:::0;;;;:::o;14764:35::-;;;;:::o;17889:497::-;17997:4;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18076:6:::1;18071:1;18055:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18054:28;;;;:::i;:::-;18041:9;:41;;18019:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18231:4;18226:1;18210:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18209:26;;;;:::i;:::-;18196:9;:39;;18174:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;18347:9;18326:18;:30;;;;18374:4;18367:11;;17889:497:::0;;;:::o;14959:27::-;;;;:::o;3749:151::-;3838:7;3865:11;:18;3877:5;3865:18;;;;;;;;;;;;;;;:27;3884:7;3865:27;;;;;;;;;;;;;;;;3858:34;;3749:151;;;;:::o;14806:33::-;;;;:::o;14731:24::-;;;;;;;;;;;;;:::o;1239:201::-;1042:12;:10;:12::i;:::-;1031:23;;:7;:5;:7::i;:::-;:23;;;1023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1348:1:::1;1328:22;;:8;:22;;::::0;1320:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1404:28;1423:8;1404:18;:28::i;:::-;1239:201:::0;:::o;14846:24::-;;;;:::o;442:98::-;495:7;522:10;515:17;;442:98;:::o;6377:380::-;6530:1;6513:19;;:5;:19;;;6505:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6611:1;6592:21;;:7;:21;;;6584:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6695:6;6665:11;:18;6677:5;6665:18;;;;;;;;;;;;;;;:27;6684:7;6665:27;;;;;;;;;;;;;;;:36;;;;6733:7;6717:32;;6726:5;6717:32;;;6742:6;6717:32;;;;;;:::i;:::-;;;;;;;;6377:380;;;:::o;20734:3498::-;20882:1;20866:18;;:4;:18;;;20858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20959:1;20945:16;;:2;:16;;;20937:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21028:1;21018:6;:11;21014:93;;21046:28;21062:4;21068:2;21072:1;21046:15;:28::i;:::-;21089:7;;21014:93;21157:7;:5;:7::i;:::-;21149:15;;:4;:15;;;;:49;;;;;21191:7;:5;:7::i;:::-;21185:13;;:2;:13;;;;21149:49;:86;;;;;21233:1;21219:16;;:2;:16;;;;21149:86;:128;;;;;21270:6;21256:21;;:2;:21;;;;21149:128;:158;;;;;21299:8;;;;;;;;;;;21298:9;21149:158;21127:1515;;;21347:13;;;;;;;;;;;21342:223;;21419:19;:25;21439:4;21419:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21448:19;:23;21468:2;21448:23;;;;;;;;;;;;;;;;;;;;;;;;;21419:52;21385:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21342:223;21639:25;:31;21665:4;21639:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21696:31;:35;21728:2;21696:35;;;;;;;;;;;;;;;;;;;;;;;;;21695:36;21639:92;21613:1014;;;21856:9;;21839:13;21849:2;21839:9;:13::i;:::-;21830:6;:22;;;;:::i;:::-;:35;;21796:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21613:1014;;;22034:25;:29;22060:2;22034:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22089:31;:37;22121:4;22089:37;;;;;;;;;;;;;;;;;;;;;;;;;22088:38;22034:92;22008:619;;;22214:20;;22204:6;:30;;22170:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;22008:619;;;22407:31;:35;22439:2;22407:35;;;;;;;;;;;;;;;;;;;;;;;;;22402:225;;22527:9;;22510:13;22520:2;22510:9;:13::i;:::-;22501:6;:22;;;;:::i;:::-;:35;;22467:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22402:225;22008:619;21613:1014;21127:1515;22654:28;22685:24;22703:4;22685:9;:24::i;:::-;22654:55;;22722:12;22761:18;;22737:20;:42;;22722:57;;22810:7;:35;;;;;22834:11;;;;;;;;;;;22810:35;:61;;;;;22863:8;;;;;;;;;;;22862:9;22810:61;:110;;;;;22889:25;:31;22915:4;22889:31;;;;;;;;;;;;;;;;;;;;;;;;;22888:32;22810:110;:153;;;;;22938:19;:25;22958:4;22938:25;;;;;;;;;;;;;;;;;;;;;;;;;22937:26;22810:153;:194;;;;;22981:19;:23;23001:2;22981:23;;;;;;;;;;;;;;;;;;;;;;;;;22980:24;22810:194;22792:326;;;23042:4;23031:8;;:15;;;;;;;;;;;;;;;;;;23063:10;:8;:10::i;:::-;23101:5;23090:8;;:16;;;;;;;;;;;;;;;;;;22792:326;23130:12;23146:8;;;;;;;;;;;23145:9;23130:24;;23171:19;:25;23191:4;23171:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23200:19;:23;23220:2;23200:23;;;;;;;;;;;;;;;;;;;;;;;;;23171:52;23167:100;;;23250:5;23240:15;;23167:100;23279:12;23312:7;23308:831;;;23364:25;:29;23390:2;23364:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23413:1;23397:13;;:17;23364:50;23360:630;;;23442:34;23472:3;23442:25;23453:13;;23442:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23435:41;;23545:13;;23525:16;;23518:4;:23;;;;:::i;:::-;23517:41;;;;:::i;:::-;23495:18;;:63;;;;;;;:::i;:::-;;;;;;;;23627:13;;23607:16;;23600:4;:23;;;;:::i;:::-;23599:41;;;;:::i;:::-;23577:18;;:63;;;;;;;:::i;:::-;;;;;;;;23360:630;;;23702:25;:31;23728:4;23702:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23752:1;23737:12;;:16;23702:51;23698:292;;;23781:33;23810:3;23781:24;23792:12;;23781:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23774:40;;23882:12;;23863:15;;23856:4;:22;;;;:::i;:::-;23855:39;;;;:::i;:::-;23833:18;;:61;;;;;;;:::i;:::-;;;;;;;;23962:12;;23943:15;;23936:4;:22;;;;:::i;:::-;23935:39;;;;:::i;:::-;23913:18;;:61;;;;;;;:::i;:::-;;;;;;;;23698:292;23360:630;24017:1;24010:4;:8;24006:91;;;24039:42;24055:4;24069;24076;24039:15;:42::i;:::-;24006:91;24123:4;24113:14;;;;;:::i;:::-;;;23308:831;24151:33;24167:4;24173:2;24177:6;24151:15;:33::i;:::-;24211:11;;24195:13;:27;;;;20847:3385;;;;20734:3498;;;;:::o;1448:191::-;1522:16;1541:6;;;;;;;;;;;1522:25;;1567:8;1558:6;;:17;;;;;;;;;;;;;;;;;;1622:8;1591:40;;1612:8;1591:40;;;;;;;;;;;;1511:128;1448:191;:::o;20404:188::-;20521:5;20487:25;:31;20513:4;20487:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20578:5;20544:40;;20572:4;20544:40;;;;;;;;;;;;20404:188;;:::o;5229:733::-;5387:1;5369:20;;:6;:20;;;5361:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5471:1;5450:23;;:9;:23;;;5442:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5526:47;5547:6;5555:9;5566:6;5526:20;:47::i;:::-;5586:21;5610:9;:17;5620:6;5610:17;;;;;;;;;;;;;;;;5586:41;;5663:6;5646:13;:23;;5638:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5784:6;5768:13;:22;5748:9;:17;5758:6;5748:17;;;;;;;;;;;;;;;:42;;;;5836:6;5812:9;:20;5822:9;5812:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5877:9;5860:35;;5869:6;5860:35;;;5888:6;5860:35;;;;;;:::i;:::-;;;;;;;;5908:46;5928:6;5936:9;5947:6;5908:19;:46::i;:::-;5350:612;5229:733;;;:::o;25127:1456::-;25166:23;25192:24;25210:4;25192:9;:24::i;:::-;25166:50;;25227:25;25289:18;;25255;;:52;;;;:::i;:::-;25227:80;;25318:12;25366:1;25347:15;:20;:46;;;;25392:1;25371:17;:22;25347:46;25343:85;;;25410:7;;;;;25343:85;25483:2;25462:18;;:23;;;;:::i;:::-;25444:15;:41;25440:115;;;25541:2;25520:18;;:23;;;;:::i;:::-;25502:41;;25440:115;25567:23;25680:1;25647:17;25612:18;;25594:15;:36;;;;:::i;:::-;25593:71;;;;:::i;:::-;:88;;;;:::i;:::-;25567:114;;25692:26;25721:36;25741:15;25721;:19;;:36;;;;:::i;:::-;25692:65;;25770:25;25798:21;25770:49;;25832:36;25849:18;25832:16;:36::i;:::-;25881:18;25902:44;25928:17;25902:21;:25;;:44;;;;:::i;:::-;25881:65;;25959:23;25985:81;26038:17;25985:34;26000:18;;25985:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;25959:107;;26079:23;26118:15;26105:10;:28;;;;:::i;:::-;26079:54;;26167:1;26146:18;:22;;;;26200:1;26179:18;:22;;;;26236:1;26218:15;:19;:42;;;;;26259:1;26241:15;:19;26218:42;26214:278;;;26277:46;26290:15;26307;26277:12;:46::i;:::-;26343:137;26376:18;26413:15;26447:18;;26343:137;;;;;;;;:::i;:::-;;;;;;;;26214:278;26526:9;;;;;;;;;;;26518:23;;26549:21;26518:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26504:71;;;;;25155:1428;;;;;;;;;25127:1456;:::o;8383:98::-;8441:7;8472:1;8468;:5;;;;:::i;:::-;8461:12;;8383:98;;;;:::o;8489:::-;8547:7;8578:1;8574;:5;;;;:::i;:::-;8567:12;;8489:98;;;;:::o;6765:125::-;;;;:::o;6898:124::-;;;;:::o;8277:98::-;8335:7;8366:1;8362;:5;;;;:::i;:::-;8355:12;;8277:98;;;;:::o;24240:503::-;24308:21;24346:1;24332:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24308:40;;24377:4;24359;24364:1;24359:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24403:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24393:4;24398:1;24393:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24438:62;24455:4;24470:15;24488:11;24438:8;:62::i;:::-;24539:15;:66;;;24620:11;24646:1;24662:4;24689;24709:15;24539:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24295:448;24240:503;:::o;24751:368::-;24834:62;24851:4;24866:15;24884:11;24834:8;:62::i;:::-;24909:15;:31;;;24948:9;24981:4;25001:11;25027:1;25043;14685:6;25085:15;24909:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24751:368;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:118::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4472:118;;:::o;4596:222::-;4689:4;4727:2;4716:9;4712:18;4704:26;;4740:71;4808:1;4797:9;4793:17;4784:6;4740:71;:::i;:::-;4596:222;;;;:::o;4824:329::-;4883:6;4932:2;4920:9;4911:7;4907:23;4903:32;4900:119;;;4938:79;;:::i;:::-;4900:119;5058:1;5083:53;5128:7;5119:6;5108:9;5104:22;5083:53;:::i;:::-;5073:63;;5029:117;4824:329;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:329::-;6625:6;6674:2;6662:9;6653:7;6649:23;6645:32;6642:119;;;6680:79;;:::i;:::-;6642:119;6800:1;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6771:117;6566:329;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:765::-;7722:6;7730;7738;7746;7795:3;7783:9;7774:7;7770:23;7766:33;7763:120;;;7802:79;;:::i;:::-;7763:120;7922:1;7947:53;7992:7;7983:6;7972:9;7968:22;7947:53;:::i;:::-;7937:63;;7893:117;8049:2;8075:53;8120:7;8111:6;8100:9;8096:22;8075:53;:::i;:::-;8065:63;;8020:118;8177:2;8203:53;8248:7;8239:6;8228:9;8224:22;8203:53;:::i;:::-;8193:63;;8148:118;8305:2;8331:53;8376:7;8367:6;8356:9;8352:22;8331:53;:::i;:::-;8321:63;;8276:118;7636:765;;;;;;;:::o;8407:474::-;8475:6;8483;8532:2;8520:9;8511:7;8507:23;8503:32;8500:119;;;8538:79;;:::i;:::-;8500:119;8658:1;8683:53;8728:7;8719:6;8708:9;8704:22;8683:53;:::i;:::-;8673:63;;8629:117;8785:2;8811:53;8856:7;8847:6;8836:9;8832:22;8811:53;:::i;:::-;8801:63;;8756:118;8407:474;;;;;:::o;8887:180::-;8935:77;8932:1;8925:88;9032:4;9029:1;9022:15;9056:4;9053:1;9046:15;9073:320;9117:6;9154:1;9148:4;9144:12;9134:22;;9201:1;9195:4;9191:12;9222:18;9212:81;;9278:4;9270:6;9266:17;9256:27;;9212:81;9340:2;9332:6;9329:14;9309:18;9306:38;9303:84;;9359:18;;:::i;:::-;9303:84;9124:269;9073:320;;;:::o;9399:180::-;9447:77;9444:1;9437:88;9544:4;9541:1;9534:15;9568:4;9565:1;9558:15;9585:348;9625:7;9648:20;9666:1;9648:20;:::i;:::-;9643:25;;9682:20;9700:1;9682:20;:::i;:::-;9677:25;;9870:1;9802:66;9798:74;9795:1;9792:81;9787:1;9780:9;9773:17;9769:105;9766:131;;;9877:18;;:::i;:::-;9766:131;9925:1;9922;9918:9;9907:20;;9585:348;;;;:::o;9939:180::-;9987:77;9984:1;9977:88;10084:4;10081:1;10074:15;10108:4;10105:1;10098:15;10125:185;10165:1;10182:20;10200:1;10182:20;:::i;:::-;10177:25;;10216:20;10234:1;10216:20;:::i;:::-;10211:25;;10255:1;10245:35;;10260:18;;:::i;:::-;10245:35;10302:1;10299;10295:9;10290:14;;10125:185;;;;:::o;10316:223::-;10456:34;10452:1;10444:6;10440:14;10433:58;10525:6;10520:2;10512:6;10508:15;10501:31;10316:223;:::o;10545:366::-;10687:3;10708:67;10772:2;10767:3;10708:67;:::i;:::-;10701:74;;10784:93;10873:3;10784:93;:::i;:::-;10902:2;10897:3;10893:12;10886:19;;10545:366;;;:::o;10917:419::-;11083:4;11121:2;11110:9;11106:18;11098:26;;11170:9;11164:4;11160:20;11156:1;11145:9;11141:17;11134:47;11198:131;11324:4;11198:131;:::i;:::-;11190:139;;10917:419;;;:::o;11342:227::-;11482:34;11478:1;11470:6;11466:14;11459:58;11551:10;11546:2;11538:6;11534:15;11527:35;11342:227;:::o;11575:366::-;11717:3;11738:67;11802:2;11797:3;11738:67;:::i;:::-;11731:74;;11814:93;11903:3;11814:93;:::i;:::-;11932:2;11927:3;11923:12;11916:19;;11575:366;;;:::o;11947:419::-;12113:4;12151:2;12140:9;12136:18;12128:26;;12200:9;12194:4;12190:20;12186:1;12175:9;12171:17;12164:47;12228:131;12354:4;12228:131;:::i;:::-;12220:139;;11947:419;;;:::o;12372:305::-;12412:3;12431:20;12449:1;12431:20;:::i;:::-;12426:25;;12465:20;12483:1;12465:20;:::i;:::-;12460:25;;12619:1;12551:66;12547:74;12544:1;12541:81;12538:107;;;12625:18;;:::i;:::-;12538:107;12669:1;12666;12662:9;12655:16;;12372:305;;;;:::o;12683:182::-;12823:34;12819:1;12811:6;12807:14;12800:58;12683:182;:::o;12871:366::-;13013:3;13034:67;13098:2;13093:3;13034:67;:::i;:::-;13027:74;;13110:93;13199:3;13110:93;:::i;:::-;13228:2;13223:3;13219:12;13212:19;;12871:366;;;:::o;13243:419::-;13409:4;13447:2;13436:9;13432:18;13424:26;;13496:9;13490:4;13486:20;13482:1;13471:9;13467:17;13460:47;13524:131;13650:4;13524:131;:::i;:::-;13516:139;;13243:419;;;:::o;13668:244::-;13808:34;13804:1;13796:6;13792:14;13785:58;13877:27;13872:2;13864:6;13860:15;13853:52;13668:244;:::o;13918:366::-;14060:3;14081:67;14145:2;14140:3;14081:67;:::i;:::-;14074:74;;14157:93;14246:3;14157:93;:::i;:::-;14275:2;14270:3;14266:12;14259:19;;13918:366;;;:::o;14290:419::-;14456:4;14494:2;14483:9;14479:18;14471:26;;14543:9;14537:4;14533:20;14529:1;14518:9;14514:17;14507:47;14571:131;14697:4;14571:131;:::i;:::-;14563:139;;14290:419;;;:::o;14715:224::-;14855:34;14851:1;14843:6;14839:14;14832:58;14924:7;14919:2;14911:6;14907:15;14900:32;14715:224;:::o;14945:366::-;15087:3;15108:67;15172:2;15167:3;15108:67;:::i;:::-;15101:74;;15184:93;15273:3;15184:93;:::i;:::-;15302:2;15297:3;15293:12;15286:19;;14945:366;;;:::o;15317:419::-;15483:4;15521:2;15510:9;15506:18;15498:26;;15570:9;15564:4;15560:20;15556:1;15545:9;15541:17;15534:47;15598:131;15724:4;15598:131;:::i;:::-;15590:139;;15317:419;;;:::o;15742:178::-;15882:30;15878:1;15870:6;15866:14;15859:54;15742:178;:::o;15926:366::-;16068:3;16089:67;16153:2;16148:3;16089:67;:::i;:::-;16082:74;;16165:93;16254:3;16165:93;:::i;:::-;16283:2;16278:3;16274:12;16267:19;;15926:366;;;:::o;16298:419::-;16464:4;16502:2;16491:9;16487:18;16479:26;;16551:9;16545:4;16541:20;16537:1;16526:9;16522:17;16515:47;16579:131;16705:4;16579:131;:::i;:::-;16571:139;;16298:419;;;:::o;16723:240::-;16863:34;16859:1;16851:6;16847:14;16840:58;16932:23;16927:2;16919:6;16915:15;16908:48;16723:240;:::o;16969:366::-;17111:3;17132:67;17196:2;17191:3;17132:67;:::i;:::-;17125:74;;17208:93;17297:3;17208:93;:::i;:::-;17326:2;17321:3;17317:12;17310:19;;16969:366;;;:::o;17341:419::-;17507:4;17545:2;17534:9;17530:18;17522:26;;17594:9;17588:4;17584:20;17580:1;17569:9;17565:17;17558:47;17622:131;17748:4;17622:131;:::i;:::-;17614:139;;17341:419;;;:::o;17766:239::-;17906:34;17902:1;17894:6;17890:14;17883:58;17975:22;17970:2;17962:6;17958:15;17951:47;17766:239;:::o;18011:366::-;18153:3;18174:67;18238:2;18233:3;18174:67;:::i;:::-;18167:74;;18250:93;18339:3;18250:93;:::i;:::-;18368:2;18363:3;18359:12;18352:19;;18011:366;;;:::o;18383:419::-;18549:4;18587:2;18576:9;18572:18;18564:26;;18636:9;18630:4;18626:20;18622:1;18611:9;18607:17;18600:47;18664:131;18790:4;18664:131;:::i;:::-;18656:139;;18383:419;;;:::o;18808:225::-;18948:34;18944:1;18936:6;18932:14;18925:58;19017:8;19012:2;19004:6;19000:15;18993:33;18808:225;:::o;19039:366::-;19181:3;19202:67;19266:2;19261:3;19202:67;:::i;:::-;19195:74;;19278:93;19367:3;19278:93;:::i;:::-;19396:2;19391:3;19387:12;19380:19;;19039:366;;;:::o;19411:419::-;19577:4;19615:2;19604:9;19600:18;19592:26;;19664:9;19658:4;19654:20;19650:1;19639:9;19635:17;19628:47;19692:131;19818:4;19692:131;:::i;:::-;19684:139;;19411:419;;;:::o;19836:223::-;19976:34;19972:1;19964:6;19960:14;19953:58;20045:6;20040:2;20032:6;20028:15;20021:31;19836:223;:::o;20065:366::-;20207:3;20228:67;20292:2;20287:3;20228:67;:::i;:::-;20221:74;;20304:93;20393:3;20304:93;:::i;:::-;20422:2;20417:3;20413:12;20406:19;;20065:366;;;:::o;20437:419::-;20603:4;20641:2;20630:9;20626:18;20618:26;;20690:9;20684:4;20680:20;20676:1;20665:9;20661:17;20654:47;20718:131;20844:4;20718:131;:::i;:::-;20710:139;;20437:419;;;:::o;20862:221::-;21002:34;20998:1;20990:6;20986:14;20979:58;21071:4;21066:2;21058:6;21054:15;21047:29;20862:221;:::o;21089:366::-;21231:3;21252:67;21316:2;21311:3;21252:67;:::i;:::-;21245:74;;21328:93;21417:3;21328:93;:::i;:::-;21446:2;21441:3;21437:12;21430:19;;21089:366;;;:::o;21461:419::-;21627:4;21665:2;21654:9;21650:18;21642:26;;21714:9;21708:4;21704:20;21700:1;21689:9;21685:17;21678:47;21742:131;21868:4;21742:131;:::i;:::-;21734:139;;21461:419;;;:::o;21886:224::-;22026:34;22022:1;22014:6;22010:14;22003:58;22095:7;22090:2;22082:6;22078:15;22071:32;21886:224;:::o;22116:366::-;22258:3;22279:67;22343:2;22338:3;22279:67;:::i;:::-;22272:74;;22355:93;22444:3;22355:93;:::i;:::-;22473:2;22468:3;22464:12;22457:19;;22116:366;;;:::o;22488:419::-;22654:4;22692:2;22681:9;22677:18;22669:26;;22741:9;22735:4;22731:20;22727:1;22716:9;22712:17;22705:47;22769:131;22895:4;22769:131;:::i;:::-;22761:139;;22488:419;;;:::o;22913:222::-;23053:34;23049:1;23041:6;23037:14;23030:58;23122:5;23117:2;23109:6;23105:15;23098:30;22913:222;:::o;23141:366::-;23283:3;23304:67;23368:2;23363:3;23304:67;:::i;:::-;23297:74;;23380:93;23469:3;23380:93;:::i;:::-;23498:2;23493:3;23489:12;23482:19;;23141:366;;;:::o;23513:419::-;23679:4;23717:2;23706:9;23702:18;23694:26;;23766:9;23760:4;23756:20;23752:1;23741:9;23737:17;23730:47;23794:131;23920:4;23794:131;:::i;:::-;23786:139;;23513:419;;;:::o;23938:172::-;24078:24;24074:1;24066:6;24062:14;24055:48;23938:172;:::o;24116:366::-;24258:3;24279:67;24343:2;24338:3;24279:67;:::i;:::-;24272:74;;24355:93;24444:3;24355:93;:::i;:::-;24473:2;24468:3;24464:12;24457:19;;24116:366;;;:::o;24488:419::-;24654:4;24692:2;24681:9;24677:18;24669:26;;24741:9;24735:4;24731:20;24727:1;24716:9;24712:17;24705:47;24769:131;24895:4;24769:131;:::i;:::-;24761:139;;24488:419;;;:::o;24913:169::-;25053:21;25049:1;25041:6;25037:14;25030:45;24913:169;:::o;25088:366::-;25230:3;25251:67;25315:2;25310:3;25251:67;:::i;:::-;25244:74;;25327:93;25416:3;25327:93;:::i;:::-;25445:2;25440:3;25436:12;25429:19;;25088:366;;;:::o;25460:419::-;25626:4;25664:2;25653:9;25649:18;25641:26;;25713:9;25707:4;25703:20;25699:1;25688:9;25684:17;25677:47;25741:131;25867:4;25741:131;:::i;:::-;25733:139;;25460:419;;;:::o;25885:241::-;26025:34;26021:1;26013:6;26009:14;26002:58;26094:24;26089:2;26081:6;26077:15;26070:49;25885:241;:::o;26132:366::-;26274:3;26295:67;26359:2;26354:3;26295:67;:::i;:::-;26288:74;;26371:93;26460:3;26371:93;:::i;:::-;26489:2;26484:3;26480:12;26473:19;;26132:366;;;:::o;26504:419::-;26670:4;26708:2;26697:9;26693:18;26685:26;;26757:9;26751:4;26747:20;26743:1;26732:9;26728:17;26721:47;26785:131;26911:4;26785:131;:::i;:::-;26777:139;;26504:419;;;:::o;26929:191::-;26969:4;26989:20;27007:1;26989:20;:::i;:::-;26984:25;;27023:20;27041:1;27023:20;:::i;:::-;27018:25;;27062:1;27059;27056:8;27053:34;;;27067:18;;:::i;:::-;27053:34;27112:1;27109;27105:9;27097:17;;26929:191;;;;:::o;27126:225::-;27266:34;27262:1;27254:6;27250:14;27243:58;27335:8;27330:2;27322:6;27318:15;27311:33;27126:225;:::o;27357:366::-;27499:3;27520:67;27584:2;27579:3;27520:67;:::i;:::-;27513:74;;27596:93;27685:3;27596:93;:::i;:::-;27714:2;27709:3;27705:12;27698:19;;27357:366;;;:::o;27729:419::-;27895:4;27933:2;27922:9;27918:18;27910:26;;27982:9;27976:4;27972:20;27968:1;27957:9;27953:17;27946:47;28010:131;28136:4;28010:131;:::i;:::-;28002:139;;27729:419;;;:::o;28154:442::-;28303:4;28341:2;28330:9;28326:18;28318:26;;28354:71;28422:1;28411:9;28407:17;28398:6;28354:71;:::i;:::-;28435:72;28503:2;28492:9;28488:18;28479:6;28435:72;:::i;:::-;28517;28585:2;28574:9;28570:18;28561:6;28517:72;:::i;:::-;28154:442;;;;;;:::o;28602:147::-;28703:11;28740:3;28725:18;;28602:147;;;;:::o;28755:114::-;;:::o;28875:398::-;29034:3;29055:83;29136:1;29131:3;29055:83;:::i;:::-;29048:90;;29147:93;29236:3;29147:93;:::i;:::-;29265:1;29260:3;29256:11;29249:18;;28875:398;;;:::o;29279:379::-;29463:3;29485:147;29628:3;29485:147;:::i;:::-;29478:154;;29649:3;29642:10;;29279:379;;;:::o;29664:180::-;29712:77;29709:1;29702:88;29809:4;29806:1;29799:15;29833:4;29830:1;29823:15;29850:180;29898:77;29895:1;29888:88;29995:4;29992:1;29985:15;30019:4;30016:1;30009:15;30036:143;30093:5;30124:6;30118:13;30109:22;;30140:33;30167:5;30140:33;:::i;:::-;30036:143;;;;:::o;30185:351::-;30255:6;30304:2;30292:9;30283:7;30279:23;30275:32;30272:119;;;30310:79;;:::i;:::-;30272:119;30430:1;30455:64;30511:7;30502:6;30491:9;30487:22;30455:64;:::i;:::-;30445:74;;30401:128;30185:351;;;;:::o;30542:85::-;30587:7;30616:5;30605:16;;30542:85;;;:::o;30633:158::-;30691:9;30724:61;30742:42;30751:32;30777:5;30751:32;:::i;:::-;30742:42;:::i;:::-;30724:61;:::i;:::-;30711:74;;30633:158;;;:::o;30797:147::-;30892:45;30931:5;30892:45;:::i;:::-;30887:3;30880:58;30797:147;;:::o;30950:114::-;31017:6;31051:5;31045:12;31035:22;;30950:114;;;:::o;31070:184::-;31169:11;31203:6;31198:3;31191:19;31243:4;31238:3;31234:14;31219:29;;31070:184;;;;:::o;31260:132::-;31327:4;31350:3;31342:11;;31380:4;31375:3;31371:14;31363:22;;31260:132;;;:::o;31398:108::-;31475:24;31493:5;31475:24;:::i;:::-;31470:3;31463:37;31398:108;;:::o;31512:179::-;31581:10;31602:46;31644:3;31636:6;31602:46;:::i;:::-;31680:4;31675:3;31671:14;31657:28;;31512:179;;;;:::o;31697:113::-;31767:4;31799;31794:3;31790:14;31782:22;;31697:113;;;:::o;31846:732::-;31965:3;31994:54;32042:5;31994:54;:::i;:::-;32064:86;32143:6;32138:3;32064:86;:::i;:::-;32057:93;;32174:56;32224:5;32174:56;:::i;:::-;32253:7;32284:1;32269:284;32294:6;32291:1;32288:13;32269:284;;;32370:6;32364:13;32397:63;32456:3;32441:13;32397:63;:::i;:::-;32390:70;;32483:60;32536:6;32483:60;:::i;:::-;32473:70;;32329:224;32316:1;32313;32309:9;32304:14;;32269:284;;;32273:14;32569:3;32562:10;;31970:608;;;31846:732;;;;:::o;32584:831::-;32847:4;32885:3;32874:9;32870:19;32862:27;;32899:71;32967:1;32956:9;32952:17;32943:6;32899:71;:::i;:::-;32980:80;33056:2;33045:9;33041:18;33032:6;32980:80;:::i;:::-;33107:9;33101:4;33097:20;33092:2;33081:9;33077:18;33070:48;33135:108;33238:4;33229:6;33135:108;:::i;:::-;33127:116;;33253:72;33321:2;33310:9;33306:18;33297:6;33253:72;:::i;:::-;33335:73;33403:3;33392:9;33388:19;33379:6;33335:73;:::i;:::-;32584:831;;;;;;;;:::o;33421:807::-;33670:4;33708:3;33697:9;33693:19;33685:27;;33722:71;33790:1;33779:9;33775:17;33766:6;33722:71;:::i;:::-;33803:72;33871:2;33860:9;33856:18;33847:6;33803:72;:::i;:::-;33885:80;33961:2;33950:9;33946:18;33937:6;33885:80;:::i;:::-;33975;34051:2;34040:9;34036:18;34027:6;33975:80;:::i;:::-;34065:73;34133:3;34122:9;34118:19;34109:6;34065:73;:::i;:::-;34148;34216:3;34205:9;34201:19;34192:6;34148:73;:::i;:::-;33421:807;;;;;;;;;:::o;34234:143::-;34291:5;34322:6;34316:13;34307:22;;34338:33;34365:5;34338:33;:::i;:::-;34234:143;;;;:::o;34383:663::-;34471:6;34479;34487;34536:2;34524:9;34515:7;34511:23;34507:32;34504:119;;;34542:79;;:::i;:::-;34504:119;34662:1;34687:64;34743:7;34734:6;34723:9;34719:22;34687:64;:::i;:::-;34677:74;;34633:128;34800:2;34826:64;34882:7;34873:6;34862:9;34858:22;34826:64;:::i;:::-;34816:74;;34771:129;34939:2;34965:64;35021:7;35012:6;35001:9;34997:22;34965:64;:::i;:::-;34955:74;;34910:129;34383:663;;;;;:::o

Swarm Source

ipfs://534f8a85d21806b3371c062404bf911c2414d14f20c0a2d00d43439903eb49e0
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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