ETH Price: $3,315.14 (+2.00%)

Contract

0xb6720935677D17029383f18d325c696782b97FB9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer213916122024-12-13 5:50:3528 days ago1734069035IN
0xb6720935...782b97FB9
0 ETH0.0007591512.36994154
Approve200936662024-06-15 0:35:35209 days ago1718411735IN
0xb6720935...782b97FB9
0 ETH0.000224494.75516661
Approve200936652024-06-15 0:35:23209 days ago1718411723IN
0xb6720935...782b97FB9
0 ETH0.000306236.48658902
Approve200936652024-06-15 0:35:23209 days ago1718411723IN
0xb6720935...782b97FB9
0 ETH0.0011088223.48658902
Approve200936622024-06-15 0:34:47209 days ago1718411687IN
0xb6720935...782b97FB9
0 ETH0.000286916.07727283
Approve200936592024-06-15 0:33:59209 days ago1718411639IN
0xb6720935...782b97FB9
0 ETH0.000402938.53478473
Approve200936592024-06-15 0:33:59209 days ago1718411639IN
0xb6720935...782b97FB9
0 ETH0.000402938.53478473
Approve200936592024-06-15 0:33:59209 days ago1718411639IN
0xb6720935...782b97FB9
0 ETH0.000402938.53478473
Approve200936572024-06-15 0:33:35209 days ago1718411615IN
0xb6720935...782b97FB9
0 ETH0.000396538.39926429
Approve200936552024-06-15 0:33:11209 days ago1718411591IN
0xb6720935...782b97FB9
0 ETH0.000402078.5165621
Approve200936552024-06-15 0:33:11209 days ago1718411591IN
0xb6720935...782b97FB9
0 ETH0.000402078.5165621
Approve200936552024-06-15 0:33:11209 days ago1718411591IN
0xb6720935...782b97FB9
0 ETH0.000402078.5165621
Approve200936552024-06-15 0:33:11209 days ago1718411591IN
0xb6720935...782b97FB9
0 ETH0.000402078.5165621
Approve200936532024-06-15 0:32:47209 days ago1718411567IN
0xb6720935...782b97FB9
0 ETH0.000403618.54912378
Approve200936532024-06-15 0:32:47209 days ago1718411567IN
0xb6720935...782b97FB9
0 ETH0.000403618.54912378
Approve200936532024-06-15 0:32:47209 days ago1718411567IN
0xb6720935...782b97FB9
0 ETH0.000403618.54912378
Approve200936532024-06-15 0:32:47209 days ago1718411567IN
0xb6720935...782b97FB9
0 ETH0.000403618.54912378
Approve200936532024-06-15 0:32:47209 days ago1718411567IN
0xb6720935...782b97FB9
0 ETH0.000403618.54912378
Approve200936532024-06-15 0:32:47209 days ago1718411567IN
0xb6720935...782b97FB9
0 ETH0.000403618.54912378
Approve200936512024-06-15 0:32:23209 days ago1718411543IN
0xb6720935...782b97FB9
0 ETH0.000407338.62801854
Approve200936512024-06-15 0:32:23209 days ago1718411543IN
0xb6720935...782b97FB9
0 ETH0.000407338.62801854
Approve200936512024-06-15 0:32:23209 days ago1718411543IN
0xb6720935...782b97FB9
0 ETH0.000407338.62801854
Approve200936492024-06-15 0:31:59209 days ago1718411519IN
0xb6720935...782b97FB9
0 ETH0.000406098.60171074
Approve200936492024-06-15 0:31:59209 days ago1718411519IN
0xb6720935...782b97FB9
0 ETH0.000406098.60171074
Approve200936492024-06-15 0:31:59209 days ago1718411519IN
0xb6720935...782b97FB9
0 ETH0.000406098.60171074
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
200936362024-06-15 0:29:23209 days ago1718411363
0xb6720935...782b97FB9
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
kenwifbag

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-15
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

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.22;

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 kenwifbag 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("kenwifbag", "KEN") {
        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 = 100_000 * 1e18;
        maxSwapAmount = 5_000_000 * 1e18;

        marketingWallet = msg.sender;

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function kenstartlaunch(uint256 _blocks) 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 = _blocks;
        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 updateBuyFees(uint256 _marketingFee) external onlyOwner {
        buyTotalFees = _marketingFee;
    }

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

    function updateFees(uint256 _buy, uint256 _sell) external onlyOwner {
        buyTotalFees = _buy;
        sellTotalFees = _sell;
    }

    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) {
            
                    sellTotalFees = 0;
                    buyTotalFees = 0;
                }

                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":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"name":"kenstartlaunch","outputs":[],"stateMutability":"payable","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":"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":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","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"}]

