ETH Price: $2,504.43 (-4.94%)

Token

OrdiSignals (ORDSIG)
 

Overview

Max Total Supply

1,000,000,000 ORDSIG

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
17,996,873.116519320868678047 ORDSIG

Value
$0.00
0x30a574a87663da37fd70e1ac5545e2725c878abf
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:
OrdiSignals

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-10
*/

/*

Website:  https://ordisignals.co/
Docs: https://docs.ordisignals.co/
Twitter: https://twitter.com/OrdiSignals
Community: https://t.me/ordisignals
Telegram Bot: https://t.me/ordisignalsbot

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

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

pragma solidity ^0.8.21;

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

pragma solidity ^0.8.21;

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

pragma solidity ^0.8.21;

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

pragma solidity ^0.8.21;


interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.21;

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

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

pragma solidity ^0.8.21;


abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

pragma solidity ^0.8.21;


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

pragma solidity ^0.8.21;

contract OrdiSignals 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 private marketingWallet;

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

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

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public blocks;

    uint256 public buyTotalFees;

    uint256 public sellTotalFees;

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

    mapping(address => bool) public automatedMarketMakerPairs;

    mapping(uint256 => uint256) private blockSwaps;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("OrdiSignals", "ORDSIG") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = 20_000_000 * 1e18;
        maxWallet = 20_000_000 * 1e18;
        swapTokensAtAmount = 10_000 * 1e18;
        maxSwapAmount = 50_000_000 * 1e18;

        marketingWallet = msg.sender;

        uint256 amountLP = totalSupply.mul(95).div(100);
        uint256 amountTeam = totalSupply.mul(5).div(100);

        _mint(address(this), amountLP); 
        _mint(msg.sender, amountTeam);

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

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

    receive() external payable {}

    function openTrading() external payable onlyOwner {
        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

        blocks = 15;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        swapTokensAtAmount = newAmount * (10 ** 18);
    }

    function updateMaxSwap(uint256 newAmount) external onlyOwner {
        maxSwapAmount = newAmount * (10 ** 18);
    }

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

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

    function whitelistContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;

        _isExcludedFromFees[_whitelist] = isWL;
    }

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

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

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

    function manualswap(uint256 amount) external {
        require(_msgSender() == marketingWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateFees(uint256 _fee) external onlyOwner {
        buyTotalFees = _fee;
        sellTotalFees = _fee;
    }

    function updateBuyFees(uint256 _marketingFee) external onlyOwner {
        buyTotalFees = _marketingFee;
    }

    function updateSellFees(uint256 _marketingFee) external onlyOwner {
        sellTotalFees = _marketingFee;
    }

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

    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(from, addresses[i], amounts[i] * (10 ** 18));
        }
    }

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

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

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if ((launchedAt + blocks) >= block.number) {
                    // Starting Taxes
                    sellTotalFees = 30;
                    buyTotalFees = 34;
                } else {
                    sellTotalFees = 15;
                    buyTotalFees = 10;
                }

                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                //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 && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from]
                && !_isExcludedFromFees[to]
        ) {
            // Limit swaps per block
            if (blockSwaps[block.number] < 3) {
                swapping = true;

                swapBack();

                swapping = false;

                blockSwaps[block.number] = blockSwaps[block.number] + 1;
            }
        }

        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);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
            }

            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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > maxSwapAmount) {
            contractBalance = maxSwapAmount;
        }

        // Halve the amount of liquidity tokens

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        uint256 totalETH = address(this).balance;

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"blocks","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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff0219169083151502179055505f600b60026101000a81548160ff0219169083151502179055503480156200005e575f80fd5b506040518060400160405280600b81526020017f4f7264695369676e616c730000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4f524453494700000000000000000000000000000000000000000000000000008152508160039081620000dc919062000c9a565b508060049081620000ee919062000c9a565b5050506200011162000105620004e060201b60201c565b620004e760201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013c816001620005aa60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000de3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000de3565b6040518363ffffffff1660e01b81526004016200028b92919062000e24565b6020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000de3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031660a0516001620005aa60201b60201c565b6200032b60a05160016200069160201b60201c565b5f6b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006007819055506a108b2a2c2802909400000060098190555069021e19e0c9bab24000006008819055506a295be96e64066972000000600a819055503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f620003ee6064620003df605f856200072f60201b90919060201c565b6200074660201b90919060201c565b90505f6200041c60646200040d6005866200072f60201b90919060201c565b6200074660201b90919060201c565b90506200043030836200075d60201b60201c565b6200044233826200075d60201b60201c565b6200046462000456620008cd60201b60201c565b6001620008f560201b60201c565b62000477306001620008f560201b60201c565b6200048c61dead6001620008f560201b60201c565b620004ae620004a0620008cd60201b60201c565b6001620005aa60201b60201c565b620004c1306001620005aa60201b60201c565b620004d661dead6001620005aa60201b60201c565b50505050620010b3565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ba620004e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005e0620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006309062000ead565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836200073e919062000efa565b905092915050565b5f818362000755919062000f71565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c59062000ff6565b60405180910390fd5b620007e15f838362000a2c60201b60201c565b8060025f828254620007f4919062001016565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000848919062001016565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008ae919062001061565b60405180910390a3620008c95f838362000a3160201b60201c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000905620004e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200092b620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000984576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097b9062000ead565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a20919062001098565b60405180910390a25050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ab257607f821691505b60208210810362000ac85762000ac762000a6d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b2c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aef565b62000b38868362000aef565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b8262000b7c62000b768462000b50565b62000b59565b62000b50565b9050919050565b5f819050919050565b62000b9d8362000b62565b62000bb562000bac8262000b89565b84845462000afb565b825550505050565b5f90565b62000bcb62000bbd565b62000bd881848462000b92565b505050565b5b8181101562000bff5762000bf35f8262000bc1565b60018101905062000bde565b5050565b601f82111562000c4e5762000c188162000ace565b62000c238462000ae0565b8101602085101562000c33578190505b62000c4b62000c428562000ae0565b83018262000bdd565b50505b505050565b5f82821c905092915050565b5f62000c705f198460080262000c53565b1980831691505092915050565b5f62000c8a838362000c5f565b9150826002028217905092915050565b62000ca58262000a36565b67ffffffffffffffff81111562000cc15762000cc062000a40565b5b62000ccd825462000a9a565b62000cda82828562000c03565b5f60209050601f83116001811462000d10575f841562000cfb578287015190505b62000d07858262000c7d565b86555062000d76565b601f19841662000d208662000ace565b5f5b8281101562000d495784890151825560018201915060208501945060208101905062000d22565b8683101562000d69578489015162000d65601f89168262000c5f565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000dad8262000d82565b9050919050565b62000dbf8162000da1565b811462000dca575f80fd5b50565b5f8151905062000ddd8162000db4565b92915050565b5f6020828403121562000dfb5762000dfa62000d7e565b5b5f62000e0a8482850162000dcd565b91505092915050565b62000e1e8162000da1565b82525050565b5f60408201905062000e395f83018562000e13565b62000e48602083018462000e13565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000e9560208362000e4f565b915062000ea28262000e5f565b602082019050919050565b5f6020820190508181035f83015262000ec68162000e87565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f068262000b50565b915062000f138362000b50565b925082820262000f238162000b50565b9150828204841483151762000f3d5762000f3c62000ecd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f7d8262000b50565b915062000f8a8362000b50565b92508262000f9d5762000f9c62000f44565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000fde601f8362000e4f565b915062000feb8262000fa8565b602082019050919050565b5f6020820190508181035f8301526200100f8162000fd0565b9050919050565b5f620010228262000b50565b91506200102f8362000b50565b92508282019050808211156200104a576200104962000ecd565b5b92915050565b6200105b8162000b50565b82525050565b5f602082019050620010765f83018462001050565b92915050565b5f8115159050919050565b62001092816200107c565b82525050565b5f602082019050620010ad5f83018462001087565b92915050565b60805160a0516148036200110d5f395f8181610eba0152818161161e0152611deb01525f8181610bd701528181611d0601528181611d3401528181611e2701528181612eda01528181612fb90152612fe001526148035ff3fe60806040526004361061028b575f3560e01c8063881dce6011610159578063c0246668116100c0578063d85ba06311610079578063d85ba06314610968578063dd62ed3e14610992578063e2f45605146109ce578063eba4c333146109f8578063f2fde38b14610a20578063f8b45b0514610a4857610292565b8063c024666814610892578063c18bc195146108ba578063c8c8ebe4146108e2578063c9567bf91461090c578063cce987d414610916578063d257b34f1461094057610292565b8063a457c2d711610112578063a457c2d714610764578063a672990c146107a0578063a9059cbb146107c8578063aacebbe314610804578063b62496f51461082c578063bbc0c7421461086857610292565b8063881dce601461066e5780638da5cb5b14610696578063924de9b7146106c057806395d89b41146106e8578063967ff23e146107125780639a7a23d61461073c57610292565b806349bd5a5e116101fd57806370a08231116101b657806370a082311461058e578063715018a6146105ca57806371fc4688146105e0578063751039fc146106085780637571336a1461061e57806378dacee11461064657610292565b806349bd5a5e146104a85780634a62bb65146104d257806367243482146104fc5780636a486a8e146105245780636ddd17131461054e5780636fc3eaec1461057857610292565b806318160ddd1161024f57806318160ddd1461038a578063203e727e146103b457806323b872dd146103dc57806327c8f83514610418578063313ce56714610442578063395093511461046c57610292565b806306fdde0314610296578063095ea7b3146102c057806310d5de53146102fc578063150074a3146103385780631694505e1461036057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610a72565b6040516102b7919061350e565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e191906135c3565b610b02565b6040516102f3919061361b565b60405180910390f35b348015610307575f80fd5b50610322600480360381019061031d9190613634565b610b1f565b60405161032f919061361b565b60405180910390f35b348015610343575f80fd5b5061035e6004803603810190610359919061365f565b610b3c565b005b34801561036b575f80fd5b50610374610bd5565b60405161038191906136e5565b60405180910390f35b348015610395575f80fd5b5061039e610bf9565b6040516103ab919061370d565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d5919061365f565b610c02565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190613726565b610d11565b60405161040f919061361b565b60405180910390f35b348015610423575f80fd5b5061042c610e03565b6040516104399190613785565b60405180910390f35b34801561044d575f80fd5b50610456610e09565b60405161046391906137b9565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d91906135c3565b610e11565b60405161049f919061361b565b60405180910390f35b3480156104b3575f80fd5b506104bc610eb8565b6040516104c99190613785565b60405180910390f35b3480156104dd575f80fd5b506104e6610edc565b6040516104f3919061361b565b60405180910390f35b348015610507575f80fd5b50610522600480360381019061051d9190613888565b610eee565b005b34801561052f575f80fd5b50610538610f97565b604051610545919061370d565b60405180910390f35b348015610559575f80fd5b50610562610f9d565b60405161056f919061361b565b60405180910390f35b348015610583575f80fd5b5061058c610fb0565b005b348015610599575f80fd5b506105b460048036038101906105af9190613634565b61103e565b6040516105c1919061370d565b60405180910390f35b3480156105d5575f80fd5b506105de611083565b005b3480156105eb575f80fd5b506106066004803603810190610601919061365f565b61110a565b005b348015610613575f80fd5b5061061c611190565b005b348015610629575f80fd5b50610644600480360381019061063f9190613930565b611227565b005b348015610651575f80fd5b5061066c6004803603810190610667919061365f565b6112fb565b005b348015610679575f80fd5b50610694600480360381019061068f919061365f565b611388565b005b3480156106a1575f80fd5b506106aa611449565b6040516106b79190613785565b60405180910390f35b3480156106cb575f80fd5b506106e660048036038101906106e1919061396e565b611471565b005b3480156106f3575f80fd5b506106fc61150a565b604051610709919061350e565b60405180910390f35b34801561071d575f80fd5b5061072661159a565b604051610733919061370d565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613930565b6115a0565b005b34801561076f575f80fd5b5061078a600480360381019061078591906135c3565b6116b8565b604051610797919061361b565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190613930565b61179e565b005b3480156107d3575f80fd5b506107ee60048036038101906107e991906135c3565b6118c6565b6040516107fb919061361b565b60405180910390f35b34801561080f575f80fd5b5061082a60048036038101906108259190613634565b6118e3565b005b348015610837575f80fd5b50610852600480360381019061084d9190613634565b611a1d565b60405161085f919061361b565b60405180910390f35b348015610873575f80fd5b5061087c611a3a565b604051610889919061361b565b60405180910390f35b34801561089d575f80fd5b506108b860048036038101906108b39190613930565b611a4d565b005b3480156108c5575f80fd5b506108e060048036038101906108db919061365f565b611b6f565b005b3480156108ed575f80fd5b506108f6611c7e565b604051610903919061370d565b60405180910390f35b610914611c84565b005b348015610921575f80fd5b5061092a611f13565b604051610937919061370d565b60405180910390f35b34801561094b575f80fd5b506109666004803603810190610961919061365f565b611f19565b005b348015610973575f80fd5b5061097c611fb2565b604051610989919061370d565b60405180910390f35b34801561099d575f80fd5b506109b860048036038101906109b39190613999565b611fb8565b6040516109c5919061370d565b60405180910390f35b3480156109d9575f80fd5b506109e261203a565b6040516109ef919061370d565b60405180910390f35b348015610a03575f80fd5b50610a1e6004803603810190610a19919061365f565b612040565b005b348015610a2b575f80fd5b50610a466004803603810190610a419190613634565b6120c6565b005b348015610a53575f80fd5b50610a5c6121bc565b604051610a69919061370d565b60405180910390f35b606060038054610a8190613a04565b80601f0160208091040260200160405190810160405280929190818152602001828054610aad90613a04565b8015610af85780601f10610acf57610100808354040283529160200191610af8565b820191905f5260205f20905b815481529060010190602001808311610adb57829003601f168201915b5050505050905090565b5f610b15610b0e6121c2565b84846121c9565b6001905092915050565b6012602052805f5260405f205f915054906101000a900460ff1681565b610b446121c2565b73ffffffffffffffffffffffffffffffffffffffff16610b62611449565b73ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf90613a7e565b60405180910390fd5b670de0b6b3a764000081610bcc9190613ac9565b600a8190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610c0a6121c2565b73ffffffffffffffffffffffffffffffffffffffff16610c28611449565b73ffffffffffffffffffffffffffffffffffffffff1614610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590613a7e565b60405180910390fd5b670de0b6b3a76400006103e86001610c94610bf9565b610c9e9190613ac9565b610ca89190613b37565b610cb29190613b37565b811015610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb90613bd7565b60405180910390fd5b670de0b6b3a764000081610d089190613ac9565b60078190555050565b5f610d1d84848461238c565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d646121c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda90613c65565b60405180910390fd5b610df785610def6121c2565b8584036121c9565b60019150509392505050565b61dead81565b5f6012905090565b5f610eae610e1d6121c2565b848460015f610e2a6121c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ea99190613c83565b6121c9565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5f9054906101000a900460ff1681565b5f84849050118015610f0557508383905082829050145b610f0d575f80fd5b5f3390505f5b85859050811015610f8f57610f7c82878784818110610f3557610f34613cb6565b5b9050602002016020810190610f4a9190613634565b670de0b6b3a7640000878786818110610f6657610f65613cb6565b5b90506020020135610f779190613ac9565b61238c565b8080610f8790613ce3565b915050610f13565b505050505050565b60105481565b600b60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610ff690613d57565b5f6040518083038185875af1925050503d805f8114611030576040519150601f19603f3d011682016040523d82523d5f602084013e611035565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61108b6121c2565b73ffffffffffffffffffffffffffffffffffffffff166110a9611449565b73ffffffffffffffffffffffffffffffffffffffff16146110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f690613a7e565b60405180910390fd5b6111085f612d7a565b565b6111126121c2565b73ffffffffffffffffffffffffffffffffffffffff16611130611449565b73ffffffffffffffffffffffffffffffffffffffff1614611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90613a7e565b60405180910390fd5b80600f8190555050565b6111986121c2565b73ffffffffffffffffffffffffffffffffffffffff166111b6611449565b73ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390613a7e565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b61122f6121c2565b73ffffffffffffffffffffffffffffffffffffffff1661124d611449565b73ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90613a7e565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113036121c2565b73ffffffffffffffffffffffffffffffffffffffff16611321611449565b73ffffffffffffffffffffffffffffffffffffffff1614611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90613a7e565b60405180910390fd5b80600f819055508060108190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113c86121c2565b73ffffffffffffffffffffffffffffffffffffffff16146113e7575f80fd5b6113f03061103e565b81111580156113fe57505f81115b61143d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143490613db5565b60405180910390fd5b61144681612e3d565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114796121c2565b73ffffffffffffffffffffffffffffffffffffffff16611497611449565b73ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613a7e565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461151990613a04565b80601f016020809104026020016040519081016040528092919081815260200182805461154590613a04565b80156115905780601f1061156757610100808354040283529160200191611590565b820191905f5260205f20905b81548152906001019060200180831161157357829003601f168201915b5050505050905090565b600e5481565b6115a86121c2565b73ffffffffffffffffffffffffffffffffffffffff166115c6611449565b73ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613a7e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613e43565b60405180910390fd5b6116b48282613070565b5050565b5f8060015f6116c56121c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690613ed1565b60405180910390fd5b61179361178a6121c2565b858584036121c9565b600191505092915050565b6117a66121c2565b73ffffffffffffffffffffffffffffffffffffffff166117c4611449565b73ffffffffffffffffffffffffffffffffffffffff161461181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190613a7e565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6118d96118d26121c2565b848461238c565b6001905092915050565b6118eb6121c2565b73ffffffffffffffffffffffffffffffffffffffff16611909611449565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613a7e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611a556121c2565b73ffffffffffffffffffffffffffffffffffffffff16611a73611449565b73ffffffffffffffffffffffffffffffffffffffff1614611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac090613a7e565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b63919061361b565b60405180910390a25050565b611b776121c2565b73ffffffffffffffffffffffffffffffffffffffff16611b95611449565b73ffffffffffffffffffffffffffffffffffffffff1614611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290613a7e565b60405180910390fd5b670de0b6b3a76400006103e86005611c01610bf9565b611c0b9190613ac9565b611c159190613b37565b611c1f9190613b37565b811015611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5890613f5f565b60405180910390fd5b670de0b6b3a764000081611c759190613ac9565b60098190555050565b60075481565b611c8c6121c2565b73ffffffffffffffffffffffffffffffffffffffff16611caa611449565b73ffffffffffffffffffffffffffffffffffffffff1614611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790613a7e565b60405180910390fd5b611d32307f0000000000000000000000000000000000000000000000000000000000000000611d2d610bf9565b6121c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611d793061103e565b5f80611d83611449565b426040518863ffffffff1660e01b8152600401611da596959493929190613fb6565b60606040518083038185885af1158015611dc1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611de69190614029565b5050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611e84929190614079565b6020604051808303815f875af1158015611ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec491906140b4565b50600f600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d81905550565b600a5481565b611f216121c2565b73ffffffffffffffffffffffffffffffffffffffff16611f3f611449565b73ffffffffffffffffffffffffffffffffffffffff1614611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90613a7e565b60405180910390fd5b670de0b6b3a764000081611fa99190613ac9565b60088190555050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6120486121c2565b73ffffffffffffffffffffffffffffffffffffffff16612066611449565b73ffffffffffffffffffffffffffffffffffffffff16146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b390613a7e565b60405180910390fd5b8060108190555050565b6120ce6121c2565b73ffffffffffffffffffffffffffffffffffffffff166120ec611449565b73ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990613a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061414f565b60405180910390fd5b6121b981612d7a565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906141dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c9061426b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237f919061370d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f1906142f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f90614387565b60405180910390fd5b5f810361247f5761247a83835f61310e565b612d75565b600b5f9054906101000a900460ff161561299f5761249b611449565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561250957506124d9611449565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561254157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125945750600560149054906101000a900460ff16155b1561299e5743600e54600c546125aa9190613c83565b106125c457601e6010819055506022600f819055506125d5565b600f601081905550600a600f819055505b600b60019054906101000a900460ff166126c45760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612684575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ba906143ef565b60405180910390fd5b5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612761575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612808576007548111156127ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a29061447d565b60405180910390fd5b6009546127b78361103e565b826127c29190613c83565b1115612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa906144e5565b60405180910390fd5b61299d565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128a5575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128f4576007548111156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690614573565b60405180910390fd5b61299c565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661299b5760095461294e8361103e565b826129599190613c83565b111561299a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612991906144e5565b60405180910390fd5b5b5b5b5b5b5f6129a93061103e565b90505f60085482101590508080156129cd5750600b60029054906101000a900460ff165b80156129e65750600560149054906101000a900460ff16155b8015612a39575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a8c575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612adf575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b7057600360145f4381526020019081526020015f20541015612b6f576001600560146101000a81548160ff021916908315150217905550612b21613383565b5f600560146101000a81548160ff021916908315150217905550600160145f4381526020019081526020015f2054612b599190613c83565b60145f4381526020019081526020015f20819055505b5b5f600560149054906101000a900460ff1615905060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c1f575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c28575f90505b5f8115612d655760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8657505f601054115b15612cba57612cb36064612ca56010548861345090919063ffffffff16565b61346590919063ffffffff16565b9050612d42565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d1157505f600f54115b15612d4157612d3e6064612d30600f548861345090919063ffffffff16565b61346590919063ffffffff16565b90505b5b5f811115612d5657612d5587308361310e565b5b8085612d629190614591565b94505b612d7087878761310e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff811115612e5957612e586145c4565b5b604051908082528060200260200182016040528015612e875781602001602082028036833780820191505090505b50905030815f81518110612e9e57612e9d613cb6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f659190614605565b81600181518110612f7957612f78613cb6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fde307f0000000000000000000000000000000000000000000000000000000000000000846121c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161303f9594939291906146e7565b5f604051808303815f87803b158015613056575f80fd5b505af1158015613068573d5f803e3d5ffd5b505050505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613173906142f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e190614387565b60405180910390fd5b6131f583838361347a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326f906147af565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546133069190613c83565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161336a919061370d565b60405180910390a361337d84848461347f565b50505050565b5f61338d3061103e565b90505f80820361339e57505061344e565b600a548211156133ae57600a5491505b5f8290506133bb81612e3d565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161340490613d57565b5f6040518083038185875af1925050503d805f811461343e576040519150601f19603f3d011682016040523d82523d5f602084013e613443565b606091505b505080935050505050505b565b5f818361345d9190613ac9565b905092915050565b5f81836134729190613b37565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156134bb5780820151818401526020810190506134a0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134e082613484565b6134ea818561348e565b93506134fa81856020860161349e565b613503816134c6565b840191505092915050565b5f6020820190508181035f83015261352681846134d6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61355f82613536565b9050919050565b61356f81613555565b8114613579575f80fd5b50565b5f8135905061358a81613566565b92915050565b5f819050919050565b6135a281613590565b81146135ac575f80fd5b50565b5f813590506135bd81613599565b92915050565b5f80604083850312156135d9576135d861352e565b5b5f6135e68582860161357c565b92505060206135f7858286016135af565b9150509250929050565b5f8115159050919050565b61361581613601565b82525050565b5f60208201905061362e5f83018461360c565b92915050565b5f602082840312156136495761364861352e565b5b5f6136568482850161357c565b91505092915050565b5f602082840312156136745761367361352e565b5b5f613681848285016135af565b91505092915050565b5f819050919050565b5f6136ad6136a86136a384613536565b61368a565b613536565b9050919050565b5f6136be82613693565b9050919050565b5f6136cf826136b4565b9050919050565b6136df816136c5565b82525050565b5f6020820190506136f85f8301846136d6565b92915050565b61370781613590565b82525050565b5f6020820190506137205f8301846136fe565b92915050565b5f805f6060848603121561373d5761373c61352e565b5b5f61374a8682870161357c565b935050602061375b8682870161357c565b925050604061376c868287016135af565b9150509250925092565b61377f81613555565b82525050565b5f6020820190506137985f830184613776565b92915050565b5f60ff82169050919050565b6137b38161379e565b82525050565b5f6020820190506137cc5f8301846137aa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126137f3576137f26137d2565b5b8235905067ffffffffffffffff8111156138105761380f6137d6565b5b60208301915083602082028301111561382c5761382b6137da565b5b9250929050565b5f8083601f840112613848576138476137d2565b5b8235905067ffffffffffffffff811115613865576138646137d6565b5b602083019150836020820283011115613881576138806137da565b5b9250929050565b5f805f80604085870312156138a05761389f61352e565b5b5f85013567ffffffffffffffff8111156138bd576138bc613532565b5b6138c9878288016137de565b9450945050602085013567ffffffffffffffff8111156138ec576138eb613532565b5b6138f887828801613833565b925092505092959194509250565b61390f81613601565b8114613919575f80fd5b50565b5f8135905061392a81613906565b92915050565b5f80604083850312156139465761394561352e565b5b5f6139538582860161357c565b92505060206139648582860161391c565b9150509250929050565b5f602082840312156139835761398261352e565b5b5f6139908482850161391c565b91505092915050565b5f80604083850312156139af576139ae61352e565b5b5f6139bc8582860161357c565b92505060206139cd8582860161357c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a1b57607f821691505b602082108103613a2e57613a2d6139d7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a6860208361348e565b9150613a7382613a34565b602082019050919050565b5f6020820190508181035f830152613a9581613a5c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ad382613590565b9150613ade83613590565b9250828202613aec81613590565b91508282048414831517613b0357613b02613a9c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b4182613590565b9150613b4c83613590565b925082613b5c57613b5b613b0a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613bc1602f8361348e565b9150613bcc82613b67565b604082019050919050565b5f6020820190508181035f830152613bee81613bb5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c4f60288361348e565b9150613c5a82613bf5565b604082019050919050565b5f6020820190508181035f830152613c7c81613c43565b9050919050565b5f613c8d82613590565b9150613c9883613590565b9250828201905080821115613cb057613caf613a9c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613ced82613590565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1f57613d1e613a9c565b5b600182019050919050565b5f81905092915050565b50565b5f613d425f83613d2a565b9150613d4d82613d34565b5f82019050919050565b5f613d6182613d37565b9150819050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613d9f600c8361348e565b9150613daa82613d6b565b602082019050919050565b5f6020820190508181035f830152613dcc81613d93565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e2d60398361348e565b9150613e3882613dd3565b604082019050919050565b5f6020820190508181035f830152613e5a81613e21565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ebb60258361348e565b9150613ec682613e61565b604082019050919050565b5f6020820190508181035f830152613ee881613eaf565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f4960248361348e565b9150613f5482613eef565b604082019050919050565b5f6020820190508181035f830152613f7681613f3d565b9050919050565b5f819050919050565b5f613fa0613f9b613f9684613f7d565b61368a565b613590565b9050919050565b613fb081613f86565b82525050565b5f60c082019050613fc95f830189613776565b613fd660208301886136fe565b613fe36040830187613fa7565b613ff06060830186613fa7565b613ffd6080830185613776565b61400a60a08301846136fe565b979650505050505050565b5f8151905061402381613599565b92915050565b5f805f606084860312156140405761403f61352e565b5b5f61404d86828701614015565b935050602061405e86828701614015565b925050604061406f86828701614015565b9150509250925092565b5f60408201905061408c5f830185613776565b61409960208301846136fe565b9392505050565b5f815190506140ae81613906565b92915050565b5f602082840312156140c9576140c861352e565b5b5f6140d6848285016140a0565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61413960268361348e565b9150614144826140df565b604082019050919050565b5f6020820190508181035f8301526141668161412d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141c760248361348e565b91506141d28261416d565b604082019050919050565b5f6020820190508181035f8301526141f4816141bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61425560228361348e565b9150614260826141fb565b604082019050919050565b5f6020820190508181035f83015261428281614249565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142e360258361348e565b91506142ee82614289565b604082019050919050565b5f6020820190508181035f830152614310816142d7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61437160238361348e565b915061437c82614317565b604082019050919050565b5f6020820190508181035f83015261439e81614365565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143d960168361348e565b91506143e4826143a5565b602082019050919050565b5f6020820190508181035f830152614406816143cd565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61446760358361348e565b91506144728261440d565b604082019050919050565b5f6020820190508181035f8301526144948161445b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144cf60138361348e565b91506144da8261449b565b602082019050919050565b5f6020820190508181035f8301526144fc816144c3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61455d60368361348e565b915061456882614503565b604082019050919050565b5f6020820190508181035f83015261458a81614551565b9050919050565b5f61459b82613590565b91506145a683613590565b92508282039050818111156145be576145bd613a9c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506145ff81613566565b92915050565b5f6020828403121561461a5761461961352e565b5b5f614627848285016145f1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61466281613555565b82525050565b5f6146738383614659565b60208301905092915050565b5f602082019050919050565b5f61469582614630565b61469f818561463a565b93506146aa8361464a565b805f5b838110156146da5781516146c18882614668565b97506146cc8361467f565b9250506001810190506146ad565b5085935050505092915050565b5f60a0820190506146fa5f8301886136fe565b6147076020830187613fa7565b8181036040830152614719818661468b565b90506147286060830185613776565b61473560808301846136fe565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61479960268361348e565b91506147a48261473f565b604082019050919050565b5f6020820190508181035f8301526147c68161478d565b905091905056fea26469706673582212207f4b8e22c06ed6b7faddbde3334a86244150c76b59035163f31269a9581a6c6464736f6c63430008150033

Deployed Bytecode

0x60806040526004361061028b575f3560e01c8063881dce6011610159578063c0246668116100c0578063d85ba06311610079578063d85ba06314610968578063dd62ed3e14610992578063e2f45605146109ce578063eba4c333146109f8578063f2fde38b14610a20578063f8b45b0514610a4857610292565b8063c024666814610892578063c18bc195146108ba578063c8c8ebe4146108e2578063c9567bf91461090c578063cce987d414610916578063d257b34f1461094057610292565b8063a457c2d711610112578063a457c2d714610764578063a672990c146107a0578063a9059cbb146107c8578063aacebbe314610804578063b62496f51461082c578063bbc0c7421461086857610292565b8063881dce601461066e5780638da5cb5b14610696578063924de9b7146106c057806395d89b41146106e8578063967ff23e146107125780639a7a23d61461073c57610292565b806349bd5a5e116101fd57806370a08231116101b657806370a082311461058e578063715018a6146105ca57806371fc4688146105e0578063751039fc146106085780637571336a1461061e57806378dacee11461064657610292565b806349bd5a5e146104a85780634a62bb65146104d257806367243482146104fc5780636a486a8e146105245780636ddd17131461054e5780636fc3eaec1461057857610292565b806318160ddd1161024f57806318160ddd1461038a578063203e727e146103b457806323b872dd146103dc57806327c8f83514610418578063313ce56714610442578063395093511461046c57610292565b806306fdde0314610296578063095ea7b3146102c057806310d5de53146102fc578063150074a3146103385780631694505e1461036057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610a72565b6040516102b7919061350e565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e191906135c3565b610b02565b6040516102f3919061361b565b60405180910390f35b348015610307575f80fd5b50610322600480360381019061031d9190613634565b610b1f565b60405161032f919061361b565b60405180910390f35b348015610343575f80fd5b5061035e6004803603810190610359919061365f565b610b3c565b005b34801561036b575f80fd5b50610374610bd5565b60405161038191906136e5565b60405180910390f35b348015610395575f80fd5b5061039e610bf9565b6040516103ab919061370d565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d5919061365f565b610c02565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190613726565b610d11565b60405161040f919061361b565b60405180910390f35b348015610423575f80fd5b5061042c610e03565b6040516104399190613785565b60405180910390f35b34801561044d575f80fd5b50610456610e09565b60405161046391906137b9565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d91906135c3565b610e11565b60405161049f919061361b565b60405180910390f35b3480156104b3575f80fd5b506104bc610eb8565b6040516104c99190613785565b60405180910390f35b3480156104dd575f80fd5b506104e6610edc565b6040516104f3919061361b565b60405180910390f35b348015610507575f80fd5b50610522600480360381019061051d9190613888565b610eee565b005b34801561052f575f80fd5b50610538610f97565b604051610545919061370d565b60405180910390f35b348015610559575f80fd5b50610562610f9d565b60405161056f919061361b565b60405180910390f35b348015610583575f80fd5b5061058c610fb0565b005b348015610599575f80fd5b506105b460048036038101906105af9190613634565b61103e565b6040516105c1919061370d565b60405180910390f35b3480156105d5575f80fd5b506105de611083565b005b3480156105eb575f80fd5b506106066004803603810190610601919061365f565b61110a565b005b348015610613575f80fd5b5061061c611190565b005b348015610629575f80fd5b50610644600480360381019061063f9190613930565b611227565b005b348015610651575f80fd5b5061066c6004803603810190610667919061365f565b6112fb565b005b348015610679575f80fd5b50610694600480360381019061068f919061365f565b611388565b005b3480156106a1575f80fd5b506106aa611449565b6040516106b79190613785565b60405180910390f35b3480156106cb575f80fd5b506106e660048036038101906106e1919061396e565b611471565b005b3480156106f3575f80fd5b506106fc61150a565b604051610709919061350e565b60405180910390f35b34801561071d575f80fd5b5061072661159a565b604051610733919061370d565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613930565b6115a0565b005b34801561076f575f80fd5b5061078a600480360381019061078591906135c3565b6116b8565b604051610797919061361b565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190613930565b61179e565b005b3480156107d3575f80fd5b506107ee60048036038101906107e991906135c3565b6118c6565b6040516107fb919061361b565b60405180910390f35b34801561080f575f80fd5b5061082a60048036038101906108259190613634565b6118e3565b005b348015610837575f80fd5b50610852600480360381019061084d9190613634565b611a1d565b60405161085f919061361b565b60405180910390f35b348015610873575f80fd5b5061087c611a3a565b604051610889919061361b565b60405180910390f35b34801561089d575f80fd5b506108b860048036038101906108b39190613930565b611a4d565b005b3480156108c5575f80fd5b506108e060048036038101906108db919061365f565b611b6f565b005b3480156108ed575f80fd5b506108f6611c7e565b604051610903919061370d565b60405180910390f35b610914611c84565b005b348015610921575f80fd5b5061092a611f13565b604051610937919061370d565b60405180910390f35b34801561094b575f80fd5b506109666004803603810190610961919061365f565b611f19565b005b348015610973575f80fd5b5061097c611fb2565b604051610989919061370d565b60405180910390f35b34801561099d575f80fd5b506109b860048036038101906109b39190613999565b611fb8565b6040516109c5919061370d565b60405180910390f35b3480156109d9575f80fd5b506109e261203a565b6040516109ef919061370d565b60405180910390f35b348015610a03575f80fd5b50610a1e6004803603810190610a19919061365f565b612040565b005b348015610a2b575f80fd5b50610a466004803603810190610a419190613634565b6120c6565b005b348015610a53575f80fd5b50610a5c6121bc565b604051610a69919061370d565b60405180910390f35b606060038054610a8190613a04565b80601f0160208091040260200160405190810160405280929190818152602001828054610aad90613a04565b8015610af85780601f10610acf57610100808354040283529160200191610af8565b820191905f5260205f20905b815481529060010190602001808311610adb57829003601f168201915b5050505050905090565b5f610b15610b0e6121c2565b84846121c9565b6001905092915050565b6012602052805f5260405f205f915054906101000a900460ff1681565b610b446121c2565b73ffffffffffffffffffffffffffffffffffffffff16610b62611449565b73ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf90613a7e565b60405180910390fd5b670de0b6b3a764000081610bcc9190613ac9565b600a8190555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610c0a6121c2565b73ffffffffffffffffffffffffffffffffffffffff16610c28611449565b73ffffffffffffffffffffffffffffffffffffffff1614610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590613a7e565b60405180910390fd5b670de0b6b3a76400006103e86001610c94610bf9565b610c9e9190613ac9565b610ca89190613b37565b610cb29190613b37565b811015610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb90613bd7565b60405180910390fd5b670de0b6b3a764000081610d089190613ac9565b60078190555050565b5f610d1d84848461238c565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d646121c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda90613c65565b60405180910390fd5b610df785610def6121c2565b8584036121c9565b60019150509392505050565b61dead81565b5f6012905090565b5f610eae610e1d6121c2565b848460015f610e2a6121c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ea99190613c83565b6121c9565b6001905092915050565b7f000000000000000000000000fe511cdab09981e34484c39cfe7ad9be6f38a30381565b600b5f9054906101000a900460ff1681565b5f84849050118015610f0557508383905082829050145b610f0d575f80fd5b5f3390505f5b85859050811015610f8f57610f7c82878784818110610f3557610f34613cb6565b5b9050602002016020810190610f4a9190613634565b670de0b6b3a7640000878786818110610f6657610f65613cb6565b5b90506020020135610f779190613ac9565b61238c565b8080610f8790613ce3565b915050610f13565b505050505050565b60105481565b600b60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610ff690613d57565b5f6040518083038185875af1925050503d805f8114611030576040519150601f19603f3d011682016040523d82523d5f602084013e611035565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61108b6121c2565b73ffffffffffffffffffffffffffffffffffffffff166110a9611449565b73ffffffffffffffffffffffffffffffffffffffff16146110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f690613a7e565b60405180910390fd5b6111085f612d7a565b565b6111126121c2565b73ffffffffffffffffffffffffffffffffffffffff16611130611449565b73ffffffffffffffffffffffffffffffffffffffff1614611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d90613a7e565b60405180910390fd5b80600f8190555050565b6111986121c2565b73ffffffffffffffffffffffffffffffffffffffff166111b6611449565b73ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390613a7e565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b61122f6121c2565b73ffffffffffffffffffffffffffffffffffffffff1661124d611449565b73ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90613a7e565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113036121c2565b73ffffffffffffffffffffffffffffffffffffffff16611321611449565b73ffffffffffffffffffffffffffffffffffffffff1614611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90613a7e565b60405180910390fd5b80600f819055508060108190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113c86121c2565b73ffffffffffffffffffffffffffffffffffffffff16146113e7575f80fd5b6113f03061103e565b81111580156113fe57505f81115b61143d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143490613db5565b60405180910390fd5b61144681612e3d565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114796121c2565b73ffffffffffffffffffffffffffffffffffffffff16611497611449565b73ffffffffffffffffffffffffffffffffffffffff16146114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613a7e565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461151990613a04565b80601f016020809104026020016040519081016040528092919081815260200182805461154590613a04565b80156115905780601f1061156757610100808354040283529160200191611590565b820191905f5260205f20905b81548152906001019060200180831161157357829003601f168201915b5050505050905090565b600e5481565b6115a86121c2565b73ffffffffffffffffffffffffffffffffffffffff166115c6611449565b73ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613a7e565b60405180910390fd5b7f000000000000000000000000fe511cdab09981e34484c39cfe7ad9be6f38a30373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613e43565b60405180910390fd5b6116b48282613070565b5050565b5f8060015f6116c56121c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690613ed1565b60405180910390fd5b61179361178a6121c2565b858584036121c9565b600191505092915050565b6117a66121c2565b73ffffffffffffffffffffffffffffffffffffffff166117c4611449565b73ffffffffffffffffffffffffffffffffffffffff161461181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190613a7e565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6118d96118d26121c2565b848461238c565b6001905092915050565b6118eb6121c2565b73ffffffffffffffffffffffffffffffffffffffff16611909611449565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690613a7e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611a556121c2565b73ffffffffffffffffffffffffffffffffffffffff16611a73611449565b73ffffffffffffffffffffffffffffffffffffffff1614611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac090613a7e565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b63919061361b565b60405180910390a25050565b611b776121c2565b73ffffffffffffffffffffffffffffffffffffffff16611b95611449565b73ffffffffffffffffffffffffffffffffffffffff1614611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290613a7e565b60405180910390fd5b670de0b6b3a76400006103e86005611c01610bf9565b611c0b9190613ac9565b611c159190613b37565b611c1f9190613b37565b811015611c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5890613f5f565b60405180910390fd5b670de0b6b3a764000081611c759190613ac9565b60098190555050565b60075481565b611c8c6121c2565b73ffffffffffffffffffffffffffffffffffffffff16611caa611449565b73ffffffffffffffffffffffffffffffffffffffff1614611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790613a7e565b60405180910390fd5b611d32307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d611d2d610bf9565b6121c9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611d793061103e565b5f80611d83611449565b426040518863ffffffff1660e01b8152600401611da596959493929190613fb6565b60606040518083038185885af1158015611dc1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611de69190614029565b5050507f000000000000000000000000fe511cdab09981e34484c39cfe7ad9be6f38a30373ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611e84929190614079565b6020604051808303815f875af1158015611ea0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec491906140b4565b50600f600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d81905550565b600a5481565b611f216121c2565b73ffffffffffffffffffffffffffffffffffffffff16611f3f611449565b73ffffffffffffffffffffffffffffffffffffffff1614611f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8c90613a7e565b60405180910390fd5b670de0b6b3a764000081611fa99190613ac9565b60088190555050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6120486121c2565b73ffffffffffffffffffffffffffffffffffffffff16612066611449565b73ffffffffffffffffffffffffffffffffffffffff16146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b390613a7e565b60405180910390fd5b8060108190555050565b6120ce6121c2565b73ffffffffffffffffffffffffffffffffffffffff166120ec611449565b73ffffffffffffffffffffffffffffffffffffffff1614612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990613a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a79061414f565b60405180910390fd5b6121b981612d7a565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906141dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c9061426b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161237f919061370d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f1906142f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f90614387565b60405180910390fd5b5f810361247f5761247a83835f61310e565b612d75565b600b5f9054906101000a900460ff161561299f5761249b611449565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561250957506124d9611449565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561254157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125945750600560149054906101000a900460ff16155b1561299e5743600e54600c546125aa9190613c83565b106125c457601e6010819055506022600f819055506125d5565b600f601081905550600a600f819055505b600b60019054906101000a900460ff166126c45760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612684575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ba906143ef565b60405180910390fd5b5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612761575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612808576007548111156127ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a29061447d565b60405180910390fd5b6009546127b78361103e565b826127c29190613c83565b1115612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa906144e5565b60405180910390fd5b61299d565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128a5575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128f4576007548111156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690614573565b60405180910390fd5b61299c565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661299b5760095461294e8361103e565b826129599190613c83565b111561299a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612991906144e5565b60405180910390fd5b5b5b5b5b5b5f6129a93061103e565b90505f60085482101590508080156129cd5750600b60029054906101000a900460ff165b80156129e65750600560149054906101000a900460ff16155b8015612a39575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a8c575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612adf575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b7057600360145f4381526020019081526020015f20541015612b6f576001600560146101000a81548160ff021916908315150217905550612b21613383565b5f600560146101000a81548160ff021916908315150217905550600160145f4381526020019081526020015f2054612b599190613c83565b60145f4381526020019081526020015f20819055505b5b5f600560149054906101000a900460ff1615905060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c1f575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c28575f90505b5f8115612d655760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c8657505f601054115b15612cba57612cb36064612ca56010548861345090919063ffffffff16565b61346590919063ffffffff16565b9050612d42565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d1157505f600f54115b15612d4157612d3e6064612d30600f548861345090919063ffffffff16565b61346590919063ffffffff16565b90505b5b5f811115612d5657612d5587308361310e565b5b8085612d629190614591565b94505b612d7087878761310e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff811115612e5957612e586145c4565b5b604051908082528060200260200182016040528015612e875781602001602082028036833780820191505090505b50905030815f81518110612e9e57612e9d613cb6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f659190614605565b81600181518110612f7957612f78613cb6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fde307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121c9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161303f9594939291906146e7565b5f604051808303815f87803b158015613056575f80fd5b505af1158015613068573d5f803e3d5ffd5b505050505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361317c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613173906142f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e190614387565b60405180910390fd5b6131f583838361347a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326f906147af565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546133069190613c83565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161336a919061370d565b60405180910390a361337d84848461347f565b50505050565b5f61338d3061103e565b90505f80820361339e57505061344e565b600a548211156133ae57600a5491505b5f8290506133bb81612e3d565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161340490613d57565b5f6040518083038185875af1925050503d805f811461343e576040519150601f19603f3d011682016040523d82523d5f602084013e613443565b606091505b505080935050505050505b565b5f818361345d9190613ac9565b905092915050565b5f81836134729190613b37565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156134bb5780820151818401526020810190506134a0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134e082613484565b6134ea818561348e565b93506134fa81856020860161349e565b613503816134c6565b840191505092915050565b5f6020820190508181035f83015261352681846134d6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61355f82613536565b9050919050565b61356f81613555565b8114613579575f80fd5b50565b5f8135905061358a81613566565b92915050565b5f819050919050565b6135a281613590565b81146135ac575f80fd5b50565b5f813590506135bd81613599565b92915050565b5f80604083850312156135d9576135d861352e565b5b5f6135e68582860161357c565b92505060206135f7858286016135af565b9150509250929050565b5f8115159050919050565b61361581613601565b82525050565b5f60208201905061362e5f83018461360c565b92915050565b5f602082840312156136495761364861352e565b5b5f6136568482850161357c565b91505092915050565b5f602082840312156136745761367361352e565b5b5f613681848285016135af565b91505092915050565b5f819050919050565b5f6136ad6136a86136a384613536565b61368a565b613536565b9050919050565b5f6136be82613693565b9050919050565b5f6136cf826136b4565b9050919050565b6136df816136c5565b82525050565b5f6020820190506136f85f8301846136d6565b92915050565b61370781613590565b82525050565b5f6020820190506137205f8301846136fe565b92915050565b5f805f6060848603121561373d5761373c61352e565b5b5f61374a8682870161357c565b935050602061375b8682870161357c565b925050604061376c868287016135af565b9150509250925092565b61377f81613555565b82525050565b5f6020820190506137985f830184613776565b92915050565b5f60ff82169050919050565b6137b38161379e565b82525050565b5f6020820190506137cc5f8301846137aa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126137f3576137f26137d2565b5b8235905067ffffffffffffffff8111156138105761380f6137d6565b5b60208301915083602082028301111561382c5761382b6137da565b5b9250929050565b5f8083601f840112613848576138476137d2565b5b8235905067ffffffffffffffff811115613865576138646137d6565b5b602083019150836020820283011115613881576138806137da565b5b9250929050565b5f805f80604085870312156138a05761389f61352e565b5b5f85013567ffffffffffffffff8111156138bd576138bc613532565b5b6138c9878288016137de565b9450945050602085013567ffffffffffffffff8111156138ec576138eb613532565b5b6138f887828801613833565b925092505092959194509250565b61390f81613601565b8114613919575f80fd5b50565b5f8135905061392a81613906565b92915050565b5f80604083850312156139465761394561352e565b5b5f6139538582860161357c565b92505060206139648582860161391c565b9150509250929050565b5f602082840312156139835761398261352e565b5b5f6139908482850161391c565b91505092915050565b5f80604083850312156139af576139ae61352e565b5b5f6139bc8582860161357c565b92505060206139cd8582860161357c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a1b57607f821691505b602082108103613a2e57613a2d6139d7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a6860208361348e565b9150613a7382613a34565b602082019050919050565b5f6020820190508181035f830152613a9581613a5c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ad382613590565b9150613ade83613590565b9250828202613aec81613590565b91508282048414831517613b0357613b02613a9c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b4182613590565b9150613b4c83613590565b925082613b5c57613b5b613b0a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613bc1602f8361348e565b9150613bcc82613b67565b604082019050919050565b5f6020820190508181035f830152613bee81613bb5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c4f60288361348e565b9150613c5a82613bf5565b604082019050919050565b5f6020820190508181035f830152613c7c81613c43565b9050919050565b5f613c8d82613590565b9150613c9883613590565b9250828201905080821115613cb057613caf613a9c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613ced82613590565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1f57613d1e613a9c565b5b600182019050919050565b5f81905092915050565b50565b5f613d425f83613d2a565b9150613d4d82613d34565b5f82019050919050565b5f613d6182613d37565b9150819050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613d9f600c8361348e565b9150613daa82613d6b565b602082019050919050565b5f6020820190508181035f830152613dcc81613d93565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e2d60398361348e565b9150613e3882613dd3565b604082019050919050565b5f6020820190508181035f830152613e5a81613e21565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ebb60258361348e565b9150613ec682613e61565b604082019050919050565b5f6020820190508181035f830152613ee881613eaf565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613f4960248361348e565b9150613f5482613eef565b604082019050919050565b5f6020820190508181035f830152613f7681613f3d565b9050919050565b5f819050919050565b5f613fa0613f9b613f9684613f7d565b61368a565b613590565b9050919050565b613fb081613f86565b82525050565b5f60c082019050613fc95f830189613776565b613fd660208301886136fe565b613fe36040830187613fa7565b613ff06060830186613fa7565b613ffd6080830185613776565b61400a60a08301846136fe565b979650505050505050565b5f8151905061402381613599565b92915050565b5f805f606084860312156140405761403f61352e565b5b5f61404d86828701614015565b935050602061405e86828701614015565b925050604061406f86828701614015565b9150509250925092565b5f60408201905061408c5f830185613776565b61409960208301846136fe565b9392505050565b5f815190506140ae81613906565b92915050565b5f602082840312156140c9576140c861352e565b5b5f6140d6848285016140a0565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61413960268361348e565b9150614144826140df565b604082019050919050565b5f6020820190508181035f8301526141668161412d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141c760248361348e565b91506141d28261416d565b604082019050919050565b5f6020820190508181035f8301526141f4816141bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61425560228361348e565b9150614260826141fb565b604082019050919050565b5f6020820190508181035f83015261428281614249565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142e360258361348e565b91506142ee82614289565b604082019050919050565b5f6020820190508181035f830152614310816142d7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61437160238361348e565b915061437c82614317565b604082019050919050565b5f6020820190508181035f83015261439e81614365565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143d960168361348e565b91506143e4826143a5565b602082019050919050565b5f6020820190508181035f830152614406816143cd565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61446760358361348e565b91506144728261440d565b604082019050919050565b5f6020820190508181035f8301526144948161445b565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144cf60138361348e565b91506144da8261449b565b602082019050919050565b5f6020820190508181035f8301526144fc816144c3565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61455d60368361348e565b915061456882614503565b604082019050919050565b5f6020820190508181035f83015261458a81614551565b9050919050565b5f61459b82613590565b91506145a683613590565b92508282039050818111156145be576145bd613a9c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506145ff81613566565b92915050565b5f6020828403121561461a5761461961352e565b5b5f614627848285016145f1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61466281613555565b82525050565b5f6146738383614659565b60208301905092915050565b5f602082019050919050565b5f61469582614630565b61469f818561463a565b93506146aa8361464a565b805f5b838110156146da5781516146c18882614668565b97506146cc8361467f565b9250506001810190506146ad565b5085935050505092915050565b5f60a0820190506146fa5f8301886136fe565b6147076020830187613fa7565b8181036040830152614719818661468b565b90506147286060830185613776565b61473560808301846136fe565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61479960268361348e565b91506147a48261473f565b604082019050919050565b5f6020820190508181035f8301526147c68161478d565b905091905056fea26469706673582212207f4b8e22c06ed6b7faddbde3334a86244150c76b59035163f31269a9581a6c6464736f6c63430008150033

Deployed Bytecode Sourcemap

11924:11189:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7432:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8346:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12740:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15506:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12005:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7753:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15632:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8523:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12108:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7652:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8989:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12063:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12390:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18274:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12644:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12470:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17081:149;;;;;;;;;;;;;:::i;:::-;;7869:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6478:103;;;;;;;;;;;;;:::i;:::-;;17816:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15272:84;;;;;;;;;;;;;:::i;:::-;;16312:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17686:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16850:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6255:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16552:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7540:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12578:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17238:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9212:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16109:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8004:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18058:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12812:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12430:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16660:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15880:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12240:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14748:516;;;:::i;:::-;;12353:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15364:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12608:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8187:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12282:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17936:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6589:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12322:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7432:100;7486:13;7519:5;7512:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7432:100;:::o;8346:169::-;8429:4;8446:39;8455:12;:10;:12::i;:::-;8469:7;8478:6;8446:8;:39::i;:::-;8503:4;8496:11;;8346:169;;;;:::o;12740:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15506:118::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15607:8:::1;15594:9;:22;;;;:::i;:::-;15578:13;:38;;;;15506:118:::0;:::o;12005:51::-;;;:::o;7753:108::-;7814:7;7841:12;;7834:19;;7753:108;:::o;15632:240::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15755:4:::1;15747;15742:1;15726:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15725:26;;;;:::i;:::-;15724:35;;;;:::i;:::-;15714:6;:45;;15706:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15855:8;15845:6;:19;;;;:::i;:::-;15822:20;:42;;;;15632:240:::0;:::o;8523:458::-;8629:4;8646:36;8656:6;8664:9;8675:6;8646:9;:36::i;:::-;8695:24;8722:11;:19;8734:6;8722:19;;;;;;;;;;;;;;;:33;8742:12;:10;:12::i;:::-;8722:33;;;;;;;;;;;;;;;;8695:60;;8794:6;8774:16;:26;;8766:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8881:57;8890:6;8898:12;:10;:12::i;:::-;8931:6;8912:16;:25;8881:8;:57::i;:::-;8969:4;8962:11;;;8523:458;;;;;:::o;12108:53::-;12154:6;12108:53;:::o;7652:93::-;7710:5;7735:2;7728:9;;7652:93;:::o;8989:215::-;9077:4;9094:80;9103:12;:10;:12::i;:::-;9117:7;9163:10;9126:11;:25;9138:12;:10;:12::i;:::-;9126:25;;;;;;;;;;;;;;;:34;9152:7;9126:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9094:8;:80::i;:::-;9192:4;9185:11;;8989:215;;;;:::o;12063:38::-;;;:::o;12390:33::-;;;;;;;;;;;;;:::o;18274:346::-;18396:1;18377:9;;:16;;:20;:58;;;;;18419:9;;:16;;18401:7;;:14;;:34;18377:58;18369:67;;;;;;18447:12;18462:10;18447:25;;18490:9;18485:128;18509:9;;:16;;18505:1;:20;18485:128;;;18547:54;18557:4;18563:9;;18573:1;18563:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18591:8;18577:7;;18585:1;18577:10;;;;;;;:::i;:::-;;;;;;;;:23;;;;:::i;:::-;18547:9;:54::i;:::-;18527:3;;;;;:::i;:::-;;;;18485:128;;;;18358:262;18274:346;;;;:::o;12644:28::-;;;;:::o;12470:31::-;;;;;;;;;;;;;:::o;17081:149::-;17123:12;17167:15;;;;;;;;;;;17159:29;;17196:21;17159:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17146:76;;;;;17112:118;17081:149::o;7869:127::-;7943:7;7970:9;:18;7980:7;7970:18;;;;;;;;;;;;;;;;7963:25;;7869:127;;;:::o;6478:103::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6543:30:::1;6570:1;6543:18;:30::i;:::-;6478:103::o:0;17816:112::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17907:13:::1;17892:12;:28;;;;17816:112:::0;:::o;15272:84::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15343:5:::1;15326:14;;:22;;;;;;;;;;;;;;;;;;15272:84::o:0;16312:144::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16444:4:::1;16402:31;:39;16434:6;16402:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16312:144:::0;;:::o;17686:122::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17765:4:::1;17750:12;:19;;;;17796:4;17780:13;:20;;;;17686:122:::0;:::o;16850:223::-;16930:15;;;;;;;;;;;16914:31;;:12;:10;:12::i;:::-;:31;;;16906:40;;;;;;16975:24;16993:4;16975:9;:24::i;:::-;16965:6;:34;;:48;;;;;17012:1;17003:6;:10;16965:48;16957:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17041:24;17058:6;17041:16;:24::i;:::-;16850:223;:::o;6255:87::-;6301:7;6328:6;;;;;;;;;;;6321:13;;6255:87;:::o;16552:100::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16637:7:::1;16623:11;;:21;;;;;;;;;;;;;;;;;;16552:100:::0;:::o;7540:104::-;7596:13;7629:7;7622:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:104;:::o;12578:21::-;;;;:::o;17238:244::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17345:13:::1;17337:21;;:4;:21;;::::0;17329:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17433:41;17462:4;17468:5;17433:28;:41::i;:::-;17238:244:::0;;:::o;9212:413::-;9305:4;9322:24;9349:11;:25;9361:12;:10;:12::i;:::-;9349:25;;;;;;;;;;;;;;;:34;9375:7;9349:34;;;;;;;;;;;;;;;;9322:61;;9422:15;9402:16;:35;;9394:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9515:67;9524:12;:10;:12::i;:::-;9538:7;9566:15;9547:16;:34;9515:8;:67::i;:::-;9613:4;9606:11;;;9212:413;;;;:::o;16109:195::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16241:4:::1;16195:31;:43;16227:10;16195:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;16292:4;16258:19;:31;16278:10;16258:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16109:195:::0;;:::o;8004:175::-;8090:4;8107:42;8117:12;:10;:12::i;:::-;8131:9;8142:6;8107:9;:42::i;:::-;8167:4;8160:11;;8004:175;;;;:::o;18058:208::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18195:15:::1;;;;;;;;;;;18152:59;;18175:18;18152:59;;;;;;;;;;;;18240:18;18222:15;;:36;;;;;;;;;;;;;;;;;;18058:208:::0;:::o;12812:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12430:33::-;;;;;;;;;;;;;:::o;16660:182::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16776:8:::1;16745:19;:28;16765:7;16745:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16816:7;16800:34;;;16825:8;16800:34;;;;;;:::i;:::-;;;;;;;;16660:182:::0;;:::o;15880:221::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16006:4:::1;15998;15993:1;15977:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15976:26;;;;:::i;:::-;15975:35;;;;:::i;:::-;15965:6;:45;;15957:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;16084:8;16074:6;:19;;;;:::i;:::-;16062:9;:31;;;;15880:221:::0;:::o;12240:35::-;;;;:::o;14748:516::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14809:64:::1;14826:4;14841:15;14859:13;:11;:13::i;:::-;14809:8;:64::i;:::-;14884:15;:31;;;14923:21;14954:4;14960:24;14978:4;14960:9;:24::i;:::-;14985:1;14987::::0;14989:7:::1;:5;:7::i;:::-;14997:15;14884:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15031:13;15024:29;;;15062:15;15080:14;15024:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15117:2;15108:6;:11;;;;15146:4;15130:13;;:20;;;;;;;;;;;;;;;;;;15175:4;15161:11;;:18;;;;;;;;;;;;;;;;;;15203:12;15190:10;:25;;;;15241:15;15226:12;:30;;;;14748:516::o:0;12353:28::-;;;;:::o;15364:134::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15481:8:::1;15468:9;:22;;;;:::i;:::-;15447:18;:43;;;;15364:134:::0;:::o;12608:27::-;;;;:::o;8187:151::-;8276:7;8303:11;:18;8315:5;8303:18;;;;;;;;;;;;;;;:27;8322:7;8303:27;;;;;;;;;;;;;;;;8296:34;;8187:151;;;;:::o;12282:33::-;;;;:::o;17936:114::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18029:13:::1;18013;:29;;;;17936:114:::0;:::o;6589:201::-;6401:12;:10;:12::i;:::-;6390:23;;:7;:5;:7::i;:::-;:23;;;6382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6698:1:::1;6678:22;;:8;:22;;::::0;6670:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6754:28;6773:8;6754:18;:28::i;:::-;6589:201:::0;:::o;12322:24::-;;;;:::o;5771:98::-;5824:7;5851:10;5844:17;;5771:98;:::o;11346:346::-;11465:1;11448:19;;:5;:19;;;11440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11546:1;11527:21;;:7;:21;;;11519:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11630:6;11600:11;:18;11612:5;11600:18;;;;;;;;;;;;;;;:27;11619:7;11600:27;;;;;;;;;;;;;;;:36;;;;11668:7;11652:32;;11661:5;11652:32;;;11677:6;11652:32;;;;;;:::i;:::-;;;;;;;;11346:346;;;:::o;18628:3293::-;18742:1;18726:18;;:4;:18;;;18718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18819:1;18805:16;;:2;:16;;;18797:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18888:1;18878:6;:11;18874:93;;18906:28;18922:4;18928:2;18932:1;18906:15;:28::i;:::-;18949:7;;18874:93;18983:14;;;;;;;;;;;18979:1417;;;19026:7;:5;:7::i;:::-;19018:15;;:4;:15;;;;:32;;;;;19043:7;:5;:7::i;:::-;19037:13;;:2;:13;;;;19018:32;:52;;;;;19068:1;19054:16;;:2;:16;;;;19018:52;:77;;;;;19088:6;19074:21;;:2;:21;;;;19018:77;:90;;;;;19100:8;;;;;;;;;;;19099:9;19018:90;19014:1371;;;19158:12;19147:6;;19134:10;;:19;;;;:::i;:::-;19133:37;19129:290;;19250:2;19234:13;:18;;;;19290:2;19275:12;:17;;;;19129:290;;;19357:2;19341:13;:18;;;;19397:2;19382:12;:17;;;;19129:290;19444:13;;;;;;;;;;;19439:150;;19490:19;:25;19510:4;19490:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19519:19;:23;19539:2;19519:23;;;;;;;;;;;;;;;;;;;;;;;;;19490:52;19482:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19439:150;19641:25;:31;19667:4;19641:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19677:31;:35;19709:2;19677:35;;;;;;;;;;;;;;;;;;;;;;;;;19676:36;19641:71;19637:733;;;19755:20;;19745:6;:30;;19737:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19890:9;;19873:13;19883:2;19873:9;:13::i;:::-;19864:6;:22;;;;:::i;:::-;:35;;19856:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19637:733;;;19999:25;:29;20025:2;19999:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20033:31;:37;20065:4;20033:37;;;;;;;;;;;;;;;;;;;;;;;;;20032:38;19999:71;19995:375;;;20113:20;;20103:6;:30;;20095:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19995:375;;;20223:31;:35;20255:2;20223:35;;;;;;;;;;;;;;;;;;;;;;;;;20218:152;;20317:9;;20300:13;20310:2;20300:9;:13::i;:::-;20291:6;:22;;;;:::i;:::-;:35;;20283:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20218:152;19995:375;19637:733;19014:1371;18979:1417;20408:28;20439:24;20457:4;20439:9;:24::i;:::-;20408:55;;20476:12;20515:18;;20491:20;:42;;20476:57;;20564:7;:22;;;;;20575:11;;;;;;;;;;;20564:22;:35;;;;;20591:8;;;;;;;;;;;20590:9;20564:35;:71;;;;;20604:25;:31;20630:4;20604:31;;;;;;;;;;;;;;;;;;;;;;;;;20603:32;20564:71;:101;;;;;20640:19;:25;20660:4;20640:25;;;;;;;;;;;;;;;;;;;;;;;;;20639:26;20564:101;:146;;;;;20687:19;:23;20707:2;20687:23;;;;;;;;;;;;;;;;;;;;;;;;;20686:24;20564:146;20546:468;;;20806:1;20779:10;:24;20790:12;20779:24;;;;;;;;;;;;:28;20775:228;;;20839:4;20828:8;;:15;;;;;;;;;;;;;;;;;;20864:10;:8;:10::i;:::-;20906:5;20895:8;;:16;;;;;;;;;;;;;;;;;;20986:1;20959:10;:24;20970:12;20959:24;;;;;;;;;;;;:28;;;;:::i;:::-;20932:10;:24;20943:12;20932:24;;;;;;;;;;;:55;;;;20775:228;20546:468;21026:12;21042:8;;;;;;;;;;;21041:9;21026:24;;21152:19;:25;21172:4;21152:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21181:19;:23;21201:2;21181:23;;;;;;;;;;;;;;;;;;;;;;;;;21152:52;21148:100;;;21231:5;21221:15;;21148:100;21260:12;21365:7;21361:507;;;21417:25;:29;21443:2;21417:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;21466:1;21450:13;;:17;21417:50;21413:306;;;21495:34;21525:3;21495:25;21506:13;;21495:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21488:41;;21413:306;;;21591:25;:31;21617:4;21591:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21641:1;21626:12;;:16;21591:51;21587:132;;;21670:33;21699:3;21670:24;21681:12;;21670:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21663:40;;21587:132;21413:306;21746:1;21739:4;:8;21735:91;;;21768:42;21784:4;21798;21805;21768:15;:42::i;:::-;21735:91;21852:4;21842:14;;;;;:::i;:::-;;;21361:507;21880:33;21896:4;21902:2;21906:6;21880:15;:33::i;:::-;18707:3214;;;;18628:3293;;;;:::o;6798:191::-;6872:16;6891:6;;;;;;;;;;;6872:25;;6917:8;6908:6;;:17;;;;;;;;;;;;;;;;;;6972:8;6941:40;;6962:8;6941:40;;;;;;;;;;;;6861:128;6798:191;:::o;21929:589::-;22055:21;22093:1;22079:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22055:40;;22124:4;22106;22111:1;22106:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22150:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22140:4;22145:1;22140:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22185:62;22202:4;22217:15;22235:11;22185:8;:62::i;:::-;22286:15;:66;;;22367:11;22393:1;22437:4;22464;22484:15;22286:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21984:534;21929:589;:::o;17490:188::-;17607:5;17573:25;:31;17599:4;17573:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17664:5;17630:40;;17658:4;17630:40;;;;;;;;;;;;17490:188;;:::o;9633:699::-;9757:1;9739:20;;:6;:20;;;9731:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9841:1;9820:23;;:9;:23;;;9812:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9896:47;9917:6;9925:9;9936:6;9896:20;:47::i;:::-;9956:21;9980:9;:17;9990:6;9980:17;;;;;;;;;;;;;;;;9956:41;;10033:6;10016:13;:23;;10008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10154:6;10138:13;:22;10118:9;:17;10128:6;10118:17;;;;;;;;;;;;;;;:42;;;;10206:6;10182:9;:20;10192:9;10182:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10247:9;10230:35;;10239:6;10230:35;;;10258:6;10230:35;;;;;;:::i;:::-;;;;;;;;10278:46;10298:6;10306:9;10317:6;10278:19;:46::i;:::-;9720:612;9633:699;;;:::o;22526:584::-;22565:23;22591:24;22609:4;22591:9;:24::i;:::-;22565:50;;22626:12;22674:1;22655:15;:20;22651:59;;22692:7;;;;22651:59;22744:13;;22726:15;:31;22722:95;;;22792:13;;22774:31;;22722:95;22880:26;22909:15;22880:44;;22937:36;22954:18;22937:16;:36::i;:::-;22986:16;23005:21;22986:40;;23060:15;;;;;;;;;;;23052:29;;23089:8;23052:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23039:63;;;;;22554:556;;;;22526:584;:::o;3779:98::-;3837:7;3868:1;3864;:5;;;;:::i;:::-;3857:12;;3779:98;;;;:::o;3885:::-;3943:7;3974:1;3970;:5;;;;:::i;:::-;3963:12;;3885:98;;;;:::o;11700:91::-;;;;:::o;11799:90::-;;;;:::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;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:::-;3840:6;3889:2;3877:9;3868:7;3864:23;3860:32;3857:119;;;3895:79;;:::i;:::-;3857:119;4015:1;4040:53;4085:7;4076:6;4065:9;4061:22;4040:53;:::i;:::-;4030:63;;3986:117;3781:329;;;;:::o;4116:60::-;4144:3;4165:5;4158:12;;4116:60;;;:::o;4182:142::-;4232:9;4265:53;4283:34;4292:24;4310:5;4292:24;:::i;:::-;4283:34;:::i;:::-;4265:53;:::i;:::-;4252:66;;4182:142;;;:::o;4330:126::-;4380:9;4413:37;4444:5;4413:37;:::i;:::-;4400:50;;4330:126;;;:::o;4462:152::-;4538:9;4571:37;4602:5;4571:37;:::i;:::-;4558:50;;4462:152;;;:::o;4620:183::-;4733:63;4790:5;4733:63;:::i;:::-;4728:3;4721:76;4620:183;;:::o;4809:274::-;4928:4;4966:2;4955:9;4951:18;4943:26;;4979:97;5073:1;5062:9;5058:17;5049:6;4979:97;:::i;:::-;4809:274;;;;:::o;5089:118::-;5176:24;5194:5;5176:24;:::i;:::-;5171:3;5164:37;5089:118;;:::o;5213:222::-;5306:4;5344:2;5333:9;5329:18;5321:26;;5357:71;5425:1;5414:9;5410:17;5401:6;5357:71;:::i;:::-;5213:222;;;;:::o;5441:619::-;5518:6;5526;5534;5583:2;5571:9;5562:7;5558:23;5554:32;5551:119;;;5589:79;;:::i;:::-;5551:119;5709:1;5734:53;5779:7;5770:6;5759:9;5755:22;5734:53;:::i;:::-;5724:63;;5680:117;5836:2;5862:53;5907:7;5898:6;5887:9;5883:22;5862:53;:::i;:::-;5852:63;;5807:118;5964:2;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5935:118;5441:619;;;;;:::o;6066:118::-;6153:24;6171:5;6153:24;:::i;:::-;6148:3;6141:37;6066:118;;:::o;6190:222::-;6283:4;6321:2;6310:9;6306:18;6298:26;;6334:71;6402:1;6391:9;6387:17;6378:6;6334:71;:::i;:::-;6190:222;;;;:::o;6418:86::-;6453:7;6493:4;6486:5;6482:16;6471:27;;6418:86;;;:::o;6510:112::-;6593:22;6609:5;6593:22;:::i;:::-;6588:3;6581:35;6510:112;;:::o;6628:214::-;6717:4;6755:2;6744:9;6740:18;6732:26;;6768:67;6832:1;6821:9;6817:17;6808:6;6768:67;:::i;:::-;6628:214;;;;:::o;6848:117::-;6957:1;6954;6947:12;6971:117;7080:1;7077;7070:12;7094:117;7203:1;7200;7193:12;7234:568;7307:8;7317:6;7367:3;7360:4;7352:6;7348:17;7344:27;7334:122;;7375:79;;:::i;:::-;7334:122;7488:6;7475:20;7465:30;;7518:18;7510:6;7507:30;7504:117;;;7540:79;;:::i;:::-;7504:117;7654:4;7646:6;7642:17;7630:29;;7708:3;7700:4;7692:6;7688:17;7678:8;7674:32;7671:41;7668:128;;;7715:79;;:::i;:::-;7668:128;7234:568;;;;;:::o;7825:::-;7898:8;7908:6;7958:3;7951:4;7943:6;7939:17;7935:27;7925:122;;7966:79;;:::i;:::-;7925:122;8079:6;8066:20;8056:30;;8109:18;8101:6;8098:30;8095:117;;;8131:79;;:::i;:::-;8095:117;8245:4;8237:6;8233:17;8221:29;;8299:3;8291:4;8283:6;8279:17;8269:8;8265:32;8262:41;8259:128;;;8306:79;;:::i;:::-;8259:128;7825:568;;;;;:::o;8399:934::-;8521:6;8529;8537;8545;8594:2;8582:9;8573:7;8569:23;8565:32;8562:119;;;8600:79;;:::i;:::-;8562:119;8748:1;8737:9;8733:17;8720:31;8778:18;8770:6;8767:30;8764:117;;;8800:79;;:::i;:::-;8764:117;8913:80;8985:7;8976:6;8965:9;8961:22;8913:80;:::i;:::-;8895:98;;;;8691:312;9070:2;9059:9;9055:18;9042:32;9101:18;9093:6;9090:30;9087:117;;;9123:79;;:::i;:::-;9087:117;9236:80;9308:7;9299:6;9288:9;9284:22;9236:80;:::i;:::-;9218:98;;;;9013:313;8399:934;;;;;;;:::o;9339:116::-;9409:21;9424:5;9409:21;:::i;:::-;9402:5;9399:32;9389:60;;9445:1;9442;9435:12;9389:60;9339:116;:::o;9461:133::-;9504:5;9542:6;9529:20;9520:29;;9558:30;9582:5;9558:30;:::i;:::-;9461:133;;;;:::o;9600:468::-;9665:6;9673;9722:2;9710:9;9701:7;9697:23;9693:32;9690:119;;;9728:79;;:::i;:::-;9690:119;9848:1;9873:53;9918:7;9909:6;9898:9;9894:22;9873:53;:::i;:::-;9863:63;;9819:117;9975:2;10001:50;10043:7;10034:6;10023:9;10019:22;10001:50;:::i;:::-;9991:60;;9946:115;9600:468;;;;;:::o;10074:323::-;10130:6;10179:2;10167:9;10158:7;10154:23;10150:32;10147:119;;;10185:79;;:::i;:::-;10147:119;10305:1;10330:50;10372:7;10363:6;10352:9;10348:22;10330:50;:::i;:::-;10320:60;;10276:114;10074:323;;;;:::o;10403:474::-;10471:6;10479;10528:2;10516:9;10507:7;10503:23;10499:32;10496:119;;;10534:79;;:::i;:::-;10496:119;10654:1;10679:53;10724:7;10715:6;10704:9;10700:22;10679:53;:::i;:::-;10669:63;;10625:117;10781:2;10807:53;10852:7;10843:6;10832:9;10828:22;10807:53;:::i;:::-;10797:63;;10752:118;10403:474;;;;;:::o;10883:180::-;10931:77;10928:1;10921:88;11028:4;11025:1;11018:15;11052:4;11049:1;11042:15;11069:320;11113:6;11150:1;11144:4;11140:12;11130:22;;11197:1;11191:4;11187:12;11218:18;11208:81;;11274:4;11266:6;11262:17;11252:27;;11208:81;11336:2;11328:6;11325:14;11305:18;11302:38;11299:84;;11355:18;;:::i;:::-;11299:84;11120:269;11069:320;;;:::o;11395:182::-;11535:34;11531:1;11523:6;11519:14;11512:58;11395:182;:::o;11583:366::-;11725:3;11746:67;11810:2;11805:3;11746:67;:::i;:::-;11739:74;;11822:93;11911:3;11822:93;:::i;:::-;11940:2;11935:3;11931:12;11924:19;;11583:366;;;:::o;11955:419::-;12121:4;12159:2;12148:9;12144:18;12136:26;;12208:9;12202:4;12198:20;12194:1;12183:9;12179:17;12172:47;12236:131;12362:4;12236:131;:::i;:::-;12228:139;;11955:419;;;:::o;12380:180::-;12428:77;12425:1;12418:88;12525:4;12522:1;12515:15;12549:4;12546:1;12539:15;12566:410;12606:7;12629:20;12647:1;12629:20;:::i;:::-;12624:25;;12663:20;12681:1;12663:20;:::i;:::-;12658:25;;12718:1;12715;12711:9;12740:30;12758:11;12740:30;:::i;:::-;12729:41;;12919:1;12910:7;12906:15;12903:1;12900:22;12880:1;12873:9;12853:83;12830:139;;12949:18;;:::i;:::-;12830:139;12614:362;12566:410;;;;:::o;12982:180::-;13030:77;13027:1;13020:88;13127:4;13124:1;13117:15;13151:4;13148:1;13141:15;13168:185;13208:1;13225:20;13243:1;13225:20;:::i;:::-;13220:25;;13259:20;13277:1;13259:20;:::i;:::-;13254:25;;13298:1;13288:35;;13303:18;;:::i;:::-;13288:35;13345:1;13342;13338:9;13333:14;;13168:185;;;;:::o;13359:234::-;13499:34;13495:1;13487:6;13483:14;13476:58;13568:17;13563:2;13555:6;13551:15;13544:42;13359:234;:::o;13599:366::-;13741:3;13762:67;13826:2;13821:3;13762:67;:::i;:::-;13755:74;;13838:93;13927:3;13838:93;:::i;:::-;13956:2;13951:3;13947:12;13940:19;;13599:366;;;:::o;13971:419::-;14137:4;14175:2;14164:9;14160:18;14152:26;;14224:9;14218:4;14214:20;14210:1;14199:9;14195:17;14188:47;14252:131;14378:4;14252:131;:::i;:::-;14244:139;;13971:419;;;:::o;14396:227::-;14536:34;14532:1;14524:6;14520:14;14513:58;14605:10;14600:2;14592:6;14588:15;14581:35;14396:227;:::o;14629:366::-;14771:3;14792:67;14856:2;14851:3;14792:67;:::i;:::-;14785:74;;14868:93;14957:3;14868:93;:::i;:::-;14986:2;14981:3;14977:12;14970:19;;14629:366;;;:::o;15001:419::-;15167:4;15205:2;15194:9;15190:18;15182:26;;15254:9;15248:4;15244:20;15240:1;15229:9;15225:17;15218:47;15282:131;15408:4;15282:131;:::i;:::-;15274:139;;15001:419;;;:::o;15426:191::-;15466:3;15485:20;15503:1;15485:20;:::i;:::-;15480:25;;15519:20;15537:1;15519:20;:::i;:::-;15514:25;;15562:1;15559;15555:9;15548:16;;15583:3;15580:1;15577:10;15574:36;;;15590:18;;:::i;:::-;15574:36;15426:191;;;;:::o;15623:180::-;15671:77;15668:1;15661:88;15768:4;15765:1;15758:15;15792:4;15789:1;15782:15;15809:233;15848:3;15871:24;15889:5;15871:24;:::i;:::-;15862:33;;15917:66;15910:5;15907:77;15904:103;;15987:18;;:::i;:::-;15904:103;16034:1;16027:5;16023:13;16016:20;;15809:233;;;:::o;16048:147::-;16149:11;16186:3;16171:18;;16048:147;;;;:::o;16201:114::-;;:::o;16321:398::-;16480:3;16501:83;16582:1;16577:3;16501:83;:::i;:::-;16494:90;;16593:93;16682:3;16593:93;:::i;:::-;16711:1;16706:3;16702:11;16695:18;;16321:398;;;:::o;16725:379::-;16909:3;16931:147;17074:3;16931:147;:::i;:::-;16924:154;;17095:3;17088:10;;16725:379;;;:::o;17110:162::-;17250:14;17246:1;17238:6;17234:14;17227:38;17110:162;:::o;17278:366::-;17420:3;17441:67;17505:2;17500:3;17441:67;:::i;:::-;17434:74;;17517:93;17606:3;17517:93;:::i;:::-;17635:2;17630:3;17626:12;17619:19;;17278:366;;;:::o;17650:419::-;17816:4;17854:2;17843:9;17839:18;17831:26;;17903:9;17897:4;17893:20;17889:1;17878:9;17874:17;17867:47;17931:131;18057:4;17931:131;:::i;:::-;17923:139;;17650:419;;;:::o;18075:244::-;18215:34;18211:1;18203:6;18199:14;18192:58;18284:27;18279:2;18271:6;18267:15;18260:52;18075:244;:::o;18325:366::-;18467:3;18488:67;18552:2;18547:3;18488:67;:::i;:::-;18481:74;;18564:93;18653:3;18564:93;:::i;:::-;18682:2;18677:3;18673:12;18666:19;;18325:366;;;:::o;18697:419::-;18863:4;18901:2;18890:9;18886:18;18878:26;;18950:9;18944:4;18940:20;18936:1;18925:9;18921:17;18914:47;18978:131;19104:4;18978:131;:::i;:::-;18970:139;;18697:419;;;:::o;19122:224::-;19262:34;19258:1;19250:6;19246:14;19239:58;19331:7;19326:2;19318:6;19314:15;19307:32;19122:224;:::o;19352:366::-;19494:3;19515:67;19579:2;19574:3;19515:67;:::i;:::-;19508:74;;19591:93;19680:3;19591:93;:::i;:::-;19709:2;19704:3;19700:12;19693:19;;19352:366;;;:::o;19724:419::-;19890:4;19928:2;19917:9;19913:18;19905:26;;19977:9;19971:4;19967:20;19963:1;19952:9;19948:17;19941:47;20005:131;20131:4;20005:131;:::i;:::-;19997:139;;19724:419;;;:::o;20149:223::-;20289:34;20285:1;20277:6;20273:14;20266:58;20358:6;20353:2;20345:6;20341:15;20334:31;20149:223;:::o;20378:366::-;20520:3;20541:67;20605:2;20600:3;20541:67;:::i;:::-;20534:74;;20617:93;20706:3;20617:93;:::i;:::-;20735:2;20730:3;20726:12;20719:19;;20378:366;;;:::o;20750:419::-;20916:4;20954:2;20943:9;20939:18;20931:26;;21003:9;20997:4;20993:20;20989:1;20978:9;20974:17;20967:47;21031:131;21157:4;21031:131;:::i;:::-;21023:139;;20750:419;;;:::o;21175:85::-;21220:7;21249:5;21238:16;;21175:85;;;:::o;21266:158::-;21324:9;21357:61;21375:42;21384:32;21410:5;21384:32;:::i;:::-;21375:42;:::i;:::-;21357:61;:::i;:::-;21344:74;;21266:158;;;:::o;21430:147::-;21525:45;21564:5;21525:45;:::i;:::-;21520:3;21513:58;21430:147;;:::o;21583:807::-;21832:4;21870:3;21859:9;21855:19;21847:27;;21884:71;21952:1;21941:9;21937:17;21928:6;21884:71;:::i;:::-;21965:72;22033:2;22022:9;22018:18;22009:6;21965:72;:::i;:::-;22047:80;22123:2;22112:9;22108:18;22099:6;22047:80;:::i;:::-;22137;22213:2;22202:9;22198:18;22189:6;22137:80;:::i;:::-;22227:73;22295:3;22284:9;22280:19;22271:6;22227:73;:::i;:::-;22310;22378:3;22367:9;22363:19;22354:6;22310:73;:::i;:::-;21583:807;;;;;;;;;:::o;22396:143::-;22453:5;22484:6;22478:13;22469:22;;22500:33;22527:5;22500:33;:::i;:::-;22396:143;;;;:::o;22545:663::-;22633:6;22641;22649;22698:2;22686:9;22677:7;22673:23;22669:32;22666:119;;;22704:79;;:::i;:::-;22666:119;22824:1;22849:64;22905:7;22896:6;22885:9;22881:22;22849:64;:::i;:::-;22839:74;;22795:128;22962:2;22988:64;23044:7;23035:6;23024:9;23020:22;22988:64;:::i;:::-;22978:74;;22933:129;23101:2;23127:64;23183:7;23174:6;23163:9;23159:22;23127:64;:::i;:::-;23117:74;;23072:129;22545:663;;;;;:::o;23214:332::-;23335:4;23373:2;23362:9;23358:18;23350:26;;23386:71;23454:1;23443:9;23439:17;23430:6;23386:71;:::i;:::-;23467:72;23535:2;23524:9;23520:18;23511:6;23467:72;:::i;:::-;23214:332;;;;;:::o;23552:137::-;23606:5;23637:6;23631:13;23622:22;;23653:30;23677:5;23653:30;:::i;:::-;23552:137;;;;:::o;23695:345::-;23762:6;23811:2;23799:9;23790:7;23786:23;23782:32;23779:119;;;23817:79;;:::i;:::-;23779:119;23937:1;23962:61;24015:7;24006:6;23995:9;23991:22;23962:61;:::i;:::-;23952:71;;23908:125;23695:345;;;;:::o;24046:225::-;24186:34;24182:1;24174:6;24170:14;24163:58;24255:8;24250:2;24242:6;24238:15;24231:33;24046:225;:::o;24277:366::-;24419:3;24440:67;24504:2;24499:3;24440:67;:::i;:::-;24433:74;;24516:93;24605:3;24516:93;:::i;:::-;24634:2;24629:3;24625:12;24618:19;;24277:366;;;:::o;24649:419::-;24815:4;24853:2;24842:9;24838:18;24830:26;;24902:9;24896:4;24892:20;24888:1;24877:9;24873:17;24866:47;24930:131;25056:4;24930:131;:::i;:::-;24922:139;;24649:419;;;:::o;25074:223::-;25214:34;25210:1;25202:6;25198:14;25191:58;25283:6;25278:2;25270:6;25266:15;25259:31;25074:223;:::o;25303:366::-;25445:3;25466:67;25530:2;25525:3;25466:67;:::i;:::-;25459:74;;25542:93;25631:3;25542:93;:::i;:::-;25660:2;25655:3;25651:12;25644:19;;25303:366;;;:::o;25675:419::-;25841:4;25879:2;25868:9;25864:18;25856:26;;25928:9;25922:4;25918:20;25914:1;25903:9;25899:17;25892:47;25956:131;26082:4;25956:131;:::i;:::-;25948:139;;25675:419;;;:::o;26100:221::-;26240:34;26236:1;26228:6;26224:14;26217:58;26309:4;26304:2;26296:6;26292:15;26285:29;26100:221;:::o;26327:366::-;26469:3;26490:67;26554:2;26549:3;26490:67;:::i;:::-;26483:74;;26566:93;26655:3;26566:93;:::i;:::-;26684:2;26679:3;26675:12;26668:19;;26327:366;;;:::o;26699:419::-;26865:4;26903:2;26892:9;26888:18;26880:26;;26952:9;26946:4;26942:20;26938:1;26927:9;26923:17;26916:47;26980:131;27106:4;26980:131;:::i;:::-;26972:139;;26699:419;;;:::o;27124:224::-;27264:34;27260:1;27252:6;27248:14;27241:58;27333:7;27328:2;27320:6;27316:15;27309:32;27124:224;:::o;27354:366::-;27496:3;27517:67;27581:2;27576:3;27517:67;:::i;:::-;27510:74;;27593:93;27682:3;27593:93;:::i;:::-;27711:2;27706:3;27702:12;27695:19;;27354:366;;;:::o;27726:419::-;27892:4;27930:2;27919:9;27915:18;27907:26;;27979:9;27973:4;27969:20;27965:1;27954:9;27950:17;27943:47;28007:131;28133:4;28007:131;:::i;:::-;27999:139;;27726:419;;;:::o;28151:222::-;28291:34;28287:1;28279:6;28275:14;28268:58;28360:5;28355:2;28347:6;28343:15;28336:30;28151:222;:::o;28379:366::-;28521:3;28542:67;28606:2;28601:3;28542:67;:::i;:::-;28535:74;;28618:93;28707:3;28618:93;:::i;:::-;28736:2;28731:3;28727:12;28720:19;;28379:366;;;:::o;28751:419::-;28917:4;28955:2;28944:9;28940:18;28932:26;;29004:9;28998:4;28994:20;28990:1;28979:9;28975:17;28968:47;29032:131;29158:4;29032:131;:::i;:::-;29024:139;;28751:419;;;:::o;29176:172::-;29316:24;29312:1;29304:6;29300:14;29293:48;29176:172;:::o;29354:366::-;29496:3;29517:67;29581:2;29576:3;29517:67;:::i;:::-;29510:74;;29593:93;29682:3;29593:93;:::i;:::-;29711:2;29706:3;29702:12;29695:19;;29354:366;;;:::o;29726:419::-;29892:4;29930:2;29919:9;29915:18;29907:26;;29979:9;29973:4;29969:20;29965:1;29954:9;29950:17;29943:47;30007:131;30133:4;30007:131;:::i;:::-;29999:139;;29726:419;;;:::o;30151:240::-;30291:34;30287:1;30279:6;30275:14;30268:58;30360:23;30355:2;30347:6;30343:15;30336:48;30151:240;:::o;30397:366::-;30539:3;30560:67;30624:2;30619:3;30560:67;:::i;:::-;30553:74;;30636:93;30725:3;30636:93;:::i;:::-;30754:2;30749:3;30745:12;30738:19;;30397:366;;;:::o;30769:419::-;30935:4;30973:2;30962:9;30958:18;30950:26;;31022:9;31016:4;31012:20;31008:1;30997:9;30993:17;30986:47;31050:131;31176:4;31050:131;:::i;:::-;31042:139;;30769:419;;;:::o;31194:169::-;31334:21;31330:1;31322:6;31318:14;31311:45;31194:169;:::o;31369:366::-;31511:3;31532:67;31596:2;31591:3;31532:67;:::i;:::-;31525:74;;31608:93;31697:3;31608:93;:::i;:::-;31726:2;31721:3;31717:12;31710:19;;31369:366;;;:::o;31741:419::-;31907:4;31945:2;31934:9;31930:18;31922:26;;31994:9;31988:4;31984:20;31980:1;31969:9;31965:17;31958:47;32022:131;32148:4;32022:131;:::i;:::-;32014:139;;31741:419;;;:::o;32166:241::-;32306:34;32302:1;32294:6;32290:14;32283:58;32375:24;32370:2;32362:6;32358:15;32351:49;32166:241;:::o;32413:366::-;32555:3;32576:67;32640:2;32635:3;32576:67;:::i;:::-;32569:74;;32652:93;32741:3;32652:93;:::i;:::-;32770:2;32765:3;32761:12;32754:19;;32413:366;;;:::o;32785:419::-;32951:4;32989:2;32978:9;32974:18;32966:26;;33038:9;33032:4;33028:20;33024:1;33013:9;33009:17;33002:47;33066:131;33192:4;33066:131;:::i;:::-;33058:139;;32785:419;;;:::o;33210:194::-;33250:4;33270:20;33288:1;33270:20;:::i;:::-;33265:25;;33304:20;33322:1;33304:20;:::i;:::-;33299:25;;33348:1;33345;33341:9;33333:17;;33372:1;33366:4;33363:11;33360:37;;;33377:18;;:::i;:::-;33360:37;33210:194;;;;:::o;33410:180::-;33458:77;33455:1;33448:88;33555:4;33552:1;33545:15;33579:4;33576:1;33569:15;33596:143;33653:5;33684:6;33678:13;33669:22;;33700:33;33727:5;33700:33;:::i;:::-;33596:143;;;;:::o;33745:351::-;33815:6;33864:2;33852:9;33843:7;33839:23;33835:32;33832:119;;;33870:79;;:::i;:::-;33832:119;33990:1;34015:64;34071:7;34062:6;34051:9;34047:22;34015:64;:::i;:::-;34005:74;;33961:128;33745:351;;;;:::o;34102:114::-;34169:6;34203:5;34197:12;34187:22;;34102:114;;;:::o;34222:184::-;34321:11;34355:6;34350:3;34343:19;34395:4;34390:3;34386:14;34371:29;;34222:184;;;;:::o;34412:132::-;34479:4;34502:3;34494:11;;34532:4;34527:3;34523:14;34515:22;;34412:132;;;:::o;34550:108::-;34627:24;34645:5;34627:24;:::i;:::-;34622:3;34615:37;34550:108;;:::o;34664:179::-;34733:10;34754:46;34796:3;34788:6;34754:46;:::i;:::-;34832:4;34827:3;34823:14;34809:28;;34664:179;;;;:::o;34849:113::-;34919:4;34951;34946:3;34942:14;34934:22;;34849:113;;;:::o;34998:732::-;35117:3;35146:54;35194:5;35146:54;:::i;:::-;35216:86;35295:6;35290:3;35216:86;:::i;:::-;35209:93;;35326:56;35376:5;35326:56;:::i;:::-;35405:7;35436:1;35421:284;35446:6;35443:1;35440:13;35421:284;;;35522:6;35516:13;35549:63;35608:3;35593:13;35549:63;:::i;:::-;35542:70;;35635:60;35688:6;35635:60;:::i;:::-;35625:70;;35481:224;35468:1;35465;35461:9;35456:14;;35421:284;;;35425:14;35721:3;35714:10;;35122:608;;;34998:732;;;;:::o;35736:831::-;35999:4;36037:3;36026:9;36022:19;36014:27;;36051:71;36119:1;36108:9;36104:17;36095:6;36051:71;:::i;:::-;36132:80;36208:2;36197:9;36193:18;36184:6;36132:80;:::i;:::-;36259:9;36253:4;36249:20;36244:2;36233:9;36229:18;36222:48;36287:108;36390:4;36381:6;36287:108;:::i;:::-;36279:116;;36405:72;36473:2;36462:9;36458:18;36449:6;36405:72;:::i;:::-;36487:73;36555:3;36544:9;36540:19;36531:6;36487:73;:::i;:::-;35736:831;;;;;;;;:::o;36573:225::-;36713:34;36709:1;36701:6;36697:14;36690:58;36782:8;36777:2;36769:6;36765:15;36758:33;36573:225;:::o;36804:366::-;36946:3;36967:67;37031:2;37026:3;36967:67;:::i;:::-;36960:74;;37043:93;37132:3;37043:93;:::i;:::-;37161:2;37156:3;37152:12;37145:19;;36804:366;;;:::o;37176:419::-;37342:4;37380:2;37369:9;37365:18;37357:26;;37429:9;37423:4;37419:20;37415:1;37404:9;37400:17;37393:47;37457:131;37583:4;37457:131;:::i;:::-;37449:139;;37176:419;;;:::o

Swarm Source

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