ETH Price: $3,492.71 (+2.29%)

Token

Genius AI (GENIUS)
 

Overview

Max Total Supply

1,000,000 GENIUS

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 GENIUS

Value
$0.00
0xC8ecd80473014813dD70B1D8179465b8600A249c
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:
GENIUSAI

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

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

/* Analyze smart contracts using AI and receive results on Telegram. Unlock exclusive perks with different thresholds of Genius tokens.
Make trading easier with readable code analysis. Discover the power of our specially trained AI model for crypto.

Bot : https://t.me/thisisgeniusbot
Portal : https://t.me/geniusportal
Website : thisisgenius.ai
Twitter : https://twitter.com/GeniusAI_Crypto
*/

// SPDX-License-Identifier: Apache-2.0
pragma solidity >=0.8.19;

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

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 Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    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 burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    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 GENIUSAI 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 marketingWallet;

    uint256 public swapTokensAtAmount;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

    bool public lpBurnEnabled = true;
    uint256 public percentForLPBurn = 25; // 25 = .25%
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

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

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

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;

    bool public limitsInEffect = true;

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

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

    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    constructor() ERC20("Genius AI", "GENIUS") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;

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

        uint256 _buyMarketingFee = 28;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 28;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1_000_000 * 1e9;

        maxTransactionAmount = (totalSupply) / 50;
        maxWallet = (totalSupply) / 50;

        swapTokensAtAmount = (totalSupply * 5) / 10000; 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

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

        marketingWallet = address(0x6904a5601Cb977D6FAF8aF633C14BA4B4F30C657); //

        // exclude from paying fees
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[marketingWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(0xdead)] = true;

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

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

    receive() external payable {}

    function AITRADE() external onlyOwner returns (bool) {
        buyMarketingFee = 6;
        buyLiquidityFee = 0;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        sellTotalFees = 6;
        sellMarketingFee = 6;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        limitsInEffect = false;
        return true;
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.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);
    }

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

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

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

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

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

        // Halve the amount of liquidity tokens
        uint256 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(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AITRADE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"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":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a5f6101000a81548160ff0219169083151502179055506019600b55610e10600c55610708600e55600160185f6101000a81548160ff02191690831515021790555034801562000055575f80fd5b506040518060400160405280600981526020017f47656e69757320414900000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f47454e49555300000000000000000000000000000000000000000000000000008152508160039081620000d3919062000c53565b508060049081620000e5919062000c53565b5050505f620000f9620007a860201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000252919062000d9c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002de919062000d9c565b6040518363ffffffff1660e01b8152600401620002fd92919062000ddd565b6020604051808303815f875af11580156200031a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000340919062000d9c565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200038860a0516001620007af60201b60201c565b5f601c90505f80601c90505f8066038d7ea4c680009050603281620003ae919062000e62565b600881905550603281620003c3919062000e62565b600981905550612710600582620003db919062000e99565b620003e7919062000e62565b60078190555084601181905550836012819055506012546011546200040d919062000ee3565b601081905550826014819055508160158190555060155460145462000433919062000ee3565b601381905550736904a5601cb977d6faf8af633c14ba4b4f30c65760065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160195f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160195f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160195f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160195f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601a5f620006196200084d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601a5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200079c33826200087560201b60201c565b50505050505062000fc7565b5f33905090565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008dd9062000f7b565b60405180910390fd5b620008f95f8383620009e560201b60201c565b8060025f8282546200090c919062000ee3565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000960919062000ee3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009c6919062000fac565b60405180910390a3620009e15f8383620009ea60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a6b57607f821691505b60208210810362000a815762000a8062000a26565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ae57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aa8565b62000af1868362000aa8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b3b62000b3562000b2f8462000b09565b62000b12565b62000b09565b9050919050565b5f819050919050565b62000b568362000b1b565b62000b6e62000b658262000b42565b84845462000ab4565b825550505050565b5f90565b62000b8462000b76565b62000b9181848462000b4b565b505050565b5b8181101562000bb85762000bac5f8262000b7a565b60018101905062000b97565b5050565b601f82111562000c075762000bd18162000a87565b62000bdc8462000a99565b8101602085101562000bec578190505b62000c0462000bfb8562000a99565b83018262000b96565b50505b505050565b5f82821c905092915050565b5f62000c295f198460080262000c0c565b1980831691505092915050565b5f62000c43838362000c18565b9150826002028217905092915050565b62000c5e82620009ef565b67ffffffffffffffff81111562000c7a5762000c79620009f9565b5b62000c86825462000a53565b62000c9382828562000bbc565b5f60209050601f83116001811462000cc9575f841562000cb4578287015190505b62000cc0858262000c36565b86555062000d2f565b601f19841662000cd98662000a87565b5f5b8281101562000d025784890151825560018201915060208501945060208101905062000cdb565b8683101562000d22578489015162000d1e601f89168262000c18565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d668262000d3b565b9050919050565b62000d788162000d5a565b811462000d83575f80fd5b50565b5f8151905062000d968162000d6d565b92915050565b5f6020828403121562000db45762000db362000d37565b5b5f62000dc38482850162000d86565b91505092915050565b62000dd78162000d5a565b82525050565b5f60408201905062000df25f83018562000dcc565b62000e01602083018462000dcc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e6e8262000b09565b915062000e7b8362000b09565b92508262000e8e5762000e8d62000e08565b5b828204905092915050565b5f62000ea58262000b09565b915062000eb28362000b09565b925082820262000ec28162000b09565b9150828204841483151762000edc5762000edb62000e35565b5b5092915050565b5f62000eef8262000b09565b915062000efc8362000b09565b925082820190508082111562000f175762000f1662000e35565b5b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f63601f8362000f1d565b915062000f708262000f2d565b602082019050919050565b5f6020820190508181035f83015262000f948162000f55565b9050919050565b62000fa68162000b09565b82525050565b5f60208201905062000fc15f83018462000f9b565b92915050565b60805160a051613778620010215f395f8181610d02015281816123ce0152818161248301526124af01525f81816109fc01528181612647015281816127260152818161274d015281816127e3015261280a01526137785ff3fe608060405260043610610233575f3560e01c806370a082311161012d578063a9059cbb116100aa578063e2f456051161006e578063e2f4560514610860578063f11a24d31461088a578063f2fde38b146108b4578063f6374342146108dc578063f8b45b05146109065761023a565b8063a9059cbb14610758578063b62496f514610794578063c8c8ebe4146107d0578063d85ba063146107fa578063dd62ed3e146108245761023a565b806392136913116100f1578063921369131461067457806395d89b411461069e5780639ec22c0e146106c8578063a457c2d7146106f2578063a4c82a001461072e5761023a565b806370a08231146105a4578063715018a6146105e057806375f0a874146105f65780637bce5a04146106205780638da5cb5b1461064a5761023a565b806323b872dd116101bb578063395093511161017f57806339509351146104c05780633eca918e146104fc57806349bd5a5e146105265780634a62bb65146105505780636a486a8e1461057a5761023a565b806323b872dd146103dc57806327c8f835146104185780632c3e486c146104425780632e82f1a01461046c578063313ce567146104965761023a565b806318160ddd1161020257806318160ddd1461030a578063184c16c514610334578063199ffc721461035e5780631a8145bb146103885780631f3fed8f146103b25761023a565b806306fdde031461023e578063095ea7b31461026857806310d5de53146102a45780631694505e146102e05761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610252610930565b60405161025f9190612940565b60405180910390f35b348015610273575f80fd5b5061028e600480360381019061028991906129f1565b6109c0565b60405161029b9190612a49565b60405180910390f35b3480156102af575f80fd5b506102ca60048036038101906102c59190612a62565b6109dd565b6040516102d79190612a49565b60405180910390f35b3480156102eb575f80fd5b506102f46109fa565b6040516103019190612ae8565b60405180910390f35b348015610315575f80fd5b5061031e610a1e565b60405161032b9190612b10565b60405180910390f35b34801561033f575f80fd5b50610348610a27565b6040516103559190612b10565b60405180910390f35b348015610369575f80fd5b50610372610a2d565b60405161037f9190612b10565b60405180910390f35b348015610393575f80fd5b5061039c610a33565b6040516103a99190612b10565b60405180910390f35b3480156103bd575f80fd5b506103c6610a39565b6040516103d39190612b10565b60405180910390f35b3480156103e7575f80fd5b5061040260048036038101906103fd9190612b29565b610a3f565b60405161040f9190612a49565b60405180910390f35b348015610423575f80fd5b5061042c610b31565b6040516104399190612b88565b60405180910390f35b34801561044d575f80fd5b50610456610b37565b6040516104639190612b10565b60405180910390f35b348015610477575f80fd5b50610480610b3d565b60405161048d9190612a49565b60405180910390f35b3480156104a1575f80fd5b506104aa610b4f565b6040516104b79190612bbc565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e191906129f1565b610b57565b6040516104f39190612a49565b60405180910390f35b348015610507575f80fd5b50610510610bfe565b60405161051d9190612a49565b60405180910390f35b348015610531575f80fd5b5061053a610d00565b6040516105479190612b88565b60405180910390f35b34801561055b575f80fd5b50610564610d24565b6040516105719190612a49565b60405180910390f35b348015610585575f80fd5b5061058e610d36565b60405161059b9190612b10565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c59190612a62565b610d3c565b6040516105d79190612b10565b60405180910390f35b3480156105eb575f80fd5b506105f4610d81565b005b348015610601575f80fd5b5061060a610ed4565b6040516106179190612b88565b60405180910390f35b34801561062b575f80fd5b50610634610ef9565b6040516106419190612b10565b60405180910390f35b348015610655575f80fd5b5061065e610eff565b60405161066b9190612b88565b60405180910390f35b34801561067f575f80fd5b50610688610f27565b6040516106959190612b10565b60405180910390f35b3480156106a9575f80fd5b506106b2610f2d565b6040516106bf9190612940565b60405180910390f35b3480156106d3575f80fd5b506106dc610fbd565b6040516106e99190612b10565b60405180910390f35b3480156106fd575f80fd5b50610718600480360381019061071391906129f1565b610fc3565b6040516107259190612a49565b60405180910390f35b348015610739575f80fd5b506107426110a9565b60405161074f9190612b10565b60405180910390f35b348015610763575f80fd5b5061077e600480360381019061077991906129f1565b6110af565b60405161078b9190612a49565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b59190612a62565b6110cc565b6040516107c79190612a49565b60405180910390f35b3480156107db575f80fd5b506107e46110e9565b6040516107f19190612b10565b60405180910390f35b348015610805575f80fd5b5061080e6110ef565b60405161081b9190612b10565b60405180910390f35b34801561082f575f80fd5b5061084a60048036038101906108459190612bd5565b6110f5565b6040516108579190612b10565b60405180910390f35b34801561086b575f80fd5b50610874611177565b6040516108819190612b10565b60405180910390f35b348015610895575f80fd5b5061089e61117d565b6040516108ab9190612b10565b60405180910390f35b3480156108bf575f80fd5b506108da60048036038101906108d59190612a62565b611183565b005b3480156108e7575f80fd5b506108f0611345565b6040516108fd9190612b10565b60405180910390f35b348015610911575f80fd5b5061091a61134b565b6040516109279190612b10565b60405180910390f35b60606003805461093f90612c40565b80601f016020809104026020016040519081016040528092919081815260200182805461096b90612c40565b80156109b65780601f1061098d576101008083540402835291602001916109b6565b820191905f5260205f20905b81548152906001019060200180831161099957829003601f168201915b5050505050905090565b5f6109d36109cc611351565b8484611358565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b600e5481565b600b5481565b60175481565b60165481565b5f610a4b84848461151b565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a92611351565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612ce0565b60405180910390fd5b610b2585610b1d611351565b858403611358565b60019150509392505050565b61dead81565b600c5481565b600a5f9054906101000a900460ff1681565b5f6009905090565b5f610bf4610b63611351565b848460015f610b70611351565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bef9190612d2b565b611358565b6001905092915050565b5f610c07611351565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90612da8565b60405180910390fd5b60066011819055505f601281905550601254601154610cb49190612d2b565b60108190555060066013819055506006601481905550601554601454610cda9190612d2b565b6013819055505f60185f6101000a81548160ff0219169083151502179055506001905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60185f9054906101000a900460ff1681565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d89611351565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90612da8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b606060048054610f3c90612c40565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6890612c40565b8015610fb35780601f10610f8a57610100808354040283529160200191610fb3565b820191905f5260205f20905b815481529060010190602001808311610f9657829003601f168201915b5050505050905090565b600f5481565b5f8060015f610fd0611351565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190612e36565b60405180910390fd5b61109e611095611351565b85858403611358565b600191505092915050565b600d5481565b5f6110c26110bb611351565b848461151b565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b60085481565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b60125481565b61118b611351565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612da8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90612ec4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90612f52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90612fe0565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161150e9190612b10565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115809061306e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906130fc565b60405180910390fd5b5f810361160e5761160983835f611f37565b611f32565b60185f9054906101000a900460ff1615611a035761162a610eff565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116985750611668610eff565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116d057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561170a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117235750600560149054906101000a900460ff16155b15611a0257601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156117c55750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561186c5760085481111561180f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118069061318a565b60405180910390fd5b60095461181b83610d3c565b826118269190612d2b565b1115611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906131f2565b60405180910390fd5b611a01565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156119095750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561195857600854811115611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194a90613280565b60405180910390fd5b611a00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166119ff576009546119b283610d3c565b826119bd9190612d2b565b11156119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906131f2565b60405180910390fd5b5b5b5b5b5b5f611a0d30610d3c565b90505f6007548210159050808015611a325750600560149054906101000a900460ff16155b8015611a855750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ad8575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b2b575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6e576001600560146101000a81548160ff021916908315150217905550611b536121ac565b5f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015611bd15750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611be85750600a5f9054906101000a900460ff165b8015611c035750600c54600d54611bff9190612d2b565b4210155b8015611c56575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c6557611c636123a7565b505b5f600560149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d14575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611d1d575f90505b5f8115611f2257601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d7b57505f601354115b15611e1357611da86064611d9a6013548861256190919063ffffffff16565b61257690919063ffffffff16565b905060135460155482611dbb919061329e565b611dc5919061330c565b60175f828254611dd59190612d2b565b9250508190555060135460145482611ded919061329e565b611df7919061330c565b60165f828254611e079190612d2b565b92505081905550611eff565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e6a57505f601054115b15611efe57611e976064611e896010548861256190919063ffffffff16565b61257690919063ffffffff16565b905060105460125482611eaa919061329e565b611eb4919061330c565b60175f828254611ec49190612d2b565b9250508190555060105460115482611edc919061329e565b611ee6919061330c565b60165f828254611ef69190612d2b565b925050819055505b5b5f811115611f1357611f12873083611f37565b5b8085611f1f919061333c565b94505b611f2d878787611f37565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c9061306e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a906130fc565b60405180910390fd5b61201e83838361258b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612098906133df565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461212f9190612d2b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121939190612b10565b60405180910390a36121a6848484612590565b50505050565b5f6121b630610d3c565b90505f6016546017546121c99190612d2b565b90505f808314806121d957505f82145b156121e6575050506123a5565b60146007546121f5919061329e565b83111561220e57601460075461220b919061329e565b92505b5f60028360175486612220919061329e565b61222a919061330c565b612234919061330c565b90505f61224a828661259590919063ffffffff16565b90505f479050612259826125aa565b5f61226d824761259590919063ffffffff16565b90505f612297876122896016548561256190919063ffffffff16565b61257690919063ffffffff16565b90505f81836122a6919061333c565b90505f6017819055505f6016819055505f861180156122c457505f81115b15612311576122d386826127dd565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601754604051612308939291906133fd565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123569061345f565b5f6040518083038185875af1925050503d805f8114612390576040519150601f19603f3d011682016040523d82523d5f602084013e612395565b606091505b5050809750505050505050505050505b565b5f42600d819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016124099190612b88565b602060405180830381865afa158015612424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124489190613487565b90505f612474612710612466600b548561256190919063ffffffff16565b61257690919063ffffffff16565b90505f8111156124ac576124ab7f000000000000000000000000000000000000000000000000000000000000000061dead83611f37565b5b5f7f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612515575f80fd5b505af1158015612527573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b5f818361256e919061329e565b905092915050565b5f8183612583919061330c565b905092915050565b505050565b505050565b5f81836125a2919061333c565b905092915050565b5f600267ffffffffffffffff8111156125c6576125c56134b2565b5b6040519080825280602002602001820160405280156125f45781602001602082028036833780820191505090505b50905030815f8151811061260b5761260a6134df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d29190613520565b816001815181106126e6576126e56134df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061274b307f000000000000000000000000000000000000000000000000000000000000000084611358565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127ac95949392919061363b565b5f604051808303815f87803b1580156127c3575f80fd5b505af11580156127d5573d5f803e3d5ffd5b505050505050565b612808307f000000000000000000000000000000000000000000000000000000000000000084611358565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b815260040161286e96959493929190613693565b60606040518083038185885af115801561288a573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906128af91906136f2565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128ed5780820151818401526020810190506128d2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612912826128b6565b61291c81856128c0565b935061292c8185602086016128d0565b612935816128f8565b840191505092915050565b5f6020820190508181035f8301526129588184612908565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61298d82612964565b9050919050565b61299d81612983565b81146129a7575f80fd5b50565b5f813590506129b881612994565b92915050565b5f819050919050565b6129d0816129be565b81146129da575f80fd5b50565b5f813590506129eb816129c7565b92915050565b5f8060408385031215612a0757612a06612960565b5b5f612a14858286016129aa565b9250506020612a25858286016129dd565b9150509250929050565b5f8115159050919050565b612a4381612a2f565b82525050565b5f602082019050612a5c5f830184612a3a565b92915050565b5f60208284031215612a7757612a76612960565b5b5f612a84848285016129aa565b91505092915050565b5f819050919050565b5f612ab0612aab612aa684612964565b612a8d565b612964565b9050919050565b5f612ac182612a96565b9050919050565b5f612ad282612ab7565b9050919050565b612ae281612ac8565b82525050565b5f602082019050612afb5f830184612ad9565b92915050565b612b0a816129be565b82525050565b5f602082019050612b235f830184612b01565b92915050565b5f805f60608486031215612b4057612b3f612960565b5b5f612b4d868287016129aa565b9350506020612b5e868287016129aa565b9250506040612b6f868287016129dd565b9150509250925092565b612b8281612983565b82525050565b5f602082019050612b9b5f830184612b79565b92915050565b5f60ff82169050919050565b612bb681612ba1565b82525050565b5f602082019050612bcf5f830184612bad565b92915050565b5f8060408385031215612beb57612bea612960565b5b5f612bf8858286016129aa565b9250506020612c09858286016129aa565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c5757607f821691505b602082108103612c6a57612c69612c13565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612cca6028836128c0565b9150612cd582612c70565b604082019050919050565b5f6020820190508181035f830152612cf781612cbe565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d35826129be565b9150612d40836129be565b9250828201905080821115612d5857612d57612cfe565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d926020836128c0565b9150612d9d82612d5e565b602082019050919050565b5f6020820190508181035f830152612dbf81612d86565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e206025836128c0565b9150612e2b82612dc6565b604082019050919050565b5f6020820190508181035f830152612e4d81612e14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612eae6026836128c0565b9150612eb982612e54565b604082019050919050565b5f6020820190508181035f830152612edb81612ea2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f3c6024836128c0565b9150612f4782612ee2565b604082019050919050565b5f6020820190508181035f830152612f6981612f30565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fca6022836128c0565b9150612fd582612f70565b604082019050919050565b5f6020820190508181035f830152612ff781612fbe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130586025836128c0565b915061306382612ffe565b604082019050919050565b5f6020820190508181035f8301526130858161304c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130e66023836128c0565b91506130f18261308c565b604082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6131746035836128c0565b915061317f8261311a565b604082019050919050565b5f6020820190508181035f8301526131a181613168565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6131dc6013836128c0565b91506131e7826131a8565b602082019050919050565b5f6020820190508181035f830152613209816131d0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61326a6036836128c0565b915061327582613210565b604082019050919050565b5f6020820190508181035f8301526132978161325e565b9050919050565b5f6132a8826129be565b91506132b3836129be565b92508282026132c1816129be565b915082820484148315176132d8576132d7612cfe565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613316826129be565b9150613321836129be565b925082613331576133306132df565b5b828204905092915050565b5f613346826129be565b9150613351836129be565b925082820390508181111561336957613368612cfe565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6133c96026836128c0565b91506133d48261336f565b604082019050919050565b5f6020820190508181035f8301526133f6816133bd565b9050919050565b5f6060820190506134105f830186612b01565b61341d6020830185612b01565b61342a6040830184612b01565b949350505050565b5f81905092915050565b50565b5f61344a5f83613432565b91506134558261343c565b5f82019050919050565b5f6134698261343f565b9150819050919050565b5f81519050613481816129c7565b92915050565b5f6020828403121561349c5761349b612960565b5b5f6134a984828501613473565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061351a81612994565b92915050565b5f6020828403121561353557613534612960565b5b5f6135428482850161350c565b91505092915050565b5f819050919050565b5f61356e6135696135648461354b565b612a8d565b6129be565b9050919050565b61357e81613554565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135b681612983565b82525050565b5f6135c783836135ad565b60208301905092915050565b5f602082019050919050565b5f6135e982613584565b6135f3818561358e565b93506135fe8361359e565b805f5b8381101561362e57815161361588826135bc565b9750613620836135d3565b925050600181019050613601565b5085935050505092915050565b5f60a08201905061364e5f830188612b01565b61365b6020830187613575565b818103604083015261366d81866135df565b905061367c6060830185612b79565b6136896080830184612b01565b9695505050505050565b5f60c0820190506136a65f830189612b79565b6136b36020830188612b01565b6136c06040830187613575565b6136cd6060830186613575565b6136da6080830185612b79565b6136e760a0830184612b01565b979650505050505050565b5f805f6060848603121561370957613708612960565b5b5f61371686828701613473565b935050602061372786828701613473565b925050604061373886828701613473565b915050925092509256fea2646970667358221220ed3af36c1066db902d8248c77ba2cf2bb491de5894e496c36959398aae1067bf64736f6c63430008160033

Deployed Bytecode

0x608060405260043610610233575f3560e01c806370a082311161012d578063a9059cbb116100aa578063e2f456051161006e578063e2f4560514610860578063f11a24d31461088a578063f2fde38b146108b4578063f6374342146108dc578063f8b45b05146109065761023a565b8063a9059cbb14610758578063b62496f514610794578063c8c8ebe4146107d0578063d85ba063146107fa578063dd62ed3e146108245761023a565b806392136913116100f1578063921369131461067457806395d89b411461069e5780639ec22c0e146106c8578063a457c2d7146106f2578063a4c82a001461072e5761023a565b806370a08231146105a4578063715018a6146105e057806375f0a874146105f65780637bce5a04146106205780638da5cb5b1461064a5761023a565b806323b872dd116101bb578063395093511161017f57806339509351146104c05780633eca918e146104fc57806349bd5a5e146105265780634a62bb65146105505780636a486a8e1461057a5761023a565b806323b872dd146103dc57806327c8f835146104185780632c3e486c146104425780632e82f1a01461046c578063313ce567146104965761023a565b806318160ddd1161020257806318160ddd1461030a578063184c16c514610334578063199ffc721461035e5780631a8145bb146103885780631f3fed8f146103b25761023a565b806306fdde031461023e578063095ea7b31461026857806310d5de53146102a45780631694505e146102e05761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610252610930565b60405161025f9190612940565b60405180910390f35b348015610273575f80fd5b5061028e600480360381019061028991906129f1565b6109c0565b60405161029b9190612a49565b60405180910390f35b3480156102af575f80fd5b506102ca60048036038101906102c59190612a62565b6109dd565b6040516102d79190612a49565b60405180910390f35b3480156102eb575f80fd5b506102f46109fa565b6040516103019190612ae8565b60405180910390f35b348015610315575f80fd5b5061031e610a1e565b60405161032b9190612b10565b60405180910390f35b34801561033f575f80fd5b50610348610a27565b6040516103559190612b10565b60405180910390f35b348015610369575f80fd5b50610372610a2d565b60405161037f9190612b10565b60405180910390f35b348015610393575f80fd5b5061039c610a33565b6040516103a99190612b10565b60405180910390f35b3480156103bd575f80fd5b506103c6610a39565b6040516103d39190612b10565b60405180910390f35b3480156103e7575f80fd5b5061040260048036038101906103fd9190612b29565b610a3f565b60405161040f9190612a49565b60405180910390f35b348015610423575f80fd5b5061042c610b31565b6040516104399190612b88565b60405180910390f35b34801561044d575f80fd5b50610456610b37565b6040516104639190612b10565b60405180910390f35b348015610477575f80fd5b50610480610b3d565b60405161048d9190612a49565b60405180910390f35b3480156104a1575f80fd5b506104aa610b4f565b6040516104b79190612bbc565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e191906129f1565b610b57565b6040516104f39190612a49565b60405180910390f35b348015610507575f80fd5b50610510610bfe565b60405161051d9190612a49565b60405180910390f35b348015610531575f80fd5b5061053a610d00565b6040516105479190612b88565b60405180910390f35b34801561055b575f80fd5b50610564610d24565b6040516105719190612a49565b60405180910390f35b348015610585575f80fd5b5061058e610d36565b60405161059b9190612b10565b60405180910390f35b3480156105af575f80fd5b506105ca60048036038101906105c59190612a62565b610d3c565b6040516105d79190612b10565b60405180910390f35b3480156105eb575f80fd5b506105f4610d81565b005b348015610601575f80fd5b5061060a610ed4565b6040516106179190612b88565b60405180910390f35b34801561062b575f80fd5b50610634610ef9565b6040516106419190612b10565b60405180910390f35b348015610655575f80fd5b5061065e610eff565b60405161066b9190612b88565b60405180910390f35b34801561067f575f80fd5b50610688610f27565b6040516106959190612b10565b60405180910390f35b3480156106a9575f80fd5b506106b2610f2d565b6040516106bf9190612940565b60405180910390f35b3480156106d3575f80fd5b506106dc610fbd565b6040516106e99190612b10565b60405180910390f35b3480156106fd575f80fd5b50610718600480360381019061071391906129f1565b610fc3565b6040516107259190612a49565b60405180910390f35b348015610739575f80fd5b506107426110a9565b60405161074f9190612b10565b60405180910390f35b348015610763575f80fd5b5061077e600480360381019061077991906129f1565b6110af565b60405161078b9190612a49565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b59190612a62565b6110cc565b6040516107c79190612a49565b60405180910390f35b3480156107db575f80fd5b506107e46110e9565b6040516107f19190612b10565b60405180910390f35b348015610805575f80fd5b5061080e6110ef565b60405161081b9190612b10565b60405180910390f35b34801561082f575f80fd5b5061084a60048036038101906108459190612bd5565b6110f5565b6040516108579190612b10565b60405180910390f35b34801561086b575f80fd5b50610874611177565b6040516108819190612b10565b60405180910390f35b348015610895575f80fd5b5061089e61117d565b6040516108ab9190612b10565b60405180910390f35b3480156108bf575f80fd5b506108da60048036038101906108d59190612a62565b611183565b005b3480156108e7575f80fd5b506108f0611345565b6040516108fd9190612b10565b60405180910390f35b348015610911575f80fd5b5061091a61134b565b6040516109279190612b10565b60405180910390f35b60606003805461093f90612c40565b80601f016020809104026020016040519081016040528092919081815260200182805461096b90612c40565b80156109b65780601f1061098d576101008083540402835291602001916109b6565b820191905f5260205f20905b81548152906001019060200180831161099957829003601f168201915b5050505050905090565b5f6109d36109cc611351565b8484611358565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b600e5481565b600b5481565b60175481565b60165481565b5f610a4b84848461151b565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a92611351565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612ce0565b60405180910390fd5b610b2585610b1d611351565b858403611358565b60019150509392505050565b61dead81565b600c5481565b600a5f9054906101000a900460ff1681565b5f6009905090565b5f610bf4610b63611351565b848460015f610b70611351565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bef9190612d2b565b611358565b6001905092915050565b5f610c07611351565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90612da8565b60405180910390fd5b60066011819055505f601281905550601254601154610cb49190612d2b565b60108190555060066013819055506006601481905550601554601454610cda9190612d2b565b6013819055505f60185f6101000a81548160ff0219169083151502179055506001905090565b7f00000000000000000000000096729e58977bbb2d887356c51ae4ff0cd45dfe9f81565b60185f9054906101000a900460ff1681565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d89611351565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90612da8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b606060048054610f3c90612c40565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6890612c40565b8015610fb35780601f10610f8a57610100808354040283529160200191610fb3565b820191905f5260205f20905b815481529060010190602001808311610f9657829003601f168201915b5050505050905090565b600f5481565b5f8060015f610fd0611351565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190612e36565b60405180910390fd5b61109e611095611351565b85858403611358565b600191505092915050565b600d5481565b5f6110c26110bb611351565b848461151b565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b60085481565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b60125481565b61118b611351565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090612da8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90612ec4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90612f52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90612fe0565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161150e9190612b10565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115809061306e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906130fc565b60405180910390fd5b5f810361160e5761160983835f611f37565b611f32565b60185f9054906101000a900460ff1615611a035761162a610eff565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116985750611668610eff565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116d057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561170a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117235750600560149054906101000a900460ff16155b15611a0257601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156117c55750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561186c5760085481111561180f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118069061318a565b60405180910390fd5b60095461181b83610d3c565b826118269190612d2b565b1115611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906131f2565b60405180910390fd5b611a01565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156119095750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561195857600854811115611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194a90613280565b60405180910390fd5b611a00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166119ff576009546119b283610d3c565b826119bd9190612d2b565b11156119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906131f2565b60405180910390fd5b5b5b5b5b5b5f611a0d30610d3c565b90505f6007548210159050808015611a325750600560149054906101000a900460ff16155b8015611a855750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ad8575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b2b575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b6e576001600560146101000a81548160ff021916908315150217905550611b536121ac565b5f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015611bd15750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611be85750600a5f9054906101000a900460ff165b8015611c035750600c54600d54611bff9190612d2b565b4210155b8015611c56575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c6557611c636123a7565b505b5f600560149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d14575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611d1d575f90505b5f8115611f2257601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d7b57505f601354115b15611e1357611da86064611d9a6013548861256190919063ffffffff16565b61257690919063ffffffff16565b905060135460155482611dbb919061329e565b611dc5919061330c565b60175f828254611dd59190612d2b565b9250508190555060135460145482611ded919061329e565b611df7919061330c565b60165f828254611e079190612d2b565b92505081905550611eff565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e6a57505f601054115b15611efe57611e976064611e896010548861256190919063ffffffff16565b61257690919063ffffffff16565b905060105460125482611eaa919061329e565b611eb4919061330c565b60175f828254611ec49190612d2b565b9250508190555060105460115482611edc919061329e565b611ee6919061330c565b60165f828254611ef69190612d2b565b925050819055505b5b5f811115611f1357611f12873083611f37565b5b8085611f1f919061333c565b94505b611f2d878787611f37565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c9061306e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a906130fc565b60405180910390fd5b61201e83838361258b565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612098906133df565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461212f9190612d2b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121939190612b10565b60405180910390a36121a6848484612590565b50505050565b5f6121b630610d3c565b90505f6016546017546121c99190612d2b565b90505f808314806121d957505f82145b156121e6575050506123a5565b60146007546121f5919061329e565b83111561220e57601460075461220b919061329e565b92505b5f60028360175486612220919061329e565b61222a919061330c565b612234919061330c565b90505f61224a828661259590919063ffffffff16565b90505f479050612259826125aa565b5f61226d824761259590919063ffffffff16565b90505f612297876122896016548561256190919063ffffffff16565b61257690919063ffffffff16565b90505f81836122a6919061333c565b90505f6017819055505f6016819055505f861180156122c457505f81115b15612311576122d386826127dd565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601754604051612308939291906133fd565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123569061345f565b5f6040518083038185875af1925050503d805f8114612390576040519150601f19603f3d011682016040523d82523d5f602084013e612395565b606091505b5050809750505050505050505050505b565b5f42600d819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000096729e58977bbb2d887356c51ae4ff0cd45dfe9f6040518263ffffffff1660e01b81526004016124099190612b88565b602060405180830381865afa158015612424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124489190613487565b90505f612474612710612466600b548561256190919063ffffffff16565b61257690919063ffffffff16565b90505f8111156124ac576124ab7f00000000000000000000000096729e58977bbb2d887356c51ae4ff0cd45dfe9f61dead83611f37565b5b5f7f00000000000000000000000096729e58977bbb2d887356c51ae4ff0cd45dfe9f90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612515575f80fd5b505af1158015612527573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b5f818361256e919061329e565b905092915050565b5f8183612583919061330c565b905092915050565b505050565b505050565b5f81836125a2919061333c565b905092915050565b5f600267ffffffffffffffff8111156125c6576125c56134b2565b5b6040519080825280602002602001820160405280156125f45781602001602082028036833780820191505090505b50905030815f8151811061260b5761260a6134df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d29190613520565b816001815181106126e6576126e56134df565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061274b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611358565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127ac95949392919061363b565b5f604051808303815f87803b1580156127c3575f80fd5b505af11580156127d5573d5f803e3d5ffd5b505050505050565b612808307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611358565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b815260040161286e96959493929190613693565b60606040518083038185885af115801561288a573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906128af91906136f2565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128ed5780820151818401526020810190506128d2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612912826128b6565b61291c81856128c0565b935061292c8185602086016128d0565b612935816128f8565b840191505092915050565b5f6020820190508181035f8301526129588184612908565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61298d82612964565b9050919050565b61299d81612983565b81146129a7575f80fd5b50565b5f813590506129b881612994565b92915050565b5f819050919050565b6129d0816129be565b81146129da575f80fd5b50565b5f813590506129eb816129c7565b92915050565b5f8060408385031215612a0757612a06612960565b5b5f612a14858286016129aa565b9250506020612a25858286016129dd565b9150509250929050565b5f8115159050919050565b612a4381612a2f565b82525050565b5f602082019050612a5c5f830184612a3a565b92915050565b5f60208284031215612a7757612a76612960565b5b5f612a84848285016129aa565b91505092915050565b5f819050919050565b5f612ab0612aab612aa684612964565b612a8d565b612964565b9050919050565b5f612ac182612a96565b9050919050565b5f612ad282612ab7565b9050919050565b612ae281612ac8565b82525050565b5f602082019050612afb5f830184612ad9565b92915050565b612b0a816129be565b82525050565b5f602082019050612b235f830184612b01565b92915050565b5f805f60608486031215612b4057612b3f612960565b5b5f612b4d868287016129aa565b9350506020612b5e868287016129aa565b9250506040612b6f868287016129dd565b9150509250925092565b612b8281612983565b82525050565b5f602082019050612b9b5f830184612b79565b92915050565b5f60ff82169050919050565b612bb681612ba1565b82525050565b5f602082019050612bcf5f830184612bad565b92915050565b5f8060408385031215612beb57612bea612960565b5b5f612bf8858286016129aa565b9250506020612c09858286016129aa565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c5757607f821691505b602082108103612c6a57612c69612c13565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612cca6028836128c0565b9150612cd582612c70565b604082019050919050565b5f6020820190508181035f830152612cf781612cbe565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d35826129be565b9150612d40836129be565b9250828201905080821115612d5857612d57612cfe565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d926020836128c0565b9150612d9d82612d5e565b602082019050919050565b5f6020820190508181035f830152612dbf81612d86565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e206025836128c0565b9150612e2b82612dc6565b604082019050919050565b5f6020820190508181035f830152612e4d81612e14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612eae6026836128c0565b9150612eb982612e54565b604082019050919050565b5f6020820190508181035f830152612edb81612ea2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f3c6024836128c0565b9150612f4782612ee2565b604082019050919050565b5f6020820190508181035f830152612f6981612f30565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fca6022836128c0565b9150612fd582612f70565b604082019050919050565b5f6020820190508181035f830152612ff781612fbe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130586025836128c0565b915061306382612ffe565b604082019050919050565b5f6020820190508181035f8301526130858161304c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130e66023836128c0565b91506130f18261308c565b604082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6131746035836128c0565b915061317f8261311a565b604082019050919050565b5f6020820190508181035f8301526131a181613168565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6131dc6013836128c0565b91506131e7826131a8565b602082019050919050565b5f6020820190508181035f830152613209816131d0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61326a6036836128c0565b915061327582613210565b604082019050919050565b5f6020820190508181035f8301526132978161325e565b9050919050565b5f6132a8826129be565b91506132b3836129be565b92508282026132c1816129be565b915082820484148315176132d8576132d7612cfe565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613316826129be565b9150613321836129be565b925082613331576133306132df565b5b828204905092915050565b5f613346826129be565b9150613351836129be565b925082820390508181111561336957613368612cfe565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6133c96026836128c0565b91506133d48261336f565b604082019050919050565b5f6020820190508181035f8301526133f6816133bd565b9050919050565b5f6060820190506134105f830186612b01565b61341d6020830185612b01565b61342a6040830184612b01565b949350505050565b5f81905092915050565b50565b5f61344a5f83613432565b91506134558261343c565b5f82019050919050565b5f6134698261343f565b9150819050919050565b5f81519050613481816129c7565b92915050565b5f6020828403121561349c5761349b612960565b5b5f6134a984828501613473565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061351a81612994565b92915050565b5f6020828403121561353557613534612960565b5b5f6135428482850161350c565b91505092915050565b5f819050919050565b5f61356e6135696135648461354b565b612a8d565b6129be565b9050919050565b61357e81613554565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135b681612983565b82525050565b5f6135c783836135ad565b60208301905092915050565b5f602082019050919050565b5f6135e982613584565b6135f3818561358e565b93506135fe8361359e565b805f5b8381101561362e57815161361588826135bc565b9750613620836135d3565b925050600181019050613601565b5085935050505092915050565b5f60a08201905061364e5f830188612b01565b61365b6020830187613575565b818103604083015261366d81866135df565b905061367c6060830185612b79565b6136896080830184612b01565b9695505050505050565b5f60c0820190506136a65f830189612b79565b6136b36020830188612b01565b6136c06040830187613575565b6136cd6060830186613575565b6136da6080830185612b79565b6136e760a0830184612b01565b979650505050505050565b5f805f6060848603121561370957613708612960565b5b5f61371686828701613473565b935050602061372786828701613473565b925050604061373886828701613473565b915050925092509256fea2646970667358221220ed3af36c1066db902d8248c77ba2cf2bb491de5894e496c36959398aae1067bf64736f6c63430008160033

Deployed Bytecode Sourcemap

16471:11250:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3911:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4890:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17643:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16549:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4231:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17085:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16939:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17446:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17406;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5092:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16652:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16995:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16900:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4131:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5629:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19977:358;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16607:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17488:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17293:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4347:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1880:148;;;;;;;;;;;;;:::i;:::-;;16744:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17217;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1238:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17328:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4019:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17139:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5927:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17047:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4498:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17715:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16825:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17183:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4706:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16783:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17254:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2183:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17366:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16867:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3911:100;3965:13;3998:5;3991:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3911:100;:::o;4890:194::-;4998:4;5015:39;5024:12;:10;:12::i;:::-;5038:7;5047:6;5015:8;:39::i;:::-;5072:4;5065:11;;4890:194;;;;:::o;17643:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;16549:51::-;;;:::o;4231:108::-;4292:7;4319:12;;4312:19;;4231:108;:::o;17085:47::-;;;;:::o;16939:36::-;;;;:::o;17446:33::-;;;;:::o;17406:::-;;;;:::o;5092:529::-;5232:4;5249:36;5259:6;5267:9;5278:6;5249:9;:36::i;:::-;5298:24;5325:11;:19;5337:6;5325:19;;;;;;;;;;;;;;;:33;5345:12;:10;:12::i;:::-;5325:33;;;;;;;;;;;;;;;;5298:60;;5411:6;5391:16;:26;;5369:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;5521:57;5530:6;5538:12;:10;:12::i;:::-;5571:6;5552:16;:25;5521:8;:57::i;:::-;5609:4;5602:11;;;5092:529;;;;;:::o;16652:53::-;16698:6;16652:53;:::o;16995:45::-;;;;:::o;16900:32::-;;;;;;;;;;;;;:::o;4131:92::-;4189:5;4214:1;4207:8;;4131:92;:::o;5629:290::-;5742:4;5759:130;5782:12;:10;:12::i;:::-;5809:7;5868:10;5831:11;:25;5843:12;:10;:12::i;:::-;5831:25;;;;;;;;;;;;;;;:34;5857:7;5831:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5759:8;:130::i;:::-;5907:4;5900:11;;5629:290;;;;:::o;19977:358::-;20024:4;1460:12;:10;:12::i;:::-;1450:22;;:6;;;;;;;;;;;:22;;;1442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20059:1:::1;20041:15;:19;;;;20089:1;20071:15;:19;;;;20134:15;;20116;;:33;;;;:::i;:::-;20101:12;:48;;;;20176:1;20160:13;:17;;;;20207:1;20188:16;:20;;;;20254:16;;20235;;:35;;;;:::i;:::-;20219:13;:51;;;;20300:5;20283:14;;:22;;;;;;;;;;;;;;;;;;20323:4;20316:11;;19977:358:::0;:::o;16607:38::-;;;:::o;17488:33::-;;;;;;;;;;;;;:::o;17293:28::-;;;;:::o;4347:143::-;4437:7;4464:9;:18;4474:7;4464:18;;;;;;;;;;;;;;;;4457:25;;4347:143;;;:::o;1880:148::-;1460:12;:10;:12::i;:::-;1450:22;;:6;;;;;;;;;;;:22;;;1442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1987:1:::1;1950:40;;1971:6;;;;;;;;;;;1950:40;;;;;;;;;;;;2018:1;2001:6;;:19;;;;;;;;;;;;;;;;;;1880:148::o:0;16744:30::-;;;;;;;;;;;;;:::o;17217:::-;;;;:::o;1238:79::-;1276:7;1303:6;;;;;;;;;;;1296:13;;1238:79;:::o;17328:31::-;;;;:::o;4019:104::-;4075:13;4108:7;4101:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4019:104;:::o;17139:35::-;;;;:::o;5927:475::-;6045:4;6062:24;6089:11;:25;6101:12;:10;:12::i;:::-;6089:25;;;;;;;;;;;;;;;:34;6115:7;6089:34;;;;;;;;;;;;;;;;6062:61;;6176:15;6156:16;:35;;6134:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;6292:67;6301:12;:10;:12::i;:::-;6315:7;6343:15;6324:16;:34;6292:8;:67::i;:::-;6390:4;6383:11;;;5927:475;;;;:::o;17047:29::-;;;;:::o;4498:200::-;4609:4;4626:42;4636:12;:10;:12::i;:::-;4650:9;4661:6;4626:9;:42::i;:::-;4686:4;4679:11;;4498:200;;;;:::o;17715:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16825:35::-;;;;:::o;17183:27::-;;;;:::o;4706:176::-;4820:7;4847:11;:18;4859:5;4847:18;;;;;;;;;;;;;;;:27;4866:7;4847:27;;;;;;;;;;;;;;;;4840:34;;4706:176;;;;:::o;16783:33::-;;;;:::o;17254:30::-;;;;:::o;2183:281::-;1460:12;:10;:12::i;:::-;1450:22;;:6;;;;;;;;;;;:22;;;1442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2306:1:::1;2286:22;;:8;:22;;::::0;2264:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2419:8;2390:38;;2411:6;;;;;;;;;;;2390:38;;;;;;;;;;;;2448:8;2439:6;;:17;;;;;;;;;;;;;;;;;;2183:281:::0;:::o;17366:31::-;;;;:::o;16867:24::-;;;;:::o;508:98::-;561:7;588:10;581:17;;508:98;:::o;8194:380::-;8347:1;8330:19;;:5;:19;;;8322:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8428:1;8409:21;;:7;:21;;;8401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8512:6;8482:11;:18;8494:5;8482:18;;;;;;;;;;;;;;;:27;8501:7;8482:27;;;;;;;;;;;;;;;:36;;;;8550:7;8534:32;;8543:5;8534:32;;;8559:6;8534:32;;;;;;:::i;:::-;;;;;;;;8194:380;;;:::o;20539:3809::-;20687:1;20671:18;;:4;:18;;;20663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20764:1;20750:16;;:2;:16;;;20742:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20833:1;20823:6;:11;20819:93;;20851:28;20867:4;20873:2;20877:1;20851:15;:28::i;:::-;20894:7;;20819:93;20928:14;;;;;;;;;;;20924:1451;;;20989:7;:5;:7::i;:::-;20981:15;;:4;:15;;;;:49;;;;;21023:7;:5;:7::i;:::-;21017:13;;:2;:13;;;;20981:49;:86;;;;;21065:1;21051:16;;:2;:16;;;;20981:86;:128;;;;;21102:6;21088:21;;:2;:21;;;;20981:128;:158;;;;;21131:8;;;;;;;;;;;21130:9;20981:158;20959:1405;;;21228:25;:31;21254:4;21228:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21285:31;:35;21317:2;21285:35;;;;;;;;;;;;;;;;;;;;;;;;;21284:36;21228:92;21202:1147;;;21407:20;;21397:6;:30;;21363:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21615:9;;21598:13;21608:2;21598:9;:13::i;:::-;21589:6;:22;;;;:::i;:::-;:35;;21555:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21202:1147;;;21793:25;:29;21819:2;21793:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21848:31;:37;21880:4;21848:37;;;;;;;;;;;;;;;;;;;;;;;;;21847:38;21793:92;21767:582;;;21972:20;;21962:6;:30;;21928:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21767:582;;;22129:31;:35;22161:2;22129:35;;;;;;;;;;;;;;;;;;;;;;;;;22124:225;;22249:9;;22232:13;22242:2;22232:9;:13::i;:::-;22223:6;:22;;;;:::i;:::-;:35;;22189:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22124:225;21767:582;21202:1147;20959:1405;20924:1451;22387:28;22418:24;22436:4;22418:9;:24::i;:::-;22387:55;;22455:12;22494:18;;22470:20;:42;;22455:57;;22543:7;:33;;;;;22568:8;;;;;;;;;;;22567:9;22543:33;:82;;;;;22594:25;:31;22620:4;22594:31;;;;;;;;;;;;;;;;;;;;;;;;;22593:32;22543:82;:125;;;;;22643:19;:25;22663:4;22643:25;;;;;;;;;;;;;;;;;;;;;;;;;22642:26;22543:125;:166;;;;;22686:19;:23;22706:2;22686:23;;;;;;;;;;;;;;;;;;;;;;;;;22685:24;22543:166;22525:298;;;22747:4;22736:8;;:15;;;;;;;;;;;;;;;;;;22768:10;:8;:10::i;:::-;22806:5;22795:8;;:16;;;;;;;;;;;;;;;;;;22525:298;22854:8;;;;;;;;;;;22853:9;:55;;;;;22879:25;:29;22905:2;22879:29;;;;;;;;;;;;;;;;;;;;;;;;;22853:55;:85;;;;;22925:13;;;;;;;;;;;22853:85;:153;;;;;22991:15;;22974:14;;:32;;;;:::i;:::-;22955:15;:51;;22853:153;:196;;;;;23024:19;:25;23044:4;23024:25;;;;;;;;;;;;;;;;;;;;;;;;;23023:26;22853:196;22835:282;;;23076:29;:27;:29::i;:::-;;22835:282;23129:12;23145:8;;;;;;;;;;;23144:9;23129:24;;23255:19;:25;23275:4;23255:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23284:19;:23;23304:2;23284:23;;;;;;;;;;;;;;;;;;;;;;;;;23255:52;23251:100;;;23334:5;23324:15;;23251:100;23363:12;23468:7;23464:831;;;23520:25;:29;23546:2;23520:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23569:1;23553:13;;:17;23520:50;23516:630;;;23598:34;23628:3;23598:25;23609:13;;23598:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23591:41;;23701:13;;23681:16;;23674:4;:23;;;;:::i;:::-;23673:41;;;;:::i;:::-;23651:18;;:63;;;;;;;:::i;:::-;;;;;;;;23783:13;;23763:16;;23756:4;:23;;;;:::i;:::-;23755:41;;;;:::i;:::-;23733:18;;:63;;;;;;;:::i;:::-;;;;;;;;23516:630;;;23858:25;:31;23884:4;23858:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23908:1;23893:12;;:16;23858:51;23854:292;;;23937:33;23966:3;23937:24;23948:12;;23937:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23930:40;;24038:12;;24019:15;;24012:4;:22;;;;:::i;:::-;24011:39;;;;:::i;:::-;23989:18;;:61;;;;;;;:::i;:::-;;;;;;;;24118:12;;24099:15;;24092:4;:22;;;;:::i;:::-;24091:39;;;;:::i;:::-;24069:18;;:61;;;;;;;:::i;:::-;;;;;;;;23854:292;23516:630;24173:1;24166:4;:8;24162:91;;;24195:42;24211:4;24225;24232;24195:15;:42::i;:::-;24162:91;24279:4;24269:14;;;;;:::i;:::-;;;23464:831;24307:33;24323:4;24329:2;24333:6;24307:15;:33::i;:::-;20652:3696;;;;20539:3809;;;;:::o;6410:770::-;6568:1;6550:20;;:6;:20;;;6542:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6652:1;6631:23;;:9;:23;;;6623:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6707:47;6728:6;6736:9;6747:6;6707:20;:47::i;:::-;6767:21;6791:9;:17;6801:6;6791:17;;;;;;;;;;;;;;;;6767:41;;6858:6;6841:13;:23;;6819:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7002:6;6986:13;:22;6966:9;:17;6976:6;6966:17;;;;;;;;;;;;;;;:42;;;;7054:6;7030:9;:20;7040:9;7030:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7095:9;7078:35;;7087:6;7078:35;;;7106:6;7078:35;;;;;;:::i;:::-;;;;;;;;7126:46;7146:6;7154:9;7165:6;7126:19;:46::i;:::-;6531:649;6410:770;;;:::o;25478:1522::-;25517:23;25543:24;25561:4;25543:9;:24::i;:::-;25517:50;;25578:25;25627:18;;25606;;:39;;;;:::i;:::-;25578:67;;25656:12;25704:1;25685:15;:20;:46;;;;25730:1;25709:17;:22;25685:46;25681:85;;;25748:7;;;;;25681:85;25821:2;25800:18;;:23;;;;:::i;:::-;25782:15;:41;25778:115;;;25879:2;25858:18;;:23;;;;:::i;:::-;25840:41;;25778:115;25954:23;26067:1;26034:17;25999:18;;25981:15;:36;;;;:::i;:::-;25980:71;;;;:::i;:::-;:88;;;;:::i;:::-;25954:114;;26079:26;26108:36;26128:15;26108;:19;;:36;;;;:::i;:::-;26079:65;;26157:25;26185:21;26157:49;;26219:36;26236:18;26219:16;:36::i;:::-;26268:18;26289:44;26315:17;26289:21;:25;;:44;;;;:::i;:::-;26268:65;;26346:23;26372:81;26425:17;26372:34;26387:18;;26372:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26346:107;;26466:23;26505:15;26492:10;:28;;;;:::i;:::-;26466:54;;26554:1;26533:18;:22;;;;26587:1;26566:18;:22;;;;26623:1;26605:15;:19;:42;;;;;26646:1;26628:15;:19;26605:42;26601:278;;;26664:46;26677:15;26694;26664:12;:46::i;:::-;26730:137;26763:18;26800:15;26834:18;;26730:137;;;;;;;;:::i;:::-;;;;;;;;26601:278;26913:15;;;;;;;;;;;26905:29;;26956:21;26905:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26891:101;;;;;25506:1494;;;;;;;;;25478:1522;:::o;27008:710::-;27065:4;27099:15;27082:14;:32;;;;27169:28;27200:4;:14;;;27215:13;27200:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27169:60;;27279:20;27302:77;27363:5;27302:42;27327:16;;27302:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;27279:100;;27421:1;27406:12;:16;27402:110;;;27439:61;27455:13;27478:6;27487:12;27439:15;:61::i;:::-;27402:110;27587:19;27624:13;27587:51;;27649:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27676:12;;;;;;;;;;27706:4;27699:11;;;;;27008:710;:::o;10323:98::-;10381:7;10412:1;10408;:5;;;;:::i;:::-;10401:12;;10323:98;;;;:::o;10429:::-;10487:7;10518:1;10514;:5;;;;:::i;:::-;10507:12;;10429:98;;;;:::o;8582:125::-;;;;:::o;8715:124::-;;;;:::o;10217:98::-;10275:7;10306:1;10302;:5;;;;:::i;:::-;10295:12;;10217:98;;;;:::o;24356:589::-;24482:21;24520:1;24506:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24482:40;;24551:4;24533;24538:1;24533:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24577:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24567:4;24572:1;24567:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24612:62;24629:4;24644:15;24662:11;24612:8;:62::i;:::-;24713:15;:66;;;24794:11;24820:1;24864:4;24891;24911:15;24713:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24411:534;24356:589;:::o;24953:517::-;25101:62;25118:4;25133:15;25151:11;25101:8;:62::i;:::-;25206:15;:31;;;25245:9;25278:4;25298:11;25324:1;25367;16698:6;25436:15;25206:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24953:517;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:180::-;7046:77;7043:1;7036:88;7143:4;7140:1;7133:15;7167:4;7164:1;7157:15;7184:320;7228:6;7265:1;7259:4;7255:12;7245:22;;7312:1;7306:4;7302:12;7333:18;7323:81;;7389:4;7381:6;7377:17;7367:27;;7323:81;7451:2;7443:6;7440:14;7420:18;7417:38;7414:84;;7470:18;;:::i;:::-;7414:84;7235:269;7184:320;;;:::o;7510:227::-;7650:34;7646:1;7638:6;7634:14;7627:58;7719:10;7714:2;7706:6;7702:15;7695:35;7510:227;:::o;7743:366::-;7885:3;7906:67;7970:2;7965:3;7906:67;:::i;:::-;7899:74;;7982:93;8071:3;7982:93;:::i;:::-;8100:2;8095:3;8091:12;8084:19;;7743:366;;;:::o;8115:419::-;8281:4;8319:2;8308:9;8304:18;8296:26;;8368:9;8362:4;8358:20;8354:1;8343:9;8339:17;8332:47;8396:131;8522:4;8396:131;:::i;:::-;8388:139;;8115:419;;;:::o;8540:180::-;8588:77;8585:1;8578:88;8685:4;8682:1;8675:15;8709:4;8706:1;8699:15;8726:191;8766:3;8785:20;8803:1;8785:20;:::i;:::-;8780:25;;8819:20;8837:1;8819:20;:::i;:::-;8814:25;;8862:1;8859;8855:9;8848:16;;8883:3;8880:1;8877:10;8874:36;;;8890:18;;:::i;:::-;8874:36;8726:191;;;;:::o;8923:182::-;9063:34;9059:1;9051:6;9047:14;9040:58;8923:182;:::o;9111:366::-;9253:3;9274:67;9338:2;9333:3;9274:67;:::i;:::-;9267:74;;9350:93;9439:3;9350:93;:::i;:::-;9468:2;9463:3;9459:12;9452:19;;9111:366;;;:::o;9483:419::-;9649:4;9687:2;9676:9;9672:18;9664:26;;9736:9;9730:4;9726:20;9722:1;9711:9;9707:17;9700:47;9764:131;9890:4;9764:131;:::i;:::-;9756:139;;9483:419;;;:::o;9908:224::-;10048:34;10044:1;10036:6;10032:14;10025:58;10117:7;10112:2;10104:6;10100:15;10093:32;9908:224;:::o;10138:366::-;10280:3;10301:67;10365:2;10360:3;10301:67;:::i;:::-;10294:74;;10377:93;10466:3;10377:93;:::i;:::-;10495:2;10490:3;10486:12;10479:19;;10138:366;;;:::o;10510:419::-;10676:4;10714:2;10703:9;10699:18;10691:26;;10763:9;10757:4;10753:20;10749:1;10738:9;10734:17;10727:47;10791:131;10917:4;10791:131;:::i;:::-;10783:139;;10510:419;;;:::o;10935:225::-;11075:34;11071:1;11063:6;11059:14;11052:58;11144:8;11139:2;11131:6;11127:15;11120:33;10935:225;:::o;11166:366::-;11308:3;11329:67;11393:2;11388:3;11329:67;:::i;:::-;11322:74;;11405:93;11494:3;11405:93;:::i;:::-;11523:2;11518:3;11514:12;11507:19;;11166:366;;;:::o;11538:419::-;11704:4;11742:2;11731:9;11727:18;11719:26;;11791:9;11785:4;11781:20;11777:1;11766:9;11762:17;11755:47;11819:131;11945:4;11819:131;:::i;:::-;11811:139;;11538:419;;;:::o;11963:223::-;12103:34;12099:1;12091:6;12087:14;12080:58;12172:6;12167:2;12159:6;12155:15;12148:31;11963:223;:::o;12192:366::-;12334:3;12355:67;12419:2;12414:3;12355:67;:::i;:::-;12348:74;;12431:93;12520:3;12431:93;:::i;:::-;12549:2;12544:3;12540:12;12533:19;;12192:366;;;:::o;12564:419::-;12730:4;12768:2;12757:9;12753:18;12745:26;;12817:9;12811:4;12807:20;12803:1;12792:9;12788:17;12781:47;12845:131;12971:4;12845:131;:::i;:::-;12837:139;;12564:419;;;:::o;12989:221::-;13129:34;13125:1;13117:6;13113:14;13106:58;13198:4;13193:2;13185:6;13181:15;13174:29;12989:221;:::o;13216:366::-;13358:3;13379:67;13443:2;13438:3;13379:67;:::i;:::-;13372:74;;13455:93;13544:3;13455:93;:::i;:::-;13573:2;13568:3;13564:12;13557:19;;13216:366;;;:::o;13588:419::-;13754:4;13792:2;13781:9;13777:18;13769:26;;13841:9;13835:4;13831:20;13827:1;13816:9;13812:17;13805:47;13869:131;13995:4;13869:131;:::i;:::-;13861:139;;13588:419;;;:::o;14013:224::-;14153:34;14149:1;14141:6;14137:14;14130:58;14222:7;14217:2;14209:6;14205:15;14198:32;14013:224;:::o;14243:366::-;14385:3;14406:67;14470:2;14465:3;14406:67;:::i;:::-;14399:74;;14482:93;14571:3;14482:93;:::i;:::-;14600:2;14595:3;14591:12;14584:19;;14243:366;;;:::o;14615:419::-;14781:4;14819:2;14808:9;14804:18;14796:26;;14868:9;14862:4;14858:20;14854:1;14843:9;14839:17;14832:47;14896:131;15022:4;14896:131;:::i;:::-;14888:139;;14615:419;;;:::o;15040:222::-;15180:34;15176:1;15168:6;15164:14;15157:58;15249:5;15244:2;15236:6;15232:15;15225:30;15040:222;:::o;15268:366::-;15410:3;15431:67;15495:2;15490:3;15431:67;:::i;:::-;15424:74;;15507:93;15596:3;15507:93;:::i;:::-;15625:2;15620:3;15616:12;15609:19;;15268:366;;;:::o;15640:419::-;15806:4;15844:2;15833:9;15829:18;15821:26;;15893:9;15887:4;15883:20;15879:1;15868:9;15864:17;15857:47;15921:131;16047:4;15921:131;:::i;:::-;15913:139;;15640:419;;;:::o;16065:240::-;16205:34;16201:1;16193:6;16189:14;16182:58;16274:23;16269:2;16261:6;16257:15;16250:48;16065:240;:::o;16311:366::-;16453:3;16474:67;16538:2;16533:3;16474:67;:::i;:::-;16467:74;;16550:93;16639:3;16550:93;:::i;:::-;16668:2;16663:3;16659:12;16652:19;;16311:366;;;:::o;16683:419::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16936:9;16930:4;16926:20;16922:1;16911:9;16907:17;16900:47;16964:131;17090:4;16964:131;:::i;:::-;16956:139;;16683:419;;;:::o;17108:169::-;17248:21;17244:1;17236:6;17232:14;17225:45;17108:169;:::o;17283:366::-;17425:3;17446:67;17510:2;17505:3;17446:67;:::i;:::-;17439:74;;17522:93;17611:3;17522:93;:::i;:::-;17640:2;17635:3;17631:12;17624:19;;17283:366;;;:::o;17655:419::-;17821:4;17859:2;17848:9;17844:18;17836:26;;17908:9;17902:4;17898:20;17894:1;17883:9;17879:17;17872:47;17936:131;18062:4;17936:131;:::i;:::-;17928:139;;17655:419;;;:::o;18080:241::-;18220:34;18216:1;18208:6;18204:14;18197:58;18289:24;18284:2;18276:6;18272:15;18265:49;18080:241;:::o;18327:366::-;18469:3;18490:67;18554:2;18549:3;18490:67;:::i;:::-;18483:74;;18566:93;18655:3;18566:93;:::i;:::-;18684:2;18679:3;18675:12;18668:19;;18327:366;;;:::o;18699:419::-;18865:4;18903:2;18892:9;18888:18;18880:26;;18952:9;18946:4;18942:20;18938:1;18927:9;18923:17;18916:47;18980:131;19106:4;18980:131;:::i;:::-;18972:139;;18699:419;;;:::o;19124:410::-;19164:7;19187:20;19205:1;19187:20;:::i;:::-;19182:25;;19221:20;19239:1;19221:20;:::i;:::-;19216:25;;19276:1;19273;19269:9;19298:30;19316:11;19298:30;:::i;:::-;19287:41;;19477:1;19468:7;19464:15;19461:1;19458:22;19438:1;19431:9;19411:83;19388:139;;19507:18;;:::i;:::-;19388:139;19172:362;19124:410;;;;:::o;19540:180::-;19588:77;19585:1;19578:88;19685:4;19682:1;19675:15;19709:4;19706:1;19699:15;19726:185;19766:1;19783:20;19801:1;19783:20;:::i;:::-;19778:25;;19817:20;19835:1;19817:20;:::i;:::-;19812:25;;19856:1;19846:35;;19861:18;;:::i;:::-;19846:35;19903:1;19900;19896:9;19891:14;;19726:185;;;;:::o;19917:194::-;19957:4;19977:20;19995:1;19977:20;:::i;:::-;19972:25;;20011:20;20029:1;20011:20;:::i;:::-;20006:25;;20055:1;20052;20048:9;20040:17;;20079:1;20073:4;20070:11;20067:37;;;20084:18;;:::i;:::-;20067:37;19917:194;;;;:::o;20117:225::-;20257:34;20253:1;20245:6;20241:14;20234:58;20326:8;20321:2;20313:6;20309:15;20302:33;20117:225;:::o;20348:366::-;20490:3;20511:67;20575:2;20570:3;20511:67;:::i;:::-;20504:74;;20587:93;20676:3;20587:93;:::i;:::-;20705:2;20700:3;20696:12;20689:19;;20348:366;;;:::o;20720:419::-;20886:4;20924:2;20913:9;20909:18;20901:26;;20973:9;20967:4;20963:20;20959:1;20948:9;20944:17;20937:47;21001:131;21127:4;21001:131;:::i;:::-;20993:139;;20720:419;;;:::o;21145:442::-;21294:4;21332:2;21321:9;21317:18;21309:26;;21345:71;21413:1;21402:9;21398:17;21389:6;21345:71;:::i;:::-;21426:72;21494:2;21483:9;21479:18;21470:6;21426:72;:::i;:::-;21508;21576:2;21565:9;21561:18;21552:6;21508:72;:::i;:::-;21145:442;;;;;;:::o;21593:147::-;21694:11;21731:3;21716:18;;21593:147;;;;:::o;21746:114::-;;:::o;21866:398::-;22025:3;22046:83;22127:1;22122:3;22046:83;:::i;:::-;22039:90;;22138:93;22227:3;22138:93;:::i;:::-;22256:1;22251:3;22247:11;22240:18;;21866:398;;;:::o;22270:379::-;22454:3;22476:147;22619:3;22476:147;:::i;:::-;22469:154;;22640:3;22633:10;;22270:379;;;:::o;22655:143::-;22712:5;22743:6;22737:13;22728:22;;22759:33;22786:5;22759:33;:::i;:::-;22655:143;;;;:::o;22804:351::-;22874:6;22923:2;22911:9;22902:7;22898:23;22894:32;22891:119;;;22929:79;;:::i;:::-;22891:119;23049:1;23074:64;23130:7;23121:6;23110:9;23106:22;23074:64;:::i;:::-;23064:74;;23020:128;22804:351;;;;:::o;23161:180::-;23209:77;23206:1;23199:88;23306:4;23303:1;23296:15;23330:4;23327:1;23320:15;23347:180;23395:77;23392:1;23385:88;23492:4;23489:1;23482:15;23516:4;23513:1;23506:15;23533:143;23590:5;23621:6;23615:13;23606:22;;23637:33;23664:5;23637:33;:::i;:::-;23533:143;;;;:::o;23682:351::-;23752:6;23801:2;23789:9;23780:7;23776:23;23772:32;23769:119;;;23807:79;;:::i;:::-;23769:119;23927:1;23952:64;24008:7;23999:6;23988:9;23984:22;23952:64;:::i;:::-;23942:74;;23898:128;23682:351;;;;:::o;24039:85::-;24084:7;24113:5;24102:16;;24039:85;;;:::o;24130:158::-;24188:9;24221:61;24239:42;24248:32;24274:5;24248:32;:::i;:::-;24239:42;:::i;:::-;24221:61;:::i;:::-;24208:74;;24130:158;;;:::o;24294:147::-;24389:45;24428:5;24389:45;:::i;:::-;24384:3;24377:58;24294:147;;:::o;24447:114::-;24514:6;24548:5;24542:12;24532:22;;24447:114;;;:::o;24567:184::-;24666:11;24700:6;24695:3;24688:19;24740:4;24735:3;24731:14;24716:29;;24567:184;;;;:::o;24757:132::-;24824:4;24847:3;24839:11;;24877:4;24872:3;24868:14;24860:22;;24757:132;;;:::o;24895:108::-;24972:24;24990:5;24972:24;:::i;:::-;24967:3;24960:37;24895:108;;:::o;25009:179::-;25078:10;25099:46;25141:3;25133:6;25099:46;:::i;:::-;25177:4;25172:3;25168:14;25154:28;;25009:179;;;;:::o;25194:113::-;25264:4;25296;25291:3;25287:14;25279:22;;25194:113;;;:::o;25343:732::-;25462:3;25491:54;25539:5;25491:54;:::i;:::-;25561:86;25640:6;25635:3;25561:86;:::i;:::-;25554:93;;25671:56;25721:5;25671:56;:::i;:::-;25750:7;25781:1;25766:284;25791:6;25788:1;25785:13;25766:284;;;25867:6;25861:13;25894:63;25953:3;25938:13;25894:63;:::i;:::-;25887:70;;25980:60;26033:6;25980:60;:::i;:::-;25970:70;;25826:224;25813:1;25810;25806:9;25801:14;;25766:284;;;25770:14;26066:3;26059:10;;25467:608;;;25343:732;;;;:::o;26081:831::-;26344:4;26382:3;26371:9;26367:19;26359:27;;26396:71;26464:1;26453:9;26449:17;26440:6;26396:71;:::i;:::-;26477:80;26553:2;26542:9;26538:18;26529:6;26477:80;:::i;:::-;26604:9;26598:4;26594:20;26589:2;26578:9;26574:18;26567:48;26632:108;26735:4;26726:6;26632:108;:::i;:::-;26624:116;;26750:72;26818:2;26807:9;26803:18;26794:6;26750:72;:::i;:::-;26832:73;26900:3;26889:9;26885:19;26876:6;26832:73;:::i;:::-;26081:831;;;;;;;;:::o;26918:807::-;27167:4;27205:3;27194:9;27190:19;27182:27;;27219:71;27287:1;27276:9;27272:17;27263:6;27219:71;:::i;:::-;27300:72;27368:2;27357:9;27353:18;27344:6;27300:72;:::i;:::-;27382:80;27458:2;27447:9;27443:18;27434:6;27382:80;:::i;:::-;27472;27548:2;27537:9;27533:18;27524:6;27472:80;:::i;:::-;27562:73;27630:3;27619:9;27615:19;27606:6;27562:73;:::i;:::-;27645;27713:3;27702:9;27698:19;27689:6;27645:73;:::i;:::-;26918:807;;;;;;;;;:::o;27731:663::-;27819:6;27827;27835;27884:2;27872:9;27863:7;27859:23;27855:32;27852:119;;;27890:79;;:::i;:::-;27852:119;28010:1;28035:64;28091:7;28082:6;28071:9;28067:22;28035:64;:::i;:::-;28025:74;;27981:128;28148:2;28174:64;28230:7;28221:6;28210:9;28206:22;28174:64;:::i;:::-;28164:74;;28119:129;28287:2;28313:64;28369:7;28360:6;28349:9;28345:22;28313:64;:::i;:::-;28303:74;;28258:129;27731:663;;;;;:::o

Swarm Source

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