60c06040526001600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff0219169083151502179055505f600b60026101000a81548160ff0219169083151502179055503480156200005e575f80fd5b506040518060400160405280600981526020017f6b656e77696662616700000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4b454e00000000000000000000000000000000000000000000000000000000008152508160039081620000dc919062000bfc565b508060049081620000ee919062000bfc565b50505062000111620001056200047060201b60201c565b6200047760201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013c8160016200053a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000d45565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000d45565b6040518363ffffffff1660e01b81526004016200028b92919062000d86565b6020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000d45565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031660a05160016200053a60201b60201c565b6200032b60a05160016200062160201b60201c565b5f6b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006007819055506a108b2a2c2802909400000060098190555069152d02c7e14af68000006008819055506a0422ca8b0a00a425000000600a819055503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e4620003d6620006bf60201b60201c565b6001620006e760201b60201c565b620003f7306001620006e760201b60201c565b6200040c61dead6001620006e760201b60201c565b6200042e62000420620006bf60201b60201c565b60016200053a60201b60201c565b620004413060016200053a60201b60201c565b6200045661dead60016200053a60201b60201c565b6200046833826200081e60201b60201c565b505062000f67565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200054a6200047060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000570620006bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c09062000e0f565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006f76200047060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200071d620006bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000776576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076d9062000e0f565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000812919062000e4b565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200088f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008869062000eb4565b60405180910390fd5b620008a25f83836200098e60201b60201c565b8060025f828254620008b5919062000f01565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000909919062000f01565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200096f919062000f4c565b60405180910390a36200098a5f83836200099360201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a1457607f821691505b60208210810362000a2a5762000a29620009cf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a8e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a51565b62000a9a868362000a51565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ae462000ade62000ad88462000ab2565b62000abb565b62000ab2565b9050919050565b5f819050919050565b62000aff8362000ac4565b62000b1762000b0e8262000aeb565b84845462000a5d565b825550505050565b5f90565b62000b2d62000b1f565b62000b3a81848462000af4565b505050565b5b8181101562000b615762000b555f8262000b23565b60018101905062000b40565b5050565b601f82111562000bb05762000b7a8162000a30565b62000b858462000a42565b8101602085101562000b95578190505b62000bad62000ba48562000a42565b83018262000b3f565b50505b505050565b5f82821c905092915050565b5f62000bd25f198460080262000bb5565b1980831691505092915050565b5f62000bec838362000bc1565b9150826002028217905092915050565b62000c078262000998565b67ffffffffffffffff81111562000c235762000c22620009a2565b5b62000c2f8254620009fc565b62000c3c82828562000b65565b5f60209050601f83116001811462000c72575f841562000c5d578287015190505b62000c69858262000bdf565b86555062000cd8565b601f19841662000c828662000a30565b5f5b8281101562000cab5784890151825560018201915060208501945060208101905062000c84565b8683101562000ccb578489015162000cc7601f89168262000bc1565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d0f8262000ce4565b9050919050565b62000d218162000d03565b811462000d2c575f80fd5b50565b5f8151905062000d3f8162000d16565b92915050565b5f6020828403121562000d5d5762000d5c62000ce0565b5b5f62000d6c8482850162000d2f565b91505092915050565b62000d808162000d03565b82525050565b5f60408201905062000d9b5f83018562000d75565b62000daa602083018462000d75565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000df760208362000db1565b915062000e048262000dc1565b602082019050919050565b5f6020820190508181035f83015262000e288162000de9565b9050919050565b5f8115159050919050565b62000e458162000e2f565b82525050565b5f60208201905062000e605f83018462000e3a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e9c601f8362000db1565b915062000ea98262000e66565b602082019050919050565b5f6020820190508181035f83015262000ecd8162000e8e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f0d8262000ab2565b915062000f1a8362000ab2565b925082820190508082111562000f355762000f3462000ed4565b5b92915050565b62000f468162000ab2565b82525050565b5f60208201905062000f615f83018462000f3b565b92915050565b60805160a0516147f062000fc15f395f8181610ecc0152818161162b0152611b9101525f8181610be901528181611aac01528181611ada01528181611bcd01528181612ed001528181612faf0152612fd601526147f05ff3fe60806040526004361061028b575f3560e01c8063881dce6011610159578063bbc0c742116100c0578063d85ba06311610079578063d85ba0631461097a578063dd62ed3e146109a4578063e2f45605146109e0578063eba4c33314610a0a578063f2fde38b14610a32578063f8b45b0514610a5a57610292565b8063bbc0c74214610884578063c0246668146108ae578063c18bc195146108d6578063c8c8ebe4146108fe578063cce987d414610928578063d257b34f1461095257610292565b8063a457c2d711610112578063a457c2d714610764578063a672990c146107a0578063a9059cbb146107c8578063aacebbe314610804578063b50aa2b91461082c578063b62496f51461084857610292565b8063881dce601461066e5780638da5cb5b14610696578063924de9b7146106c057806395d89b41146106e8578063967ff23e146107125780639a7a23d61461073c57610292565b806349bd5a5e116101fd5780636ddd1713116101b65780636ddd17131461058c5780636fc3eaec146105b657806370a08231146105cc578063715018a61461060857806371fc46881461061e5780637571336a1461064657610292565b806349bd5a5e146104a85780634a62bb65146104d25780635e4ae81b146104fc57806367243482146105125780636a486a8e1461053a5780636db794371461056457610292565b806318160ddd1161024f57806318160ddd1461038a578063203e727e146103b457806323b872dd146103dc57806327c8f83514610418578063313ce56714610442578063395093511461046c57610292565b806306fdde0314610296578063095ea7b3146102c057806310d5de53146102fc578063150074a3146103385780631694505e1461036057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610a84565b6040516102b79190613504565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e191906135b9565b610b14565b6040516102f39190613611565b60405180910390f35b348015610307575f80fd5b50610322600480360381019061031d919061362a565b610b31565b60405161032f9190613611565b60405180910390f35b348015610343575f80fd5b5061035e60048036038101906103599190613655565b610b4e565b005b34801561036b575f80fd5b50610374610be7565b60405161038191906136db565b60405180910390f35b348015610395575f80fd5b5061039e610c0b565b6040516103ab9190613703565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d59190613655565b610c14565b005b3480156103e7575f80fd5b5061040260048036038101906103fd919061371c565b610d23565b60405161040f9190613611565b60405180910390f35b348015610423575f80fd5b5061042c610e15565b604051610439919061377b565b60405180910390f35b34801561044d575f80fd5b50610456610e1b565b60405161046391906137af565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d91906135b9565b610e23565b60405161049f9190613611565b60405180910390f35b3480156104b3575f80fd5b506104bc610eca565b6040516104c9919061377b565b60405180910390f35b3480156104dd575f80fd5b506104e6610eee565b6040516104f39190613611565b60405180910390f35b348015610507575f80fd5b50610510610f00565b005b34801561051d575f80fd5b506105386004803603810190610533919061387e565b610f97565b005b348015610545575f80fd5b5061054e61103a565b60405161055b9190613703565b60405180910390f35b34801561056f575f80fd5b5061058a600480360381019061058591906138fc565b611040565b005b348015610597575f80fd5b506105a06110ce565b6040516105ad9190613611565b60405180910390f35b3480156105c1575f80fd5b506105ca6110e1565b005b3480156105d7575f80fd5b506105f260048036038101906105ed919061362a565b61116f565b6040516105ff9190613703565b60405180910390f35b348015610613575f80fd5b5061061c6111b4565b005b348015610629575f80fd5b50610644600480360381019061063f9190613655565b61123b565b005b348015610651575f80fd5b5061066c60048036038101906106679190613964565b6112c1565b005b348015610679575f80fd5b50610694600480360381019061068f9190613655565b611395565b005b3480156106a1575f80fd5b506106aa611456565b6040516106b7919061377b565b60405180910390f35b3480156106cb575f80fd5b506106e660048036038101906106e191906139a2565b61147e565b005b3480156106f3575f80fd5b506106fc611517565b6040516107099190613504565b60405180910390f35b34801561071d575f80fd5b506107266115a7565b6040516107339190613703565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613964565b6115ad565b005b34801561076f575f80fd5b5061078a600480360381019061078591906135b9565b6116c5565b6040516107979190613611565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190613964565b6117ab565b005b3480156107d3575f80fd5b506107ee60048036038101906107e991906135b9565b6118d3565b6040516107fb9190613611565b60405180910390f35b34801561080f575f80fd5b5061082a6004803603810190610825919061362a565b6118f0565b005b61084660048036038101906108419190613655565b611a2a565b005b348015610853575f80fd5b5061086e6004803603810190610869919061362a565b611cb9565b60405161087b9190613611565b60405180910390f35b34801561088f575f80fd5b50610898611cd6565b6040516108a59190613611565b60405180910390f35b3480156108b9575f80fd5b506108d460048036038101906108cf9190613964565b611ce9565b005b3480156108e1575f80fd5b506108fc60048036038101906108f79190613655565b611e0b565b005b348015610909575f80fd5b50610912611f1a565b60405161091f9190613703565b60405180910390f35b348015610933575f80fd5b5061093c611f20565b6040516109499190613703565b60405180910390f35b34801561095d575f80fd5b5061097860048036038101906109739190613655565b611f26565b005b348015610985575f80fd5b5061098e611fbf565b60405161099b9190613703565b60405180910390f35b3480156109af575f80fd5b506109ca60048036038101906109c591906139cd565b611fc5565b6040516109d79190613703565b60405180910390f35b3480156109eb575f80fd5b506109f4612047565b604051610a019190613703565b60405180910390f35b348015610a15575f80fd5b50610a306004803603810190610a2b9190613655565b61204d565b005b348015610a3d575f80fd5b50610a586004803603810190610a53919061362a565b6120d3565b005b348015610a65575f80fd5b50610a6e6121c9565b604051610a7b9190613703565b60405180910390f35b606060038054610a9390613a38565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90613a38565b8015610b0a5780601f10610ae157610100808354040283529160200191610b0a565b820191905f5260205f20905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b5f610b27610b206121cf565b84846121d6565b6001905092915050565b6012602052805f5260405f205f915054906101000a900460ff1681565b610b566121cf565b73ffffffffffffffffffffffffffffffffffffffff16610b74611456565b73ffffffffffffffffffffffffffffffffffffffff1614610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190613ab2565b60405180910390fd5b670de0b6b3a764000081610bde9190613afd565b600a8190555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610c1c6121cf565b73ffffffffffffffffffffffffffffffffffffffff16610c3a611456565b73ffffffffffffffffffffffffffffffffffffffff1614610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8790613ab2565b60405180910390fd5b670de0b6b3a76400006103e86001610ca6610c0b565b610cb09190613afd565b610cba9190613b6b565b610cc49190613b6b565b811015610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90613c0b565b60405180910390fd5b670de0b6b3a764000081610d1a9190613afd565b60078190555050565b5f610d2f848484612399565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d766121cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90613c99565b60405180910390fd5b610e0985610e016121cf565b8584036121d6565b60019150509392505050565b61dead81565b5f6012905090565b5f610ec0610e2f6121cf565b848460015f610e3c6121cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ebb9190613cb7565b6121d6565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5f9054906101000a900460ff1681565b610f086121cf565b73ffffffffffffffffffffffffffffffffffffffff16610f26611456565b73ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390613ab2565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b5f84849050118015610fae57508383905082829050145b610fb6575f80fd5b5f3390505f5b858590508110156110325761102582878784818110610fde57610fdd613cea565b5b9050602002016020810190610ff3919061362a565b670de0b6b3a764000087878681811061100f5761100e613cea565b5b905060200201356110209190613afd565b612399565b8080600101915050610fbc565b505050505050565b60105481565b6110486121cf565b73ffffffffffffffffffffffffffffffffffffffff16611066611456565b73ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390613ab2565b60405180910390fd5b81600f81905550806010819055505050565b600b60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161112790613d44565b5f6040518083038185875af1925050503d805f8114611161576040519150601f19603f3d011682016040523d82523d5f602084013e611166565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111bc6121cf565b73ffffffffffffffffffffffffffffffffffffffff166111da611456565b73ffffffffffffffffffffffffffffffffffffffff1614611230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122790613ab2565b60405180910390fd5b6112395f612d70565b565b6112436121cf565b73ffffffffffffffffffffffffffffffffffffffff16611261611456565b73ffffffffffffffffffffffffffffffffffffffff16146112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90613ab2565b60405180910390fd5b80600f8190555050565b6112c96121cf565b73ffffffffffffffffffffffffffffffffffffffff166112e7611456565b73ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490613ab2565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113d56121cf565b73ffffffffffffffffffffffffffffffffffffffff16146113f4575f80fd5b6113fd3061116f565b811115801561140b57505f81115b61144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190613da2565b60405180910390fd5b61145381612e33565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114866121cf565b73ffffffffffffffffffffffffffffffffffffffff166114a4611456565b73ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190613ab2565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461152690613a38565b80601f016020809104026020016040519081016040528092919081815260200182805461155290613a38565b801561159d5780601f106115745761010080835404028352916020019161159d565b820191905f5260205f20905b81548152906001019060200180831161158057829003601f168201915b5050505050905090565b600e5481565b6115b56121cf565b73ffffffffffffffffffffffffffffffffffffffff166115d3611456565b73ffffffffffffffffffffffffffffffffffffffff1614611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613ab2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90613e30565b60405180910390fd5b6116c18282613066565b5050565b5f8060015f6116d26121cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613ebe565b60405180910390fd5b6117a06117976121cf565b858584036121d6565b600191505092915050565b6117b36121cf565b73ffffffffffffffffffffffffffffffffffffffff166117d1611456565b73ffffffffffffffffffffffffffffffffffffffff1614611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e90613ab2565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6118e66118df6121cf565b8484612399565b6001905092915050565b6118f86121cf565b73ffffffffffffffffffffffffffffffffffffffff16611916611456565b73ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613ab2565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a326121cf565b73ffffffffffffffffffffffffffffffffffffffff16611a50611456565b73ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d90613ab2565b60405180910390fd5b611ad8307f0000000000000000000000000000000000000000000000000000000000000000611ad3610c0b565b6121d6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b1f3061116f565b5f80611b29611456565b426040518863ffffffff1660e01b8152600401611b4b96959493929190613f15565b60606040518083038185885af1158015611b67573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b8c9190613f88565b5050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c2a929190613fd8565b6020604051808303815f875af1158015611c46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6a9190614013565b5080600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d8190555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611cf16121cf565b73ffffffffffffffffffffffffffffffffffffffff16611d0f611456565b73ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613ab2565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dff9190613611565b60405180910390a25050565b611e136121cf565b73ffffffffffffffffffffffffffffffffffffffff16611e31611456565b73ffffffffffffffffffffffffffffffffffffffff1614611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e90613ab2565b60405180910390fd5b670de0b6b3a76400006103e86005611e9d610c0b565b611ea79190613afd565b611eb19190613b6b565b611ebb9190613b6b565b811015611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4906140ae565b60405180910390fd5b670de0b6b3a764000081611f119190613afd565b60098190555050565b60075481565b600a5481565b611f2e6121cf565b73ffffffffffffffffffffffffffffffffffffffff16611f4c611456565b73ffffffffffffffffffffffffffffffffffffffff1614611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613ab2565b60405180910390fd5b670de0b6b3a764000081611fb69190613afd565b60088190555050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6120556121cf565b73ffffffffffffffffffffffffffffffffffffffff16612073611456565b73ffffffffffffffffffffffffffffffffffffffff16146120c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c090613ab2565b60405180910390fd5b8060108190555050565b6120db6121cf565b73ffffffffffffffffffffffffffffffffffffffff166120f9611456565b73ffffffffffffffffffffffffffffffffffffffff161461214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690613ab2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b49061413c565b60405180910390fd5b6121c681612d70565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b906141ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990614258565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161238c9190613703565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe906142e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90614374565b60405180910390fd5b5f810361248c5761248783835f613104565b612d6b565b600b5f9054906101000a900460ff1615612995576124a8611456565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561251657506124e6611456565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561254e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612588575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a15750600560149054906101000a900460ff16155b156129945743600e54600c546125b79190613cb7565b106125cb575f6010819055505f600f819055505b600b60019054906101000a900460ff166126ba5760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061267a575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b0906143dc565b60405180910390fd5b5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612757575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127fe576007548111156127a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127989061446a565b60405180910390fd5b6009546127ad8361116f565b826127b89190613cb7565b11156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f0906144d2565b60405180910390fd5b612993565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561289b575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128ea576007548111156128e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dc90614560565b60405180910390fd5b612992565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612991576009546129448361116f565b8261294f9190613cb7565b1115612990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612987906144d2565b60405180910390fd5b5b5b5b5b5b5f61299f3061116f565b90505f60085482101590508080156129c35750600b60029054906101000a900460ff165b80156129dc5750600560149054906101000a900460ff16155b8015612a2f575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a82575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ad5575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b6657600360145f4381526020019081526020015f20541015612b65576001600560146101000a81548160ff021916908315150217905550612b17613379565b5f600560146101000a81548160ff021916908315150217905550600160145f4381526020019081526020015f2054612b4f9190613cb7565b60145f4381526020019081526020015f20819055505b5b5f600560149054906101000a900460ff1615905060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c15575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c1e575f90505b5f8115612d5b5760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c7c57505f601054115b15612cb057612ca96064612c9b6010548861344690919063ffffffff16565b61345b90919063ffffffff16565b9050612d38565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d0757505f600f54115b15612d3757612d346064612d26600f548861344690919063ffffffff16565b61345b90919063ffffffff16565b90505b5b5f811115612d4c57612d4b873083613104565b5b8085612d58919061457e565b94505b612d66878787613104565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff811115612e4f57612e4e6145b1565b5b604051908082528060200260200182016040528015612e7d5781602001602082028036833780820191505090505b50905030815f81518110612e9457612e93613cea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f5b91906145f2565b81600181518110612f6f57612f6e613cea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fd4307f0000000000000000000000000000000000000000000000000000000000000000846121d6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016130359594939291906146d4565b5f604051808303815f87803b15801561304c575f80fd5b505af115801561305e573d5f803e3d5ffd5b505050505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613169906142e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d790614374565b60405180910390fd5b6131eb838383613470565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561326e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132659061479c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132fc9190613cb7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133609190613703565b60405180910390a3613373848484613475565b50505050565b5f6133833061116f565b90505f808203613394575050613444565b600a548211156133a457600a5491505b5f8290506133b181612e33565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516133fa90613d44565b5f6040518083038185875af1925050503d805f8114613434576040519150601f19603f3d011682016040523d82523d5f602084013e613439565b606091505b505080935050505050505b565b5f81836134539190613afd565b905092915050565b5f81836134689190613b6b565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156134b1578082015181840152602081019050613496565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134d68261347a565b6134e08185613484565b93506134f0818560208601613494565b6134f9816134bc565b840191505092915050565b5f6020820190508181035f83015261351c81846134cc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135558261352c565b9050919050565b6135658161354b565b811461356f575f80fd5b50565b5f813590506135808161355c565b92915050565b5f819050919050565b61359881613586565b81146135a2575f80fd5b50565b5f813590506135b38161358f565b92915050565b5f80604083850312156135cf576135ce613524565b5b5f6135dc85828601613572565b92505060206135ed858286016135a5565b9150509250929050565b5f8115159050919050565b61360b816135f7565b82525050565b5f6020820190506136245f830184613602565b92915050565b5f6020828403121561363f5761363e613524565b5b5f61364c84828501613572565b91505092915050565b5f6020828403121561366a57613669613524565b5b5f613677848285016135a5565b91505092915050565b5f819050919050565b5f6136a361369e6136998461352c565b613680565b61352c565b9050919050565b5f6136b482613689565b9050919050565b5f6136c5826136aa565b9050919050565b6136d5816136bb565b82525050565b5f6020820190506136ee5f8301846136cc565b92915050565b6136fd81613586565b82525050565b5f6020820190506137165f8301846136f4565b92915050565b5f805f6060848603121561373357613732613524565b5b5f61374086828701613572565b935050602061375186828701613572565b9250506040613762868287016135a5565b9150509250925092565b6137758161354b565b82525050565b5f60208201905061378e5f83018461376c565b92915050565b5f60ff82169050919050565b6137a981613794565b82525050565b5f6020820190506137c25f8301846137a0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126137e9576137e86137c8565b5b8235905067ffffffffffffffff811115613806576138056137cc565b5b602083019150836020820283011115613822576138216137d0565b5b9250929050565b5f8083601f84011261383e5761383d6137c8565b5b8235905067ffffffffffffffff81111561385b5761385a6137cc565b5b602083019150836020820283011115613877576138766137d0565b5b9250929050565b5f805f806040858703121561389657613895613524565b5b5f85013567ffffffffffffffff8111156138b3576138b2613528565b5b6138bf878288016137d4565b9450945050602085013567ffffffffffffffff8111156138e2576138e1613528565b5b6138ee87828801613829565b925092505092959194509250565b5f806040838503121561391257613911613524565b5b5f61391f858286016135a5565b9250506020613930858286016135a5565b9150509250929050565b613943816135f7565b811461394d575f80fd5b50565b5f8135905061395e8161393a565b92915050565b5f806040838503121561397a57613979613524565b5b5f61398785828601613572565b925050602061399885828601613950565b9150509250929050565b5f602082840312156139b7576139b6613524565b5b5f6139c484828501613950565b91505092915050565b5f80604083850312156139e3576139e2613524565b5b5f6139f085828601613572565b9250506020613a0185828601613572565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a4f57607f821691505b602082108103613a6257613a61613a0b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a9c602083613484565b9150613aa782613a68565b602082019050919050565b5f6020820190508181035f830152613ac981613a90565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b0782613586565b9150613b1283613586565b9250828202613b2081613586565b91508282048414831517613b3757613b36613ad0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b7582613586565b9150613b8083613586565b925082613b9057613b8f613b3e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613bf5602f83613484565b9150613c0082613b9b565b604082019050919050565b5f6020820190508181035f830152613c2281613be9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c83602883613484565b9150613c8e82613c29565b604082019050919050565b5f6020820190508181035f830152613cb081613c77565b9050919050565b5f613cc182613586565b9150613ccc83613586565b9250828201905080821115613ce457613ce3613ad0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b50565b5f613d2f5f83613d17565b9150613d3a82613d21565b5f82019050919050565b5f613d4e82613d24565b9150819050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613d8c600c83613484565b9150613d9782613d58565b602082019050919050565b5f6020820190508181035f830152613db981613d80565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e1a603983613484565b9150613e2582613dc0565b604082019050919050565b5f6020820190508181035f830152613e4781613e0e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ea8602583613484565b9150613eb382613e4e565b604082019050919050565b5f6020820190508181035f830152613ed581613e9c565b9050919050565b5f819050919050565b5f613eff613efa613ef584613edc565b613680565b613586565b9050919050565b613f0f81613ee5565b82525050565b5f60c082019050613f285f83018961376c565b613f3560208301886136f4565b613f426040830187613f06565b613f4f6060830186613f06565b613f5c608083018561376c565b613f6960a08301846136f4565b979650505050505050565b5f81519050613f828161358f565b92915050565b5f805f60608486031215613f9f57613f9e613524565b5b5f613fac86828701613f74565b9350506020613fbd86828701613f74565b9250506040613fce86828701613f74565b9150509250925092565b5f604082019050613feb5f83018561376c565b613ff860208301846136f4565b9392505050565b5f8151905061400d8161393a565b92915050565b5f6020828403121561402857614027613524565b5b5f61403584828501613fff565b91505092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614098602483613484565b91506140a38261403e565b604082019050919050565b5f6020820190508181035f8301526140c58161408c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614126602683613484565b9150614131826140cc565b604082019050919050565b5f6020820190508181035f8301526141538161411a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141b4602483613484565b91506141bf8261415a565b604082019050919050565b5f6020820190508181035f8301526141e1816141a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614242602283613484565b915061424d826141e8565b604082019050919050565b5f6020820190508181035f83015261426f81614236565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142d0602583613484565b91506142db82614276565b604082019050919050565b5f6020820190508181035f8301526142fd816142c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61435e602383613484565b915061436982614304565b604082019050919050565b5f6020820190508181035f83015261438b81614352565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143c6601683613484565b91506143d182614392565b602082019050919050565b5f6020820190508181035f8301526143f3816143ba565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614454603583613484565b915061445f826143fa565b604082019050919050565b5f6020820190508181035f83015261448181614448565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144bc601383613484565b91506144c782614488565b602082019050919050565b5f6020820190508181035f8301526144e9816144b0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61454a603683613484565b9150614555826144f0565b604082019050919050565b5f6020820190508181035f8301526145778161453e565b9050919050565b5f61458882613586565b915061459383613586565b92508282039050818111156145ab576145aa613ad0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506145ec8161355c565b92915050565b5f6020828403121561460757614606613524565b5b5f614614848285016145de565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61464f8161354b565b82525050565b5f6146608383614646565b60208301905092915050565b5f602082019050919050565b5f6146828261461d565b61468c8185614627565b935061469783614637565b805f5b838110156146c75781516146ae8882614655565b97506146b98361466c565b92505060018101905061469a565b5085935050505092915050565b5f60a0820190506146e75f8301886136f4565b6146f46020830187613f06565b81810360408301526147068186614678565b9050614715606083018561376c565b61472260808301846136f4565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614786602683613484565b91506147918261472c565b604082019050919050565b5f6020820190508181035f8301526147b38161477a565b905091905056fea26469706673582212208277cc079b542e6985d577a862538b4cd0bd4aee2bc147206492b84abd9a82e064736f6c63430008160033

Deployed Bytecode

0x60806040526004361061028b575f3560e01c8063881dce6011610159578063bbc0c742116100c0578063d85ba06311610079578063d85ba0631461097a578063dd62ed3e146109a4578063e2f45605146109e0578063eba4c33314610a0a578063f2fde38b14610a32578063f8b45b0514610a5a57610292565b8063bbc0c74214610884578063c0246668146108ae578063c18bc195146108d6578063c8c8ebe4146108fe578063cce987d414610928578063d257b34f1461095257610292565b8063a457c2d711610112578063a457c2d714610764578063a672990c146107a0578063a9059cbb146107c8578063aacebbe314610804578063b50aa2b91461082c578063b62496f51461084857610292565b8063881dce601461066e5780638da5cb5b14610696578063924de9b7146106c057806395d89b41146106e8578063967ff23e146107125780639a7a23d61461073c57610292565b806349bd5a5e116101fd5780636ddd1713116101b65780636ddd17131461058c5780636fc3eaec146105b657806370a08231146105cc578063715018a61461060857806371fc46881461061e5780637571336a1461064657610292565b806349bd5a5e146104a85780634a62bb65146104d25780635e4ae81b146104fc57806367243482146105125780636a486a8e1461053a5780636db794371461056457610292565b806318160ddd1161024f57806318160ddd1461038a578063203e727e146103b457806323b872dd146103dc57806327c8f83514610418578063313ce56714610442578063395093511461046c57610292565b806306fdde0314610296578063095ea7b3146102c057806310d5de53146102fc578063150074a3146103385780631694505e1461036057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610a84565b6040516102b79190613504565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e191906135b9565b610b14565b6040516102f39190613611565b60405180910390f35b348015610307575f80fd5b50610322600480360381019061031d919061362a565b610b31565b60405161032f9190613611565b60405180910390f35b348015610343575f80fd5b5061035e60048036038101906103599190613655565b610b4e565b005b34801561036b575f80fd5b50610374610be7565b60405161038191906136db565b60405180910390f35b348015610395575f80fd5b5061039e610c0b565b6040516103ab9190613703565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d59190613655565b610c14565b005b3480156103e7575f80fd5b5061040260048036038101906103fd919061371c565b610d23565b60405161040f9190613611565b60405180910390f35b348015610423575f80fd5b5061042c610e15565b604051610439919061377b565b60405180910390f35b34801561044d575f80fd5b50610456610e1b565b60405161046391906137af565b60405180910390f35b348015610477575f80fd5b50610492600480360381019061048d91906135b9565b610e23565b60405161049f9190613611565b60405180910390f35b3480156104b3575f80fd5b506104bc610eca565b6040516104c9919061377b565b60405180910390f35b3480156104dd575f80fd5b506104e6610eee565b6040516104f39190613611565b60405180910390f35b348015610507575f80fd5b50610510610f00565b005b34801561051d575f80fd5b506105386004803603810190610533919061387e565b610f97565b005b348015610545575f80fd5b5061054e61103a565b60405161055b9190613703565b60405180910390f35b34801561056f575f80fd5b5061058a600480360381019061058591906138fc565b611040565b005b348015610597575f80fd5b506105a06110ce565b6040516105ad9190613611565b60405180910390f35b3480156105c1575f80fd5b506105ca6110e1565b005b3480156105d7575f80fd5b506105f260048036038101906105ed919061362a565b61116f565b6040516105ff9190613703565b60405180910390f35b348015610613575f80fd5b5061061c6111b4565b005b348015610629575f80fd5b50610644600480360381019061063f9190613655565b61123b565b005b348015610651575f80fd5b5061066c60048036038101906106679190613964565b6112c1565b005b348015610679575f80fd5b50610694600480360381019061068f9190613655565b611395565b005b3480156106a1575f80fd5b506106aa611456565b6040516106b7919061377b565b60405180910390f35b3480156106cb575f80fd5b506106e660048036038101906106e191906139a2565b61147e565b005b3480156106f3575f80fd5b506106fc611517565b6040516107099190613504565b60405180910390f35b34801561071d575f80fd5b506107266115a7565b6040516107339190613703565b60405180910390f35b348015610747575f80fd5b50610762600480360381019061075d9190613964565b6115ad565b005b34801561076f575f80fd5b5061078a600480360381019061078591906135b9565b6116c5565b6040516107979190613611565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190613964565b6117ab565b005b3480156107d3575f80fd5b506107ee60048036038101906107e991906135b9565b6118d3565b6040516107fb9190613611565b60405180910390f35b34801561080f575f80fd5b5061082a6004803603810190610825919061362a565b6118f0565b005b61084660048036038101906108419190613655565b611a2a565b005b348015610853575f80fd5b5061086e6004803603810190610869919061362a565b611cb9565b60405161087b9190613611565b60405180910390f35b34801561088f575f80fd5b50610898611cd6565b6040516108a59190613611565b60405180910390f35b3480156108b9575f80fd5b506108d460048036038101906108cf9190613964565b611ce9565b005b3480156108e1575f80fd5b506108fc60048036038101906108f79190613655565b611e0b565b005b348015610909575f80fd5b50610912611f1a565b60405161091f9190613703565b60405180910390f35b348015610933575f80fd5b5061093c611f20565b6040516109499190613703565b60405180910390f35b34801561095d575f80fd5b5061097860048036038101906109739190613655565b611f26565b005b348015610985575f80fd5b5061098e611fbf565b60405161099b9190613703565b60405180910390f35b3480156109af575f80fd5b506109ca60048036038101906109c591906139cd565b611fc5565b6040516109d79190613703565b60405180910390f35b3480156109eb575f80fd5b506109f4612047565b604051610a019190613703565b60405180910390f35b348015610a15575f80fd5b50610a306004803603810190610a2b9190613655565b61204d565b005b348015610a3d575f80fd5b50610a586004803603810190610a53919061362a565b6120d3565b005b348015610a65575f80fd5b50610a6e6121c9565b604051610a7b9190613703565b60405180910390f35b606060038054610a9390613a38565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90613a38565b8015610b0a5780601f10610ae157610100808354040283529160200191610b0a565b820191905f5260205f20905b815481529060010190602001808311610aed57829003601f168201915b5050505050905090565b5f610b27610b206121cf565b84846121d6565b6001905092915050565b6012602052805f5260405f205f915054906101000a900460ff1681565b610b566121cf565b73ffffffffffffffffffffffffffffffffffffffff16610b74611456565b73ffffffffffffffffffffffffffffffffffffffff1614610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190613ab2565b60405180910390fd5b670de0b6b3a764000081610bde9190613afd565b600a8190555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610c1c6121cf565b73ffffffffffffffffffffffffffffffffffffffff16610c3a611456565b73ffffffffffffffffffffffffffffffffffffffff1614610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8790613ab2565b60405180910390fd5b670de0b6b3a76400006103e86001610ca6610c0b565b610cb09190613afd565b610cba9190613b6b565b610cc49190613b6b565b811015610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90613c0b565b60405180910390fd5b670de0b6b3a764000081610d1a9190613afd565b60078190555050565b5f610d2f848484612399565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d766121cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90613c99565b60405180910390fd5b610e0985610e016121cf565b8584036121d6565b60019150509392505050565b61dead81565b5f6012905090565b5f610ec0610e2f6121cf565b848460015f610e3c6121cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ebb9190613cb7565b6121d6565b6001905092915050565b7f0000000000000000000000009e063ba409ac08808259909abe0c392d9ead67b681565b600b5f9054906101000a900460ff1681565b610f086121cf565b73ffffffffffffffffffffffffffffffffffffffff16610f26611456565b73ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390613ab2565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b5f84849050118015610fae57508383905082829050145b610fb6575f80fd5b5f3390505f5b858590508110156110325761102582878784818110610fde57610fdd613cea565b5b9050602002016020810190610ff3919061362a565b670de0b6b3a764000087878681811061100f5761100e613cea565b5b905060200201356110209190613afd565b612399565b8080600101915050610fbc565b505050505050565b60105481565b6110486121cf565b73ffffffffffffffffffffffffffffffffffffffff16611066611456565b73ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390613ab2565b60405180910390fd5b81600f81905550806010819055505050565b600b60029054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161112790613d44565b5f6040518083038185875af1925050503d805f8114611161576040519150601f19603f3d011682016040523d82523d5f602084013e611166565b606091505b50508091505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111bc6121cf565b73ffffffffffffffffffffffffffffffffffffffff166111da611456565b73ffffffffffffffffffffffffffffffffffffffff1614611230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122790613ab2565b60405180910390fd5b6112395f612d70565b565b6112436121cf565b73ffffffffffffffffffffffffffffffffffffffff16611261611456565b73ffffffffffffffffffffffffffffffffffffffff16146112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90613ab2565b60405180910390fd5b80600f8190555050565b6112c96121cf565b73ffffffffffffffffffffffffffffffffffffffff166112e7611456565b73ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490613ab2565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113d56121cf565b73ffffffffffffffffffffffffffffffffffffffff16146113f4575f80fd5b6113fd3061116f565b811115801561140b57505f81115b61144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190613da2565b60405180910390fd5b61145381612e33565b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114866121cf565b73ffffffffffffffffffffffffffffffffffffffff166114a4611456565b73ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190613ab2565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461152690613a38565b80601f016020809104026020016040519081016040528092919081815260200182805461155290613a38565b801561159d5780601f106115745761010080835404028352916020019161159d565b820191905f5260205f20905b81548152906001019060200180831161158057829003601f168201915b5050505050905090565b600e5481565b6115b56121cf565b73ffffffffffffffffffffffffffffffffffffffff166115d3611456565b73ffffffffffffffffffffffffffffffffffffffff1614611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613ab2565b60405180910390fd5b7f0000000000000000000000009e063ba409ac08808259909abe0c392d9ead67b673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90613e30565b60405180910390fd5b6116c18282613066565b5050565b5f8060015f6116d26121cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390613ebe565b60405180910390fd5b6117a06117976121cf565b858584036121d6565b600191505092915050565b6117b36121cf565b73ffffffffffffffffffffffffffffffffffffffff166117d1611456565b73ffffffffffffffffffffffffffffffffffffffff1614611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e90613ab2565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6118e66118df6121cf565b8484612399565b6001905092915050565b6118f86121cf565b73ffffffffffffffffffffffffffffffffffffffff16611916611456565b73ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613ab2565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a326121cf565b73ffffffffffffffffffffffffffffffffffffffff16611a50611456565b73ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d90613ab2565b60405180910390fd5b611ad8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d611ad3610c0b565b6121d6565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b1f3061116f565b5f80611b29611456565b426040518863ffffffff1660e01b8152600401611b4b96959493929190613f15565b60606040518083038185885af1158015611b67573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b8c9190613f88565b5050507f0000000000000000000000009e063ba409ac08808259909abe0c392d9ead67b673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611c2a929190613fd8565b6020604051808303815f875af1158015611c46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6a9190614013565b5080600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d8190555050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611cf16121cf565b73ffffffffffffffffffffffffffffffffffffffff16611d0f611456565b73ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613ab2565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dff9190613611565b60405180910390a25050565b611e136121cf565b73ffffffffffffffffffffffffffffffffffffffff16611e31611456565b73ffffffffffffffffffffffffffffffffffffffff1614611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e90613ab2565b60405180910390fd5b670de0b6b3a76400006103e86005611e9d610c0b565b611ea79190613afd565b611eb19190613b6b565b611ebb9190613b6b565b811015611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef4906140ae565b60405180910390fd5b670de0b6b3a764000081611f119190613afd565b60098190555050565b60075481565b600a5481565b611f2e6121cf565b73ffffffffffffffffffffffffffffffffffffffff16611f4c611456565b73ffffffffffffffffffffffffffffffffffffffff1614611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613ab2565b60405180910390fd5b670de0b6b3a764000081611fb69190613afd565b60088190555050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6120556121cf565b73ffffffffffffffffffffffffffffffffffffffff16612073611456565b73ffffffffffffffffffffffffffffffffffffffff16146120c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c090613ab2565b60405180910390fd5b8060108190555050565b6120db6121cf565b73ffffffffffffffffffffffffffffffffffffffff166120f9611456565b73ffffffffffffffffffffffffffffffffffffffff161461214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690613ab2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b49061413c565b60405180910390fd5b6121c681612d70565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b906141ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990614258565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161238c9190613703565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe906142e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90614374565b60405180910390fd5b5f810361248c5761248783835f613104565b612d6b565b600b5f9054906101000a900460ff1615612995576124a8611456565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561251657506124e6611456565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561254e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612588575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a15750600560149054906101000a900460ff16155b156129945743600e54600c546125b79190613cb7565b106125cb575f6010819055505f600f819055505b600b60019054906101000a900460ff166126ba5760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061267a575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b0906143dc565b60405180910390fd5b5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612757575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127fe576007548111156127a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127989061446a565b60405180910390fd5b6009546127ad8361116f565b826127b89190613cb7565b11156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f0906144d2565b60405180910390fd5b612993565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561289b575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128ea576007548111156128e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dc90614560565b60405180910390fd5b612992565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612991576009546129448361116f565b8261294f9190613cb7565b1115612990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612987906144d2565b60405180910390fd5b5b5b5b5b5b5f61299f3061116f565b90505f60085482101590508080156129c35750600b60029054906101000a900460ff165b80156129dc5750600560149054906101000a900460ff16155b8015612a2f575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a82575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ad5575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b6657600360145f4381526020019081526020015f20541015612b65576001600560146101000a81548160ff021916908315150217905550612b17613379565b5f600560146101000a81548160ff021916908315150217905550600160145f4381526020019081526020015f2054612b4f9190613cb7565b60145f4381526020019081526020015f20819055505b5b5f600560149054906101000a900460ff1615905060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612c15575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c1e575f90505b5f8115612d5b5760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c7c57505f601054115b15612cb057612ca96064612c9b6010548861344690919063ffffffff16565b61345b90919063ffffffff16565b9050612d38565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d0757505f600f54115b15612d3757612d346064612d26600f548861344690919063ffffffff16565b61345b90919063ffffffff16565b90505b5b5f811115612d4c57612d4b873083613104565b5b8085612d58919061457e565b94505b612d66878787613104565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff811115612e4f57612e4e6145b1565b5b604051908082528060200260200182016040528015612e7d5781602001602082028036833780820191505090505b50905030815f81518110612e9457612e93613cea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f5b91906145f2565b81600181518110612f6f57612f6e613cea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fd4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121d6565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016130359594939291906146d4565b5f604051808303815f87803b15801561304c575f80fd5b505af115801561305e573d5f803e3d5ffd5b505050505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613169906142e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d790614374565b60405180910390fd5b6131eb838383613470565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561326e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132659061479c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132fc9190613cb7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133609190613703565b60405180910390a3613373848484613475565b50505050565b5f6133833061116f565b90505f808203613394575050613444565b600a548211156133a457600a5491505b5f8290506133b181612e33565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516133fa90613d44565b5f6040518083038185875af1925050503d805f8114613434576040519150601f19603f3d011682016040523d82523d5f602084013e613439565b606091505b505080935050505050505b565b5f81836134539190613afd565b905092915050565b5f81836134689190613b6b565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156134b1578082015181840152602081019050613496565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134d68261347a565b6134e08185613484565b93506134f0818560208601613494565b6134f9816134bc565b840191505092915050565b5f6020820190508181035f83015261351c81846134cc565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135558261352c565b9050919050565b6135658161354b565b811461356f575f80fd5b50565b5f813590506135808161355c565b92915050565b5f819050919050565b61359881613586565b81146135a2575f80fd5b50565b5f813590506135b38161358f565b92915050565b5f80604083850312156135cf576135ce613524565b5b5f6135dc85828601613572565b92505060206135ed858286016135a5565b9150509250929050565b5f8115159050919050565b61360b816135f7565b82525050565b5f6020820190506136245f830184613602565b92915050565b5f6020828403121561363f5761363e613524565b5b5f61364c84828501613572565b91505092915050565b5f6020828403121561366a57613669613524565b5b5f613677848285016135a5565b91505092915050565b5f819050919050565b5f6136a361369e6136998461352c565b613680565b61352c565b9050919050565b5f6136b482613689565b9050919050565b5f6136c5826136aa565b9050919050565b6136d5816136bb565b82525050565b5f6020820190506136ee5f8301846136cc565b92915050565b6136fd81613586565b82525050565b5f6020820190506137165f8301846136f4565b92915050565b5f805f6060848603121561373357613732613524565b5b5f61374086828701613572565b935050602061375186828701613572565b9250506040613762868287016135a5565b9150509250925092565b6137758161354b565b82525050565b5f60208201905061378e5f83018461376c565b92915050565b5f60ff82169050919050565b6137a981613794565b82525050565b5f6020820190506137c25f8301846137a0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126137e9576137e86137c8565b5b8235905067ffffffffffffffff811115613806576138056137cc565b5b602083019150836020820283011115613822576138216137d0565b5b9250929050565b5f8083601f84011261383e5761383d6137c8565b5b8235905067ffffffffffffffff81111561385b5761385a6137cc565b5b602083019150836020820283011115613877576138766137d0565b5b9250929050565b5f805f806040858703121561389657613895613524565b5b5f85013567ffffffffffffffff8111156138b3576138b2613528565b5b6138bf878288016137d4565b9450945050602085013567ffffffffffffffff8111156138e2576138e1613528565b5b6138ee87828801613829565b925092505092959194509250565b5f806040838503121561391257613911613524565b5b5f61391f858286016135a5565b9250506020613930858286016135a5565b9150509250929050565b613943816135f7565b811461394d575f80fd5b50565b5f8135905061395e8161393a565b92915050565b5f806040838503121561397a57613979613524565b5b5f61398785828601613572565b925050602061399885828601613950565b9150509250929050565b5f602082840312156139b7576139b6613524565b5b5f6139c484828501613950565b91505092915050565b5f80604083850312156139e3576139e2613524565b5b5f6139f085828601613572565b9250506020613a0185828601613572565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a4f57607f821691505b602082108103613a6257613a61613a0b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a9c602083613484565b9150613aa782613a68565b602082019050919050565b5f6020820190508181035f830152613ac981613a90565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b0782613586565b9150613b1283613586565b9250828202613b2081613586565b91508282048414831517613b3757613b36613ad0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b7582613586565b9150613b8083613586565b925082613b9057613b8f613b3e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613bf5602f83613484565b9150613c0082613b9b565b604082019050919050565b5f6020820190508181035f830152613c2281613be9565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613c83602883613484565b9150613c8e82613c29565b604082019050919050565b5f6020820190508181035f830152613cb081613c77565b9050919050565b5f613cc182613586565b9150613ccc83613586565b9250828201905080821115613ce457613ce3613ad0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b50565b5f613d2f5f83613d17565b9150613d3a82613d21565b5f82019050919050565b5f613d4e82613d24565b9150819050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613d8c600c83613484565b9150613d9782613d58565b602082019050919050565b5f6020820190508181035f830152613db981613d80565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e1a603983613484565b9150613e2582613dc0565b604082019050919050565b5f6020820190508181035f830152613e4781613e0e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ea8602583613484565b9150613eb382613e4e565b604082019050919050565b5f6020820190508181035f830152613ed581613e9c565b9050919050565b5f819050919050565b5f613eff613efa613ef584613edc565b613680565b613586565b9050919050565b613f0f81613ee5565b82525050565b5f60c082019050613f285f83018961376c565b613f3560208301886136f4565b613f426040830187613f06565b613f4f6060830186613f06565b613f5c608083018561376c565b613f6960a08301846136f4565b979650505050505050565b5f81519050613f828161358f565b92915050565b5f805f60608486031215613f9f57613f9e613524565b5b5f613fac86828701613f74565b9350506020613fbd86828701613f74565b9250506040613fce86828701613f74565b9150509250925092565b5f604082019050613feb5f83018561376c565b613ff860208301846136f4565b9392505050565b5f8151905061400d8161393a565b92915050565b5f6020828403121561402857614027613524565b5b5f61403584828501613fff565b91505092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614098602483613484565b91506140a38261403e565b604082019050919050565b5f6020820190508181035f8301526140c58161408c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614126602683613484565b9150614131826140cc565b604082019050919050565b5f6020820190508181035f8301526141538161411a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141b4602483613484565b91506141bf8261415a565b604082019050919050565b5f6020820190508181035f8301526141e1816141a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614242602283613484565b915061424d826141e8565b604082019050919050565b5f6020820190508181035f83015261426f81614236565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142d0602583613484565b91506142db82614276565b604082019050919050565b5f6020820190508181035f8301526142fd816142c4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61435e602383613484565b915061436982614304565b604082019050919050565b5f6020820190508181035f83015261438b81614352565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143c6601683613484565b91506143d182614392565b602082019050919050565b5f6020820190508181035f8301526143f3816143ba565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614454603583613484565b915061445f826143fa565b604082019050919050565b5f6020820190508181035f83015261448181614448565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144bc601383613484565b91506144c782614488565b602082019050919050565b5f6020820190508181035f8301526144e9816144b0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61454a603683613484565b9150614555826144f0565b604082019050919050565b5f6020820190508181035f8301526145778161453e565b9050919050565b5f61458882613586565b915061459383613586565b92508282039050818111156145ab576145aa613ad0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506145ec8161355c565b92915050565b5f6020828403121561460757614606613524565b5b5f614614848285016145de565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61464f8161354b565b82525050565b5f6146608383614646565b60208301905092915050565b5f602082019050919050565b5f6146828261461d565b61468c8185614627565b935061469783614637565b805f5b838110156146c75781516146ae8882614655565b97506146b98361466c565b92505060018101905061469a565b5085935050505092915050565b5f60a0820190506146e75f8301886136f4565b6146f46020830187613f06565b81810360408301526147068186614678565b9050614715606083018561376c565b61472260808301846136f4565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614786602683613484565b91506147918261472c565b604082019050919050565b5f6020820190508181035f8301526147b38161477a565b905091905056fea26469706673582212208277cc079b542e6985d577a862538b4cd0bd4aee2bc147206492b84abd9a82e064736f6c63430008160033

Deployed Bytecode Sourcemap

11719:10927:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7227:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8141:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12533:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15157:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11798:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7548:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8318:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11901:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7447:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8784:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11856:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12183:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14923:84;;;;;;;;;;;;;:::i;:::-;;17941:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12437:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17579:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12263:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16732:149;;;;;;;;;;;;;:::i;:::-;;7664:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6273:103;;;;;;;;;;;;;:::i;:::-;;17337:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15963:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16501:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6050:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16203:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7335:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12371:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16889:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9007:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15760:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7799:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17725:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14376:539;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12605:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12223:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16311:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15531:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12033:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12146:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15015:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12401:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7982:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12075:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17457:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6384:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12115:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7227:100;7281:13;7314:5;7307:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7227:100;:::o;8141:169::-;8224:4;8241:39;8250:12;:10;:12::i;:::-;8264:7;8273:6;8241:8;:39::i;:::-;8298:4;8291:11;;8141:169;;;;:::o;12533:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15157:118::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15258:8:::1;15245:9;:22;;;;:::i;:::-;15229:13;:38;;;;15157:118:::0;:::o;11798:51::-;;;:::o;7548:108::-;7609:7;7636:12;;7629:19;;7548:108;:::o;15283:240::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15406:4:::1;15398;15393:1;15377:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15376:26;;;;:::i;:::-;15375:35;;;;:::i;:::-;15365:6;:45;;15357:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15506:8;15496:6;:19;;;;:::i;:::-;15473:20;:42;;;;15283:240:::0;:::o;8318:458::-;8424:4;8441:36;8451:6;8459:9;8470:6;8441:9;:36::i;:::-;8490:24;8517:11;:19;8529:6;8517:19;;;;;;;;;;;;;;;:33;8537:12;:10;:12::i;:::-;8517:33;;;;;;;;;;;;;;;;8490:60;;8589:6;8569:16;:26;;8561:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8676:57;8685:6;8693:12;:10;:12::i;:::-;8726:6;8707:16;:25;8676:8;:57::i;:::-;8764:4;8757:11;;;8318:458;;;;;:::o;11901:53::-;11947:6;11901:53;:::o;7447:93::-;7505:5;7530:2;7523:9;;7447:93;:::o;8784:215::-;8872:4;8889:80;8898:12;:10;:12::i;:::-;8912:7;8958:10;8921:11;:25;8933:12;:10;:12::i;:::-;8921:25;;;;;;;;;;;;;;;:34;8947:7;8921:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8889:8;:80::i;:::-;8987:4;8980:11;;8784:215;;;;:::o;11856:38::-;;;:::o;12183:33::-;;;;;;;;;;;;;:::o;14923:84::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14994:5:::1;14977:14;;:22;;;;;;;;;;;;;;;;;;14923:84::o:0;17941:346::-;18063:1;18044:9;;:16;;:20;:58;;;;;18086:9;;:16;;18068:7;;:14;;:34;18044:58;18036:67;;;;;;18114:12;18129:10;18114:25;;18157:9;18152:128;18176:9;;:16;;18172:1;:20;18152:128;;;18214:54;18224:4;18230:9;;18240:1;18230:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18258:8;18244:7;;18252:1;18244:10;;;;;;;:::i;:::-;;;;;;;;:23;;;;:::i;:::-;18214:9;:54::i;:::-;18194:3;;;;;;;18152:128;;;;18025:262;17941:346;;;;:::o;12437:28::-;;;;:::o;17579:138::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17673:4:::1;17658:12;:19;;;;17704:5;17688:13;:21;;;;17579:138:::0;;:::o;12263:31::-;;;;;;;;;;;;;:::o;16732:149::-;16774:12;16818:15;;;;;;;;;;;16810:29;;16847:21;16810:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16797:76;;;;;16763:118;16732:149::o;7664:127::-;7738:7;7765:9;:18;7775:7;7765:18;;;;;;;;;;;;;;;;7758:25;;7664:127;;;:::o;6273:103::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6338:30:::1;6365:1;6338:18;:30::i;:::-;6273:103::o:0;17337:112::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17428:13:::1;17413:12;:28;;;;17337:112:::0;:::o;15963:144::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16095:4:::1;16053:31;:39;16085:6;16053:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15963:144:::0;;:::o;16501:223::-;16581:15;;;;;;;;;;;16565:31;;:12;:10;:12::i;:::-;:31;;;16557:40;;;;;;16626:24;16644:4;16626:9;:24::i;:::-;16616:6;:34;;:48;;;;;16663:1;16654:6;:10;16616:48;16608:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16692:24;16709:6;16692:16;:24::i;:::-;16501:223;:::o;6050:87::-;6096:7;6123:6;;;;;;;;;;;6116:13;;6050:87;:::o;16203:100::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16288:7:::1;16274:11;;:21;;;;;;;;;;;;;;;;;;16203:100:::0;:::o;7335:104::-;7391:13;7424:7;7417:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7335:104;:::o;12371:21::-;;;;:::o;16889:244::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16996:13:::1;16988:21;;:4;:21;;::::0;16980:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17084:41;17113:4;17119:5;17084:28;:41::i;:::-;16889:244:::0;;:::o;9007:413::-;9100:4;9117:24;9144:11;:25;9156:12;:10;:12::i;:::-;9144:25;;;;;;;;;;;;;;;:34;9170:7;9144:34;;;;;;;;;;;;;;;;9117:61;;9217:15;9197:16;:35;;9189:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9310:67;9319:12;:10;:12::i;:::-;9333:7;9361:15;9342:16;:34;9310:8;:67::i;:::-;9408:4;9401:11;;;9007:413;;;;:::o;15760:195::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15892:4:::1;15846:31;:43;15878:10;15846:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;15943:4;15909:19;:31;15929:10;15909:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15760:195:::0;;:::o;7799:175::-;7885:4;7902:42;7912:12;:10;:12::i;:::-;7926:9;7937:6;7902:9;:42::i;:::-;7962:4;7955:11;;7799:175;;;;:::o;17725:208::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17862:15:::1;;;;;;;;;;;17819:59;;17842:18;17819:59;;;;;;;;;;;;17907:18;17889:15;;:36;;;;;;;;;;;;;;;;;;17725:208:::0;:::o;14376:539::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14455:64:::1;14472:4;14487:15;14505:13;:11;:13::i;:::-;14455:8;:64::i;:::-;14530:15;:31;;;14569:21;14600:4;14606:24;14624:4;14606:9;:24::i;:::-;14631:1;14633::::0;14635:7:::1;:5;:7::i;:::-;14643:15;14530:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14677:13;14670:29;;;14708:15;14726:14;14670:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14763:7;14754:6;:16;;;;14797:4;14781:13;;:20;;;;;;;;;;;;;;;;;;14826:4;14812:11;;:18;;;;;;;;;;;;;;;;;;14854:12;14841:10;:25;;;;14892:15;14877:12;:30;;;;14376:539:::0;:::o;12605:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12223:33::-;;;;;;;;;;;;;:::o;16311:182::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16427:8:::1;16396:19;:28;16416:7;16396:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16467:7;16451:34;;;16476:8;16451:34;;;;;;:::i;:::-;;;;;;;;16311:182:::0;;:::o;15531:221::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15657:4:::1;15649;15644:1;15628:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15627:26;;;;:::i;:::-;15626:35;;;;:::i;:::-;15616:6;:45;;15608:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15735:8;15725:6;:19;;;;:::i;:::-;15713:9;:31;;;;15531:221:::0;:::o;12033:35::-;;;;:::o;12146:28::-;;;;:::o;15015:134::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15132:8:::1;15119:9;:22;;;;:::i;:::-;15098:18;:43;;;;15015:134:::0;:::o;12401:27::-;;;;:::o;7982:151::-;8071:7;8098:11;:18;8110:5;8098:18;;;;;;;;;;;;;;;:27;8117:7;8098:27;;;;;;;;;;;;;;;;8091:34;;7982:151;;;;:::o;12075:33::-;;;;:::o;17457:114::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17550:13:::1;17534;:29;;;;17457:114:::0;:::o;6384:201::-;6196:12;:10;:12::i;:::-;6185:23;;:7;:5;:7::i;:::-;:23;;;6177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6493:1:::1;6473:22;;:8;:22;;::::0;6465:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6549:28;6568:8;6549:18;:28::i;:::-;6384:201:::0;:::o;12115:24::-;;;;:::o;5566:98::-;5619:7;5646:10;5639:17;;5566:98;:::o;11141:346::-;11260:1;11243:19;;:5;:19;;;11235:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11341:1;11322:21;;:7;:21;;;11314:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11425:6;11395:11;:18;11407:5;11395:18;;;;;;;;;;;;;;;:27;11414:7;11395:27;;;;;;;;;;;;;;;:36;;;;11463:7;11447:32;;11456:5;11447:32;;;11472:6;11447:32;;;;;;:::i;:::-;;;;;;;;11141:346;;;:::o;18295:3159::-;18409:1;18393:18;;:4;:18;;;18385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18486:1;18472:16;;:2;:16;;;18464:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18555:1;18545:6;:11;18541:93;;18573:28;18589:4;18595:2;18599:1;18573:15;:28::i;:::-;18616:7;;18541:93;18650:14;;;;;;;;;;;18646:1283;;;18693:7;:5;:7::i;:::-;18685:15;;:4;:15;;;;:32;;;;;18710:7;:5;:7::i;:::-;18704:13;;:2;:13;;;;18685:32;:52;;;;;18735:1;18721:16;;:2;:16;;;;18685:52;:77;;;;;18755:6;18741:21;;:2;:21;;;;18685:77;:90;;;;;18767:8;;;;;;;;;;;18766:9;18685:90;18681:1237;;;18825:12;18814:6;;18801:10;;:19;;;;:::i;:::-;18800:37;18796:156;;18892:1;18876:13;:17;;;;18931:1;18916:12;:16;;;;18796:156;18977:13;;;;;;;;;;;18972:150;;19023:19;:25;19043:4;19023:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19052:19;:23;19072:2;19052:23;;;;;;;;;;;;;;;;;;;;;;;;;19023:52;19015:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18972:150;19174:25;:31;19200:4;19174:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19210:31;:35;19242:2;19210:35;;;;;;;;;;;;;;;;;;;;;;;;;19209:36;19174:71;19170:733;;;19288:20;;19278:6;:30;;19270:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19423:9;;19406:13;19416:2;19406:9;:13::i;:::-;19397:6;:22;;;;:::i;:::-;:35;;19389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19170:733;;;19532:25;:29;19558:2;19532:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19566:31;:37;19598:4;19566:37;;;;;;;;;;;;;;;;;;;;;;;;;19565:38;19532:71;19528:375;;;19646:20;;19636:6;:30;;19628:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19528:375;;;19756:31;:35;19788:2;19756:35;;;;;;;;;;;;;;;;;;;;;;;;;19751:152;;19850:9;;19833:13;19843:2;19833:9;:13::i;:::-;19824:6;:22;;;;:::i;:::-;:35;;19816:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19751:152;19528:375;19170:733;18681:1237;18646:1283;19941:28;19972:24;19990:4;19972:9;:24::i;:::-;19941:55;;20009:12;20048:18;;20024:20;:42;;20009:57;;20097:7;:22;;;;;20108:11;;;;;;;;;;;20097:22;:35;;;;;20124:8;;;;;;;;;;;20123:9;20097:35;:71;;;;;20137:25;:31;20163:4;20137:31;;;;;;;;;;;;;;;;;;;;;;;;;20136:32;20097:71;:101;;;;;20173:19;:25;20193:4;20173:25;;;;;;;;;;;;;;;;;;;;;;;;;20172:26;20097:101;:146;;;;;20220:19;:23;20240:2;20220:23;;;;;;;;;;;;;;;;;;;;;;;;;20219:24;20097:146;20079:468;;;20339:1;20312:10;:24;20323:12;20312:24;;;;;;;;;;;;:28;20308:228;;;20372:4;20361:8;;:15;;;;;;;;;;;;;;;;;;20397:10;:8;:10::i;:::-;20439:5;20428:8;;:16;;;;;;;;;;;;;;;;;;20519:1;20492:10;:24;20503:12;20492:24;;;;;;;;;;;;:28;;;;:::i;:::-;20465:10;:24;20476:12;20465:24;;;;;;;;;;;:55;;;;20308:228;20079:468;20559:12;20575:8;;;;;;;;;;;20574:9;20559:24;;20685:19;:25;20705:4;20685:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20714:19;:23;20734:2;20714:23;;;;;;;;;;;;;;;;;;;;;;;;;20685:52;20681:100;;;20764:5;20754:15;;20681:100;20793:12;20898:7;20894:507;;;20950:25;:29;20976:2;20950:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;20999:1;20983:13;;:17;20950:50;20946:306;;;21028:34;21058:3;21028:25;21039:13;;21028:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21021:41;;20946:306;;;21124:25;:31;21150:4;21124:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21174:1;21159:12;;:16;21124:51;21120:132;;;21203:33;21232:3;21203:24;21214:12;;21203:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21196:40;;21120:132;20946:306;21279:1;21272:4;:8;21268:91;;;21301:42;21317:4;21331;21338;21301:15;:42::i;:::-;21268:91;21385:4;21375:14;;;;;:::i;:::-;;;20894:507;21413:33;21429:4;21435:2;21439:6;21413:15;:33::i;:::-;18374:3080;;;;18295:3159;;;;:::o;6593:191::-;6667:16;6686:6;;;;;;;;;;;6667:25;;6712:8;6703:6;;:17;;;;;;;;;;;;;;;;;;6767:8;6736:40;;6757:8;6736:40;;;;;;;;;;;;6656:128;6593:191;:::o;21462:589::-;21588:21;21626:1;21612:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21588:40;;21657:4;21639;21644:1;21639:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21683:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21673:4;21678:1;21673:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21718:62;21735:4;21750:15;21768:11;21718:8;:62::i;:::-;21819:15;:66;;;21900:11;21926:1;21970:4;21997;22017:15;21819:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21517:534;21462:589;:::o;17141:188::-;17258:5;17224:25;:31;17250:4;17224:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17315:5;17281:40;;17309:4;17281:40;;;;;;;;;;;;17141:188;;:::o;9428:699::-;9552:1;9534:20;;:6;:20;;;9526:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9636:1;9615:23;;:9;:23;;;9607:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9691:47;9712:6;9720:9;9731:6;9691:20;:47::i;:::-;9751:21;9775:9;:17;9785:6;9775:17;;;;;;;;;;;;;;;;9751:41;;9828:6;9811:13;:23;;9803:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9949:6;9933:13;:22;9913:9;:17;9923:6;9913:17;;;;;;;;;;;;;;;:42;;;;10001:6;9977:9;:20;9987:9;9977:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10042:9;10025:35;;10034:6;10025:35;;;10053:6;10025:35;;;;;;:::i;:::-;;;;;;;;10073:46;10093:6;10101:9;10112:6;10073:19;:46::i;:::-;9515:612;9428:699;;;:::o;22059:584::-;22098:23;22124:24;22142:4;22124:9;:24::i;:::-;22098:50;;22159:12;22207:1;22188:15;:20;22184:59;;22225:7;;;;22184:59;22277:13;;22259:15;:31;22255:95;;;22325:13;;22307:31;;22255:95;22413:26;22442:15;22413:44;;22470:36;22487:18;22470:16;:36::i;:::-;22519:16;22538:21;22519:40;;22593:15;;;;;;;;;;;22585:29;;22622:8;22585:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22572:63;;;;;22087:556;;;;22059:584;:::o;3574:98::-;3632:7;3663:1;3659;:5;;;;:::i;:::-;3652:12;;3574:98;;;;:::o;3680:::-;3738:7;3769:1;3765;:5;;;;:::i;:::-;3758:12;;3680:98;;;;:::o;11495:91::-;;;;:::o;11594: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:474::-;9407:6;9415;9464:2;9452:9;9443:7;9439:23;9435:32;9432:119;;;9470:79;;:::i;:::-;9432:119;9590:1;9615:53;9660:7;9651:6;9640:9;9636:22;9615:53;:::i;:::-;9605:63;;9561:117;9717:2;9743:53;9788:7;9779:6;9768:9;9764:22;9743:53;:::i;:::-;9733:63;;9688:118;9339:474;;;;;:::o;9819:116::-;9889:21;9904:5;9889:21;:::i;:::-;9882:5;9879:32;9869:60;;9925:1;9922;9915:12;9869:60;9819:116;:::o;9941:133::-;9984:5;10022:6;10009:20;10000:29;;10038:30;10062:5;10038:30;:::i;:::-;9941:133;;;;:::o;10080:468::-;10145:6;10153;10202:2;10190:9;10181:7;10177:23;10173:32;10170:119;;;10208:79;;:::i;:::-;10170:119;10328:1;10353:53;10398:7;10389:6;10378:9;10374:22;10353:53;:::i;:::-;10343:63;;10299:117;10455:2;10481:50;10523:7;10514:6;10503:9;10499:22;10481:50;:::i;:::-;10471:60;;10426:115;10080:468;;;;;:::o;10554:323::-;10610:6;10659:2;10647:9;10638:7;10634:23;10630:32;10627:119;;;10665:79;;:::i;:::-;10627:119;10785:1;10810:50;10852:7;10843:6;10832:9;10828:22;10810:50;:::i;:::-;10800:60;;10756:114;10554:323;;;;:::o;10883:474::-;10951:6;10959;11008:2;10996:9;10987:7;10983:23;10979:32;10976:119;;;11014:79;;:::i;:::-;10976:119;11134:1;11159:53;11204:7;11195:6;11184:9;11180:22;11159:53;:::i;:::-;11149:63;;11105:117;11261:2;11287:53;11332:7;11323:6;11312:9;11308:22;11287:53;:::i;:::-;11277:63;;11232:118;10883:474;;;;;:::o;11363:180::-;11411:77;11408:1;11401:88;11508:4;11505:1;11498:15;11532:4;11529:1;11522:15;11549:320;11593:6;11630:1;11624:4;11620:12;11610:22;;11677:1;11671:4;11667:12;11698:18;11688:81;;11754:4;11746:6;11742:17;11732:27;;11688:81;11816:2;11808:6;11805:14;11785:18;11782:38;11779:84;;11835:18;;:::i;:::-;11779:84;11600:269;11549:320;;;:::o;11875:182::-;12015:34;12011:1;12003:6;11999:14;11992:58;11875:182;:::o;12063:366::-;12205:3;12226:67;12290:2;12285:3;12226:67;:::i;:::-;12219:74;;12302:93;12391:3;12302:93;:::i;:::-;12420:2;12415:3;12411:12;12404:19;;12063:366;;;:::o;12435:419::-;12601:4;12639:2;12628:9;12624:18;12616:26;;12688:9;12682:4;12678:20;12674:1;12663:9;12659:17;12652:47;12716:131;12842:4;12716:131;:::i;:::-;12708:139;;12435:419;;;:::o;12860:180::-;12908:77;12905:1;12898:88;13005:4;13002:1;12995:15;13029:4;13026:1;13019:15;13046:410;13086:7;13109:20;13127:1;13109:20;:::i;:::-;13104:25;;13143:20;13161:1;13143:20;:::i;:::-;13138:25;;13198:1;13195;13191:9;13220:30;13238:11;13220:30;:::i;:::-;13209:41;;13399:1;13390:7;13386:15;13383:1;13380:22;13360:1;13353:9;13333:83;13310:139;;13429:18;;:::i;:::-;13310:139;13094:362;13046:410;;;;:::o;13462:180::-;13510:77;13507:1;13500:88;13607:4;13604:1;13597:15;13631:4;13628:1;13621:15;13648:185;13688:1;13705:20;13723:1;13705:20;:::i;:::-;13700:25;;13739:20;13757:1;13739:20;:::i;:::-;13734:25;;13778:1;13768:35;;13783:18;;:::i;:::-;13768:35;13825:1;13822;13818:9;13813:14;;13648:185;;;;:::o;13839:234::-;13979:34;13975:1;13967:6;13963:14;13956:58;14048:17;14043:2;14035:6;14031:15;14024:42;13839:234;:::o;14079:366::-;14221:3;14242:67;14306:2;14301:3;14242:67;:::i;:::-;14235:74;;14318:93;14407:3;14318:93;:::i;:::-;14436:2;14431:3;14427:12;14420:19;;14079:366;;;:::o;14451:419::-;14617:4;14655:2;14644:9;14640:18;14632:26;;14704:9;14698:4;14694:20;14690:1;14679:9;14675:17;14668:47;14732:131;14858:4;14732:131;:::i;:::-;14724:139;;14451:419;;;:::o;14876:227::-;15016:34;15012:1;15004:6;15000:14;14993:58;15085:10;15080:2;15072:6;15068:15;15061:35;14876:227;:::o;15109:366::-;15251:3;15272:67;15336:2;15331:3;15272:67;:::i;:::-;15265:74;;15348:93;15437:3;15348:93;:::i;:::-;15466:2;15461:3;15457:12;15450:19;;15109:366;;;:::o;15481:419::-;15647:4;15685:2;15674:9;15670:18;15662:26;;15734:9;15728:4;15724:20;15720:1;15709:9;15705:17;15698:47;15762:131;15888:4;15762:131;:::i;:::-;15754:139;;15481:419;;;:::o;15906:191::-;15946:3;15965:20;15983:1;15965:20;:::i;:::-;15960:25;;15999:20;16017:1;15999:20;:::i;:::-;15994:25;;16042:1;16039;16035:9;16028:16;;16063:3;16060:1;16057:10;16054:36;;;16070:18;;:::i;:::-;16054:36;15906:191;;;;:::o;16103:180::-;16151:77;16148:1;16141:88;16248:4;16245:1;16238:15;16272:4;16269:1;16262:15;16289:147;16390:11;16427:3;16412:18;;16289:147;;;;:::o;16442:114::-;;:::o;16562:398::-;16721:3;16742:83;16823:1;16818:3;16742:83;:::i;:::-;16735:90;;16834:93;16923:3;16834:93;:::i;:::-;16952:1;16947:3;16943:11;16936:18;;16562:398;;;:::o;16966:379::-;17150:3;17172:147;17315:3;17172:147;:::i;:::-;17165:154;;17336:3;17329:10;;16966:379;;;:::o;17351:162::-;17491:14;17487:1;17479:6;17475:14;17468:38;17351:162;:::o;17519:366::-;17661:3;17682:67;17746:2;17741:3;17682:67;:::i;:::-;17675:74;;17758:93;17847:3;17758:93;:::i;:::-;17876:2;17871:3;17867:12;17860:19;;17519:366;;;:::o;17891:419::-;18057:4;18095:2;18084:9;18080:18;18072:26;;18144:9;18138:4;18134:20;18130:1;18119:9;18115:17;18108:47;18172:131;18298:4;18172:131;:::i;:::-;18164:139;;17891:419;;;:::o;18316:244::-;18456:34;18452:1;18444:6;18440:14;18433:58;18525:27;18520:2;18512:6;18508:15;18501:52;18316:244;:::o;18566:366::-;18708:3;18729:67;18793:2;18788:3;18729:67;:::i;:::-;18722:74;;18805:93;18894:3;18805:93;:::i;:::-;18923:2;18918:3;18914:12;18907:19;;18566:366;;;:::o;18938:419::-;19104:4;19142:2;19131:9;19127:18;19119:26;;19191:9;19185:4;19181:20;19177:1;19166:9;19162:17;19155:47;19219:131;19345:4;19219:131;:::i;:::-;19211:139;;18938:419;;;:::o;19363:224::-;19503:34;19499:1;19491:6;19487:14;19480:58;19572:7;19567:2;19559:6;19555:15;19548:32;19363:224;:::o;19593:366::-;19735:3;19756:67;19820:2;19815:3;19756:67;:::i;:::-;19749:74;;19832:93;19921:3;19832:93;:::i;:::-;19950:2;19945:3;19941:12;19934:19;;19593:366;;;:::o;19965:419::-;20131:4;20169:2;20158:9;20154:18;20146:26;;20218:9;20212:4;20208:20;20204:1;20193:9;20189:17;20182:47;20246:131;20372:4;20246:131;:::i;:::-;20238:139;;19965:419;;;:::o;20390:85::-;20435:7;20464:5;20453:16;;20390:85;;;:::o;20481:158::-;20539:9;20572:61;20590:42;20599:32;20625:5;20599:32;:::i;:::-;20590:42;:::i;:::-;20572:61;:::i;:::-;20559:74;;20481:158;;;:::o;20645:147::-;20740:45;20779:5;20740:45;:::i;:::-;20735:3;20728:58;20645:147;;:::o;20798:807::-;21047:4;21085:3;21074:9;21070:19;21062:27;;21099:71;21167:1;21156:9;21152:17;21143:6;21099:71;:::i;:::-;21180:72;21248:2;21237:9;21233:18;21224:6;21180:72;:::i;:::-;21262:80;21338:2;21327:9;21323:18;21314:6;21262:80;:::i;:::-;21352;21428:2;21417:9;21413:18;21404:6;21352:80;:::i;:::-;21442:73;21510:3;21499:9;21495:19;21486:6;21442:73;:::i;:::-;21525;21593:3;21582:9;21578:19;21569:6;21525:73;:::i;:::-;20798:807;;;;;;;;;:::o;21611:143::-;21668:5;21699:6;21693:13;21684:22;;21715:33;21742:5;21715:33;:::i;:::-;21611:143;;;;:::o;21760:663::-;21848:6;21856;21864;21913:2;21901:9;21892:7;21888:23;21884:32;21881:119;;;21919:79;;:::i;:::-;21881:119;22039:1;22064:64;22120:7;22111:6;22100:9;22096:22;22064:64;:::i;:::-;22054:74;;22010:128;22177:2;22203:64;22259:7;22250:6;22239:9;22235:22;22203:64;:::i;:::-;22193:74;;22148:129;22316:2;22342:64;22398:7;22389:6;22378:9;22374:22;22342:64;:::i;:::-;22332:74;;22287:129;21760:663;;;;;:::o;22429:332::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22601:71;22669:1;22658:9;22654:17;22645:6;22601:71;:::i;:::-;22682:72;22750:2;22739:9;22735:18;22726:6;22682:72;:::i;:::-;22429:332;;;;;:::o;22767:137::-;22821:5;22852:6;22846:13;22837:22;;22868:30;22892:5;22868:30;:::i;:::-;22767:137;;;;:::o;22910:345::-;22977:6;23026:2;23014:9;23005:7;23001:23;22997:32;22994:119;;;23032:79;;:::i;:::-;22994:119;23152:1;23177:61;23230:7;23221:6;23210:9;23206:22;23177:61;:::i;:::-;23167:71;;23123:125;22910:345;;;;:::o;23261:223::-;23401:34;23397:1;23389:6;23385:14;23378:58;23470:6;23465:2;23457:6;23453:15;23446:31;23261:223;:::o;23490:366::-;23632:3;23653:67;23717:2;23712:3;23653:67;:::i;:::-;23646:74;;23729:93;23818:3;23729:93;:::i;:::-;23847:2;23842:3;23838:12;23831:19;;23490:366;;;:::o;23862:419::-;24028:4;24066:2;24055:9;24051:18;24043:26;;24115:9;24109:4;24105:20;24101:1;24090:9;24086:17;24079:47;24143:131;24269:4;24143:131;:::i;:::-;24135:139;;23862:419;;;:::o;24287:225::-;24427:34;24423:1;24415:6;24411:14;24404:58;24496:8;24491:2;24483:6;24479:15;24472:33;24287:225;:::o;24518:366::-;24660:3;24681:67;24745:2;24740:3;24681:67;:::i;:::-;24674:74;;24757:93;24846:3;24757:93;:::i;:::-;24875:2;24870:3;24866:12;24859:19;;24518:366;;;:::o;24890:419::-;25056:4;25094:2;25083:9;25079:18;25071:26;;25143:9;25137:4;25133:20;25129:1;25118:9;25114:17;25107:47;25171:131;25297:4;25171:131;:::i;:::-;25163:139;;24890:419;;;:::o;25315:223::-;25455:34;25451:1;25443:6;25439:14;25432:58;25524:6;25519:2;25511:6;25507:15;25500:31;25315:223;:::o;25544:366::-;25686:3;25707:67;25771:2;25766:3;25707:67;:::i;:::-;25700:74;;25783:93;25872:3;25783:93;:::i;:::-;25901:2;25896:3;25892:12;25885:19;;25544:366;;;:::o;25916:419::-;26082:4;26120:2;26109:9;26105:18;26097:26;;26169:9;26163:4;26159:20;26155:1;26144:9;26140:17;26133:47;26197:131;26323:4;26197:131;:::i;:::-;26189:139;;25916:419;;;:::o;26341:221::-;26481:34;26477:1;26469:6;26465:14;26458:58;26550:4;26545:2;26537:6;26533:15;26526:29;26341:221;:::o;26568:366::-;26710:3;26731:67;26795:2;26790:3;26731:67;:::i;:::-;26724:74;;26807:93;26896:3;26807:93;:::i;:::-;26925:2;26920:3;26916:12;26909:19;;26568:366;;;:::o;26940:419::-;27106:4;27144:2;27133:9;27129:18;27121:26;;27193:9;27187:4;27183:20;27179:1;27168:9;27164:17;27157:47;27221:131;27347:4;27221:131;:::i;:::-;27213:139;;26940:419;;;:::o;27365:224::-;27505:34;27501:1;27493:6;27489:14;27482:58;27574:7;27569:2;27561:6;27557:15;27550:32;27365:224;:::o;27595:366::-;27737:3;27758:67;27822:2;27817:3;27758:67;:::i;:::-;27751:74;;27834:93;27923:3;27834:93;:::i;:::-;27952:2;27947:3;27943:12;27936:19;;27595:366;;;:::o;27967:419::-;28133:4;28171:2;28160:9;28156:18;28148:26;;28220:9;28214:4;28210:20;28206:1;28195:9;28191:17;28184:47;28248:131;28374:4;28248:131;:::i;:::-;28240:139;;27967:419;;;:::o;28392:222::-;28532:34;28528:1;28520:6;28516:14;28509:58;28601:5;28596:2;28588:6;28584:15;28577:30;28392:222;:::o;28620:366::-;28762:3;28783:67;28847:2;28842:3;28783:67;:::i;:::-;28776:74;;28859:93;28948:3;28859:93;:::i;:::-;28977:2;28972:3;28968:12;28961:19;;28620:366;;;:::o;28992:419::-;29158:4;29196:2;29185:9;29181:18;29173:26;;29245:9;29239:4;29235:20;29231:1;29220:9;29216:17;29209:47;29273:131;29399:4;29273:131;:::i;:::-;29265:139;;28992:419;;;:::o;29417:172::-;29557:24;29553:1;29545:6;29541:14;29534:48;29417:172;:::o;29595:366::-;29737:3;29758:67;29822:2;29817:3;29758:67;:::i;:::-;29751:74;;29834:93;29923:3;29834:93;:::i;:::-;29952:2;29947:3;29943:12;29936:19;;29595:366;;;:::o;29967:419::-;30133:4;30171:2;30160:9;30156:18;30148:26;;30220:9;30214:4;30210:20;30206:1;30195:9;30191:17;30184:47;30248:131;30374:4;30248:131;:::i;:::-;30240:139;;29967:419;;;:::o;30392:240::-;30532:34;30528:1;30520:6;30516:14;30509:58;30601:23;30596:2;30588:6;30584:15;30577:48;30392:240;:::o;30638:366::-;30780:3;30801:67;30865:2;30860:3;30801:67;:::i;:::-;30794:74;;30877:93;30966:3;30877:93;:::i;:::-;30995:2;30990:3;30986:12;30979:19;;30638:366;;;:::o;31010:419::-;31176:4;31214:2;31203:9;31199:18;31191:26;;31263:9;31257:4;31253:20;31249:1;31238:9;31234:17;31227:47;31291:131;31417:4;31291:131;:::i;:::-;31283:139;;31010:419;;;:::o;31435:169::-;31575:21;31571:1;31563:6;31559:14;31552:45;31435:169;:::o;31610:366::-;31752:3;31773:67;31837:2;31832:3;31773:67;:::i;:::-;31766:74;;31849:93;31938:3;31849:93;:::i;:::-;31967:2;31962:3;31958:12;31951:19;;31610:366;;;:::o;31982:419::-;32148:4;32186:2;32175:9;32171:18;32163:26;;32235:9;32229:4;32225:20;32221:1;32210:9;32206:17;32199:47;32263:131;32389:4;32263:131;:::i;:::-;32255:139;;31982:419;;;:::o;32407:241::-;32547:34;32543:1;32535:6;32531:14;32524:58;32616:24;32611:2;32603:6;32599:15;32592:49;32407:241;:::o;32654:366::-;32796:3;32817:67;32881:2;32876:3;32817:67;:::i;:::-;32810:74;;32893:93;32982:3;32893:93;:::i;:::-;33011:2;33006:3;33002:12;32995:19;;32654:366;;;:::o;33026:419::-;33192:4;33230:2;33219:9;33215:18;33207:26;;33279:9;33273:4;33269:20;33265:1;33254:9;33250:17;33243:47;33307:131;33433:4;33307:131;:::i;:::-;33299:139;;33026:419;;;:::o;33451:194::-;33491:4;33511:20;33529:1;33511:20;:::i;:::-;33506:25;;33545:20;33563:1;33545:20;:::i;:::-;33540:25;;33589:1;33586;33582:9;33574:17;;33613:1;33607:4;33604:11;33601:37;;;33618:18;;:::i;:::-;33601:37;33451:194;;;;:::o;33651:180::-;33699:77;33696:1;33689:88;33796:4;33793:1;33786:15;33820:4;33817:1;33810:15;33837:143;33894:5;33925:6;33919:13;33910:22;;33941:33;33968:5;33941:33;:::i;:::-;33837:143;;;;:::o;33986:351::-;34056:6;34105:2;34093:9;34084:7;34080:23;34076:32;34073:119;;;34111:79;;:::i;:::-;34073:119;34231:1;34256:64;34312:7;34303:6;34292:9;34288:22;34256:64;:::i;:::-;34246:74;;34202:128;33986:351;;;;:::o;34343:114::-;34410:6;34444:5;34438:12;34428:22;;34343:114;;;:::o;34463:184::-;34562:11;34596:6;34591:3;34584:19;34636:4;34631:3;34627:14;34612:29;;34463:184;;;;:::o;34653:132::-;34720:4;34743:3;34735:11;;34773:4;34768:3;34764:14;34756:22;;34653:132;;;:::o;34791:108::-;34868:24;34886:5;34868:24;:::i;:::-;34863:3;34856:37;34791:108;;:::o;34905:179::-;34974:10;34995:46;35037:3;35029:6;34995:46;:::i;:::-;35073:4;35068:3;35064:14;35050:28;;34905:179;;;;:::o;35090:113::-;35160:4;35192;35187:3;35183:14;35175:22;;35090:113;;;:::o;35239:732::-;35358:3;35387:54;35435:5;35387:54;:::i;:::-;35457:86;35536:6;35531:3;35457:86;:::i;:::-;35450:93;;35567:56;35617:5;35567:56;:::i;:::-;35646:7;35677:1;35662:284;35687:6;35684:1;35681:13;35662:284;;;35763:6;35757:13;35790:63;35849:3;35834:13;35790:63;:::i;:::-;35783:70;;35876:60;35929:6;35876:60;:::i;:::-;35866:70;;35722:224;35709:1;35706;35702:9;35697:14;;35662:284;;;35666:14;35962:3;35955:10;;35363:608;;;35239:732;;;;:::o;35977:831::-;36240:4;36278:3;36267:9;36263:19;36255:27;;36292:71;36360:1;36349:9;36345:17;36336:6;36292:71;:::i;:::-;36373:80;36449:2;36438:9;36434:18;36425:6;36373:80;:::i;:::-;36500:9;36494:4;36490:20;36485:2;36474:9;36470:18;36463:48;36528:108;36631:4;36622:6;36528:108;:::i;:::-;36520:116;;36646:72;36714:2;36703:9;36699:18;36690:6;36646:72;:::i;:::-;36728:73;36796:3;36785:9;36781:19;36772:6;36728:73;:::i;:::-;35977:831;;;;;;;;:::o;36814:225::-;36954:34;36950:1;36942:6;36938:14;36931:58;37023:8;37018:2;37010:6;37006:15;36999:33;36814:225;:::o;37045:366::-;37187:3;37208:67;37272:2;37267:3;37208:67;:::i;:::-;37201:74;;37284:93;37373:3;37284:93;:::i;:::-;37402:2;37397:3;37393:12;37386:19;;37045:366;;;:::o;37417:419::-;37583:4;37621:2;37610:9;37606:18;37598:26;;37670:9;37664:4;37660:20;37656:1;37645:9;37641:17;37634:47;37698:131;37824:4;37698:131;:::i;:::-;37690:139;;37417:419;;;:::o

Swarm Source

ipfs://8277cc079b542e6985d577a862538b4cd0bd4aee2bc147206492b84abd9a82e0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.